unity3D关于最后一个new不是很懂

Quaternionqua=Quaternion.Euler(transform.rotation.eulerAngles);//获取相机当前旋转量floatmouseX... Quaternion qua = Quaternion.Euler(transform.rotation.eulerAngles);//获取相机当前旋转量
float mouseX = Input.GetAxisRaw("Mouse X") * rotateSpeed * Time.deltaTime;
float mouseY = Input.GetAxisRaw("Mouse Y") * rotateSpeed * Time.deltaTime;//检测鼠标移动
float moveX = Input.GetAxisRaw("Horizontal") * moveSpeed * Time.deltaTime;
float moveZ = Input.GetAxisRaw("Vertical") * moveSpeed * Time.deltaTime; //检测移动
//print(Time.deltaTime);
transform.rotation = Quaternion.Euler(-mouseY + transform.rotation.eulerAngles.x, mouseX + transform.eulerAngles.y, 0);//控制方向
transform.position += qua * new Vector3(moveX, 0, moveZ);
transform.position = new Vector3(Mathf.Clamp(transform.position.x, -95, 95),4, Mathf.Clamp(transform.position.z, -95, 95));
这是我找的一个别人做好的游戏,我拿来学习观摩,但是这边的new不是很懂,调试的过程中是发现这个是为了稳定住物体不会跟着摄像机的镜头到处飞,但是具体为什么不知道,希望能为我解答。
展开
 我来答
百度网友c7e1877
2016-05-12 · TA获得超过4670个赞
知道大有可为答主
回答量:4996
采纳率:81%
帮助的人:1456万
展开全部
倒数第二句的意思是将向量(由水平和垂直偏移控制(如键盘或手柄的方向键))按摄像机的旋转量(四元数)旋转最后在赋值回相机(从你贴的代码里看不出transform是不是相机,只能从你的注释里推测)。
最后一句是用了 Clamp 钳位操作,因为你上一步旋转后的位置可能太偏,所以如果 x、z 轴向超过 [-95, 95] 的范围(也就是底盘的以原点为中心的一个正方形区域),则把它限制在这个区域的边界上,同时固定摄像机的高度(y 轴)到 4
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式