跳至内容
Unity 系统自带的 2D 角色资源预制体 CharacterRobotBoy 填坑日记
CharacterRobotBoy预制体确实是很好用的东西,但是要想以此为基础改成自己的东西还有一些容易犯错的地方:
- 角色是使用动画状态机控制,根据 Speed,vSpeed,Crouch,Ground 的值进行控制。
- 角色隐藏有两个点,天花板触点 CeilingCheck,GroundCheck要防止对,特别是在做动画时,不要让这两个点跟着跑了,否则容易出现永远掉不到地面等情况。
- 蹲下时要注意:一是上半身的盒型碰撞器要缩小,并放矮一些,也就是让角色蹲下时避免碰撞,能够通过地道。二是盒型碰撞器蹲下时不能与圆形碰撞器发生碰撞,否则会判定为顶上有东西,无法接触下蹲的状态。这个比较让人产生疑惑,应为案例中,初始状态这两个碰撞器是重叠的。
- 示例的机器人蹲下时,CeilingCheck 反而不用改变位置。但是自己做的时候要注意,如果蹲下时,头顶的 CeilingCheck 不处于“顶着”的碰撞物体内(例如很薄的地面在头上)就有可能出现蹲在地道里也可以站立的错误。解决办法是蹲下时,也让 CeilingCheck 下移一些,但是也不能太多,视具体情况。
- 动画机 Crouch 至 CrouchWalk 有一定的过度,并且 CrouchWalk 至 Crouch 是双过度(是双Transitions,不是双条件)。
- PlatformerCharacter2D类方法FixedUpdate 的42行建议加上:
if (colliders[i].gameObject != gameObject && !colliders[i].isTrigger)
否则角色可以在触发器上跳跃。