记录做小狐狸游戏的时候,遇到的小问题。
问题描述
问题就是制作青蛙跳跃动画,需要涉及到青蛙本身position的变化时,如果直接在青蛙本身上进行制作动画,那么尽管有脚本控制青蛙左右移动,但是青蛙还是在原地进行跳跃。
按个人理解就是,青蛙仍然在原地跳跃是因为下面图片中动画的FlogSprite:Position是固定下来的,所以脚本控制青蛙左右移动是没有作用的。
解决办法
先新建一个空物体,在空物体新建一个子物体,子物体作为青蛙精灵图和碰撞体的载体,而作为父物体的空物体是负责挂载青蛙移动脚本、rigidbody2D、animator这些组件或者脚本。
注意:collider2D这个组件最好挂载在子物体上,不然当动画运行的时候,这个collider2D不会跟随青蛙精灵图的运动而跟着运动。
弄好上面的层级关系之后,在父物体上建立一个跳跃动画
因为精灵图在子物体上,所以不能直接拖动物体进去animation里面,会在父物体上搞出来一个新的精灵贴图,这个跟我们的需求不一样。因此,我们不能这样做。
正确做法是:
- 那么,我们就点击animation的录制键
- 然后把白线放在需要添加关键节点的地方,然后拖入需要的精灵图到子物体中spriteRender组件对应的位置。
- 然后确认自己点击了Hierarchy窗口中上面提到的子物体,然后向上移动子物体到需要的位置,让动画播放是跳跃状态的。
- 重复2、3操作,直到动画完成到我们需要的状态。
总结
搞这么复杂的原因就是动画组件涉及到位置的移动时是相对他的父物体的(个人理解),我们脚本控制父物体左右移动,那么它的跳跃就是正常跳跃的,而不是原地跳跃。
在问题描述中,没有建立空物体作为父物体,那么青蛙就原地跳跃了。
简单记录下来,提醒自己不要犯同样的错。