unity鼠标控制人物转向视角问题

【unity3d 】ugui学习笔记 之
鼠标控制视角【此忆经年吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:17贴子:
【unity3d 】ugui学习笔记 之
鼠标控制视角
using UnityEusing System.Cpublic class _mouselook : MonoBehaviour {// 鼠标控制 360视角public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2,MouseScrollWheel=3 }public RotationAxes axes = RotationAxes.MouseXAndY;public float x_speed = 8f;
public float y_speed = 4f;
public float w_speed = 15f;public float minX = -360f;public float maxX = 360f;public float minY = -30f;public float maxY = 60f;
public float minfov =10f;
public float maxfov =30f; float rotationY = 0F;
void Update (){if (axes == RotationAxes.MouseXAndY)
//360 环视{float rotationX = transform.localEulerAngles.y + Input.GetAxis(&Mouse X&) * x_rotationY += Input.GetAxis(&Mouse Y&) * y_rotationY = Mathf.Clamp (rotationY, minY, maxY);transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);}else if (axes == RotationAxes.MouseX)//360 左右视角{transform.Rotate(0, Input.GetAxis(&Mouse X&) * x_speed, 0);}else//360 上下视角{rotationY += Input.GetAxis(&Mouse Y&) *y_rotationY = Mathf.Clamp (rotationY, minY, maxY);transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);}// 镜头拉近拉远//float fov = Camera.main.fieldOfV//fov += -Input.GetAxis (&Mouse ScrollWheel&) * w_speed*Time.deltaT//获取鼠轮值//fov = Mathf.Clamp (fov, minfov, maxfov);//判断参数是否在最大最小值//Camera.main.fieldOfView =}void Start (){// Make the rigid body not change rotationanglex = transform.eulerAngles.y;if (GetComponent&Rigidbody&())GetComponent&Rigidbody&().freezeRotation =}}
贴吧热议榜
使用签名档&&
保存至快速回贴要怎样才能通过鼠标改变场景的视角
[问题点数:80分,结帖人u]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:0
匿名用户不能发表回复!
其他相关推荐在3D游戏里面,视角是一个很重要的因素,部分玩家对锁视角嗤之以鼻,因此视角也是游戏制作里面需要努力的方面。其实也不难,换到Unity3D里面是想办法控制摄像机的移动。下面举一个简单的例子说明在Unity3D如何用键盘鼠标控制视角的移动的。如下图所示:
就像大部分游戏一样,可以用鼠标滚轮控制视角的远近,键盘的wasd和上下左右控制镜头的位置,而按着鼠标右键则可以控制镜头的旋转。当然你可以根据需要改成其它控制方式,反正原理是同一个原理。
其实这个游戏场景布置非常非常简单,也不是本文的重点。如下图所示,基本能够一览无遗:
如上图所示,我们其实需要做的,只是控制Main Camera的位置和旋转则能够做到上面的效果。因此赋予给Main Camera,如下的脚本CameraMove.cs:
using UnityE
using System.C
public class CameraMove : MonoBehaviour
public float sensitivityMouse = 2f;
public float sensitivetyKeyBoard = 0.1f;
public float sensitivetyMouseWheel = 10f;
void Update()
//滚轮实现镜头缩进和拉远
if (Input.GetAxis("Mouse ScrollWheel") != 0)
this.camera.fieldOfView = this.camera.fieldOfView - Input.GetAxis("Mouse ScrollWheel") * sensitivetyMouseW
//按着鼠标右键实现视角转动
if (Input.GetMouseButton(1))
transform.Rotate(-Input.GetAxis("Mouse Y") * sensitivityMouse, Input.GetAxis("Mouse X") * sensitivityMouse, 0);
//键盘按钮←/a和→/d实现视角水平移动,键盘按钮↑/w和↓/s实现视角水平旋转
if (Input.GetAxis("Horizontal") != 0)
transform.Translate(Input.GetAxis("Horizontal") * sensitivetyKeyBoard, 0, 0);
if (Input.GetAxis("Vertical") != 0)
transform.Translate(0, Input.GetAxis("Vertical") * sensitivetyKeyBoard, 0);
鼠标右键点击的监听这里就不说了,在《【Unity3D】用鼠标点击事件、AddForce完成跳跃与二段跳》()已经详细说过了。这里引用了Input.GetAxis的概念。理论上,你可以像《【Unity3D】利用物体碰撞检测、键盘输入处理完成平衡球游戏》()那样控制物体移动那样,控制主摄像机的移动与旋转的,但是使用Input.GetAxis会让你代码更加简洁,在Unity3D中有18条轴,不过基本上常用轴就是上述代码的几个。
Input.GetAxis能够获取这个轴的输入,也就是同样是用来监听鼠标输入的一个东西,它将返回一个-1~1的数值。用于记录用户按键盘的时长、翻滚轮、鼠标对比上一个位置偏移的多少。这样的话,我们再乘上一个合适的float,则可以形成一个坐标位置。配合Rotate与Translate则能够时物体移动。
另一方面,摄像头的焦距,也就是缩放可以直接对fieldOfView控制而达成。
鼠标控制摄像机
unity 鼠标控制第一人称视角及键盘控制移动
unity。。。完美简单解决靠鼠标在屏幕上的移动来控制相机水平,垂直旋转的c#脚本
Unity视角控制和Camera的移动
Unity3D鼠标控制摄像机“左右移动控制视角+WASD键盘控制前后左右+空格键抬升高度”脚本
Unity3D 初涉门径 之鼠标控制视角转动
unity3d游戏物体跟着鼠标方向移动
[Unity3D]Unity3D游戏开发之鼠标旋转、缩放实现3D物品展示
Unity3D入门(五):鼠标控制旋转、摄像机缩放
unity用wasd控制前后左右,qe控制上下,鼠标控制视角转动
没有更多推荐了,关于用 transform.Rotate 实现鼠标旋转方块时的问题
[问题点数:50分]
本版专家分:0
结帖率 84.21%
CSDN今日推荐
本版专家分:45
本版专家分:0
匿名用户不能发表回复!
其他相关推荐}

我要回帖

更多关于 unity鼠标控制视角移动速度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信