版权声明:本文为博主原创文章未经博主允许,欢迎随意转载标好作者+原文地址就可以了!感谢欣赏!觉得好请回个贴! /yongh701/article/details/
在3D游戏里面,视角是一个很重要的因素部汾玩家对锁视角嗤之以鼻,因此视角也是游戏制作里面需要努力的方面其实也不难,换到unity按wasd行走3D里面是想办法控制摄像机的移动下面舉一个简单的例子说明在unity按wasd行走3D如何用键盘鼠标控制视角的移动的。如下图所示:
就像大部分游戏一样可以用鼠标滚轮控制视角的远近,键盘的wasd和上下左右控制镜头的位置而按着鼠标右键则可以控制镜头的旋转。当然你可以根据需要改成其它控制方式反正原理是同一個原理。
其实这个游戏场景布置非常非常简单也不是本文的重点。如下图所示基本能够一览无遗:
如上图所示,我们其实需要做的呮是控制Main Camera的位置和旋转则能够做到上面的效果。因此赋予给Main Camera如下的脚本CameraMove.cs:
//滚轮实现镜头缩进和拉远 //按着鼠标右键实现视角转动 //键盘按钮←/a和→/d实现视角水平移动,键盘按钮↑/w和↓/s实现视角水平旋转鼠标右键点击的***这里就不说了在《【unity按wasd行走3D】用鼠标点击事件、AddForce完成跳跃与二段跳》()已经详细说过了。这里引用了Input.GetAxis的概念理论上,你可以像《【unity按wasd行走3D】利用物体碰撞检测、键盘输入处理完成平衡球遊戏》()那样控制物体移动那样控制主摄像机的移动与旋转的,但是使用Input.GetAxis会让你代码更加简洁在unity按wasd行走3D中有18条轴,不过基本上常用軸就是上述代码的几个
Input.GetAxis能够获取这个轴的输入,也就是同样是用来***鼠标输入的一个东西它将返回一个-1~1的数值。用于记录用户按键盤的时长、翻滚轮、鼠标对比上一个位置偏移的多少这样的话,我们再乘上一个合适的float则可以形成一个坐标位置。配合Rotate与Translate则能够时物體移动
另一方面,摄像头的焦距也就是缩放可以直接对fieldOfView控制而达成。