自己在做动作类游戏的时候,碰到一个问题,在攻击的时候按帧播放,每一帧的攻击范围都是不同的,怎样才能实现每帧都能够检测图片对应的碰撞范围?
在网上找了很多资料,有好几种解决方案,其中包括射线检测等方法,虽然这些方法代码实现方便而且效率比较高,但是检测不够精确,而且局限性较大。
2d toolkit有很强大的功能,但是网上资料太少了,我也没找到这样的帖子来实现按帧改变碰撞监测范围。
创建一个Sprite With Animation,该物体包含Mesh Filter、Mesh Renderer、Mesh Collider、Tk 2d Sprite、Tk 2d Sprite Animator等组件。其中Mesh Collider是网格碰撞器,Tk 2d Sprite和Tk 2d Sprite Animator是2d toolkit的类,分别控制一个Clip(包含一定数量的图片)管理类和众多Clip组成的管理类。
控制一个动画的流程:
在Sprite Collection中为每帧图片绘制碰撞体积的后,然后添加到Sprite Animation中组成一个Clip,并在Tk 2d Sprite、Tk 2d Sprite Animator中选择它们。
用过2d toolkit的人应该都知道上面的流程,但是你会很奇怪在Inspector界面调节Tk 2d Sprite中的Sprite选项时Scene窗口的碰撞范围会改变,而在程序运行的时候并没有随着Sprite的切换而切换对应的碰撞范围,它只停留在初始Sprite的碰撞范围。
这个问题困扰了我很久,我也是刚接触unity,并不怎么搞。
<