1.敌人设计
① 效果要求:敌人自动左右/上下循环移动;敌人碰到角色产生伤害;为敌人添加动画
②分析
1)有碰撞事件,只碰撞一次,enemy要有collider
2)敌人能在自动移动需要有rigidbody
3)要动画,添加animator
③知识点:
1)这里的敌人是自动移动的,不像主角需要等待输入。所以直接对其rigidbody的position进行操作就行。这里采用的是一个计时器+方向开关的方法。int方向开关direction最初为1,设定float计时器timerole。计时器数值随时间减小放在update里,当计时器走完一遍时,direction取反,通过position.x/.y +=speed*Time.deltatime*direction实现来回巡逻的效果
2.精灵动画
Unity提供了很方便的工具,在需要动画的对象上挂上Animator组件,上面有凹槽放入自己创建的动画控制器(也可以直接在对象上创建animation clip,unity自动生成一个控制器),控制器是一个可视化的状态机,只需要设定各个state之间的转换条件和state上的animation clip就可以实现简单动画
知识点:
1)创建过程
挂上组件
Window->Animation->animation(快捷键ctrl+6),通过拖拽多个连续的分帧图片,调整帧率,就能生成简单动画片段(animation clip)
2)可视化创建状态机
动画控制器就是个状态机,右键创建新的state,不同状态之间可以建立联系(trasition),通过设定的变量阈值实现不同state之间的切换
这些阈值变量可以在脚本中,通过animator对象访问到,实现不同效果
3)state内也是一个状态机
右边可以新增槽位用来插入不同的animation clip,这些clip之间也可以同通过左边设定的阈值变量实现切换。途中是simpleDirection模式,适合只需要前、后、左、右的情况。阈值也是通过
访问,进行不同的操作
8/8 遗留问题:通过getAxis来作为阈值计算的参量时,碰到问题:没有输入时,应该切换静态的动画,将参量置了0,但是阈值是0.01,此时默认设置为了面向右边的动画,导致不动的时候调用不到面向其他方向的静态动画。但是不置0,就算没有输入,参量一直大于阈值,导致播放不了静态动画。
这里的LookDirction是定义在update外的,导致如果赋值LookDirection,它就一直有值,就一直大于阈值,切不回静态动画
小白做笔记用,请参考使用,欢迎批评指正,谢谢