C# 如何限制变换。旋转(浮动,0,0)?
我知道谷歌有一些答案,但我不能用代码限制轮换:C# 如何限制变换。旋转(浮动,0,0)?,c#,unity3d,C#,Unity3d,我知道谷歌有一些答案,但我不能用代码限制轮换: pitch = cameraDirectionSpeed * Input.GetAxis("Mouse Y"); cameraPivot.transform.Rotate(-pitch, 0, 0, Space.Self); 我希望在X轴上有0到90的限制 谢谢大家! 改用四元数 public Vector3 rotation; private GameObject go; private void Start() { go = Ga
pitch = cameraDirectionSpeed * Input.GetAxis("Mouse Y");
cameraPivot.transform.Rotate(-pitch, 0, 0, Space.Self);
我希望在X轴上有0到90的限制
谢谢大家! 改用四元数
public Vector3 rotation;
private GameObject go;
private void Start()
{
go = GameObject.CreatePrimitive(PrimitiveType.Cube);
}
void Update()
{
go.transform.rotation = Quaternion.Euler(Mathf.Clamp(rotation.x, 0, 90),
rotation.y, rotation.z);
}
因此,添加一些代码来钳制
节距值?它不以这种方式工作。这是旋转功能。夹紧什么都不会给你。当然,它是有效的,你只需要自己弄清楚逻辑。(提示:尝试将pitch
添加到transform.localeurangles.x
中,然后查看结果)我知道我可以使用localeurangles,但我需要旋转函数的限制。请阅读问题。旋转添加旋转,而不是设置。我尝试过各种方法来解决这个问题。都不管用<代码>cameraPivot.transform.localRotation=Quaternion.Euler(Mathf.Clamp(螺距,0,90),0,0)代码>@Orson我向您展示了它的工作原理,但我添加了您需要的内容。谢谢。似乎设置了旋转而不是添加。有没有办法对旋转功能进行一些限制?旋转效果很好,但我需要限制俯仰旋转。怎么做?@Orson你想干什么?为什么需要旋转()简而言之很难解释。我需要Rotate(),因为我已经为我的相机实现了许多控件,如果我们开始使用偏航或俯仰,相机不应该意外移动。Rotate()将旋转添加到现有的旋转中,不会导致任何不必要的“跳跃”。其他解决方案会导致这些“跳跃”。我已经尝试了所有我知道的,只有Rotate()可以完美地工作。
public class CameraClamp : MonoBehaviour
{
public float speed;
public Vector2 clamp; // x = min, y = max
private float pitch;
private void Update()
{
pitch += Input.GetAxis("Mouse Y") * speed * Time.deltaTime;
//pitch -= Input.GetAxis("Mouse Y") * speed * Time.deltaTime; // Invert
pitch = Mathf.Clamp(pitch, clamp.x, clamp.y);
}
private void LateUpdate()
{
gameObject.transform.rotation = Quaternion.Euler(pitch, 0, 0);
}
}