我正在为第一人称游戏编写玩家脚本,任何人都可以帮我在这个旋转脚本中添加夹紧功能吗?

问题描述 投票:0回答:1
cameraVertical = Input.GetAxis("Camera Vertical") * turnSpeed * Time.deltaTime;
myCamera.transform.localRotation *= Quaternion.Euler(cameraVertical, 0, 0);

我正在团结一致地工作,我正在开发我的第一个 3D 游戏。在陷入困境之前,我开始进行轮换工作,并在这里得到了帮助。现在我正在努力将旋转限制在设定范围内。有谁知道这个脚本的好方法吗?我对轮换工作没有真正的经验,而且我尝试过的任何方法都不起作用。

我想不出任何可以进行轮换的方法,因此我无法尝试任何事情。

c# unity-game-engine 3d rotation
1个回答
0
投票

不确定你的标准到底是什么,但你可以彻底通过它Mathf.Clamp()来限制你输入的值。

var clampedValue = Mathf.Clamp(cameraVertical, Min, Max)
myCamera.transform.localRotation *= Quaternion.Euler(clampedValue , 0, 0);

直接钳位四元数有点棘手,但仍然可行。在我看来,最易读的方法是将其转换为欧拉并夹紧 xyz,然后转换回来。

Vector3 rotation = myCamera.transform.localRotation.eulerAngles; 

// clamp this as shown above using Mathf.clamp
rotation.x = Mathf.Clamp(rotation.x, Min, Max);

myCamera.transform.localRotation = Quaternion.Euler(rotation.x, rotation.y, rotation .z);
© www.soinside.com 2019 - 2024. All rights reserved.