【Unity交流、求教】2D动作游戏的碰撞盒和判定怎么实现?

发表于2018-09-07
评论3 5k浏览
使用引擎:Unity3D
我没做过动作类游戏,但是很想做!
可惜做不来。
希望各位有经验的小伙伴给我指导!
场景:2D动作游戏
我最纳闷的就是,2D动作游戏里,怎么做碰撞检测?

比方说我做了一个序列帧动画,一位帅气的主角,挥砍他的剑,在面前甩出一道剑光,那么剑是否砍到敌人,这个如何做判定呢?
是在Animation里,逐帧调整碰撞盒的形状和位置吗?
请在评论区说出你的做法,谢谢!

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

3个评论

  • 萧然 2018-09-07 1楼
    个人观点: 1. 分别给剑和敌人挂载2D碰撞盒,提前将形状调整好,并至少有一个有Rigidbody2D组件,这样才能检测到碰撞,将碰撞盒调成触发器 2. public void OnTriggerEnter2D(Collider2D collision) { Debug.Log("进入触发器"); } public void OnTriggerStay2D(Collider2D collision) { Debug.Log("在触发器内,持续调用"); } public void OnTriggerExit2D(Collider2D collision) { Debug.Log("离开触发器"); } 这三个回调,可以检测到碰撞结果,可以在回调内判断碰撞到的目标,进行后续操作 3. Rigidbody2D有一个属性Collision Detection,可以修改检测方式,可根据实际情况选择
  • 流飞飞 2018-09-08 2楼
    又不是格斗游戏,用不着每帧都判断那么精确吧。如果刀的挥砍形状是个半圆,可以直接给剑光出现的地方挂个半圆形的碰撞框。
  • 狗子 2018-09-15 3楼
    通过攻击框和被击框,这个可以参考下拳皇。在编辑器中给攻击框附加一个攻击效果ID,在攻击框和被击框碰撞后,给被击单位附加这个攻击效果ID,从而达成被击效果和攻击伤害