【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 TKCB 于 2018-2-9 16:42 编辑
转载:9RIA游戏开发者社区(天地会)
作者:伱永远不可以(原天地会大神)
先借用一段百度百科子弹时间
在游戏中运用子弹时间技术相对简单,也是在《黑客帝国》之后开始广泛使用的。该特效一般用于动作性较强的游戏,如一人称射击,动作类角色扮演,竞赛类。游戏允许玩家临时将时间减慢,让玩家看到子弹,躲避敌人攻击,同时还可以在观察和瞄准时保持常速。
说白了,子弹时间就是 放慢了时间。。。
----
很多新手在刚开始做游戏的时候,碰撞检测,用的都是 Display.hitTestObject(),用的都是 原生显示对象的碰撞检测。好处是简单方便快捷,坏处就是 这是基于帧的,一帧刷新一次画面,当速度大的时候,检测不到碰撞。
所以将画面皮肤,与对象数据 分离开是很有必要的,【设计模式】(新手也可以先了解了解)
既然是新手教程,那就做个简单例子吧。
滑动滑块重置小球及其速度,碰撞的时候会 有红色圈圈显示!(60fps)
滑动上面例子的滑块,可以发现,当速度比较小的时候(<30左右),碰撞检测比较正常,都能看见碰撞,但是速度越来越大,可以看见碰撞检测变得不稳定,有时候能检测到,有时候就无法检测到....这是因为检测用的是 hitTestObject() 并且,一帧只运行一次!速度大的时候,他们就直接跳过对方了,就无法检测。
代码很简单。
[Actionscript3] 纯文本查看 复制代码 if(小球皮肤1.hitTestObject (小球皮肤2)) {
做出碰撞反应()
}
那如何做子弹时间的效果呢? 首先,不能用 显示对象 来直接代表小球,用一个Point对象来代表。
更新的代码:
[Actionscript3] 纯文本查看 复制代码 point球1.x+=速度1;
point球2.x+=速度2;
皮肤1.x= point球1.x
皮肤2.x= point球2.x
///而不是
皮肤1.x+=速度1
-------因为要实现慢动作。所以代码就变成了:
[Actionscript3] 纯文本查看 复制代码 //时间速度 越大越快
for(var i:int=0;i<时间速度;i++)
{
point球1.x+=速度1;
point球2.x+=速度2;
}
皮肤1.x= point球1.x
皮肤2.x= point球2.x
代码意思是---当球的数据更新了 【时间速度】次,球的皮肤才更新一次。
来看看新的例子:
旁边多了一个调节 时间速度的滑动条,滑动它,可以看见时间的变化,实现慢动作,并且当 速度很大的时候,也能够看见碰撞的痕迹!
表达的不好,只是给新手们一个思想,一个思路,希望有帮助!
下载:
教程.fla
(419.54 KB, 下载次数: 7)
|