噩梦射手 心得 移动旋转面向 摄像机跟随

来源:互联网 发布:mldonkey mac 编辑:程序博客网 时间:2024/05/13 03:54
       

1. Player
  • Player 的移动: 目前我知道了三种方式可以作为Player的移动方式:
  • 太空射击中对飞机的控制: GetComponent<Rigidbody>().velocity = speed * move
  • 黑暗奇侠中对精灵的控制: controller.SimpleMove(new Vector3(Input.GetAxis("Horizontal") * speed, 0, Input.GetAxis("Vertical") * speed));
  • 恶梦射手中对射手的控制: this.GetComponent<Rigidbody>().MovePosition(transform.position + new Vector3(h, 0, v) * speed * Time.deltaTime ); 给我自己感觉而言,第一种方式,给刚体施加力可以使得开始移动的时候有明显的由慢到快的加速过程,相比起第三种方式要更加真实点,第二种方式是controller角色控制器给出的api具体我也不太清楚.

  • Player动画的播放: 学习到了动画机.在黑暗奇侠中,我接触到了animation,以及在脚本中通过状态的判断来切换动画,而在这里我学到了animator 以及标志位的设定.
  • Player的射击:   第一次接触射线,感觉十分神奇,Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //主相机向鼠标点射出一束射线. 这方法也使得我对射击游戏的实现方法有个雏形的想法.
  • Player的转向: 了解了lookat 这个api,这里让我想到了黑暗奇侠中,当时我想把巨魔的活动范围限制在一个范围之类.设置好trigger之后从转身和减速直到最后取区域中心点计算旋转角来控制巨魔不走出区域,但是现在知道了lookat 方法就变简单了.

2.Enemy
  • Enemy的移动:可以说这个整个视频中我接触到最神奇的一个东西了Navigation,但只是刚接触这个导航,只能了解一点皮毛。通过 SetDestination(player.position)导航可以动态实现Enemy对某个物体的追踪.但是在实际过程中还是会存在Enemy卡在地图某些物体间.觉得应该是Navigation的寻路算法还是写的不够完善.
  • Enemy的攻击:设置攻击区域用tigger判断,这里我用上了之前siki老师讲的 Ngui 中的 hud text 的方法实现了Player掉血的显示。
  • Enemy死亡后的消失: 这里学到了Enemy死亡后通过下沉,消失在Player视野后再Destory消除了突兀感.
0 0
原创粉丝点击