unity3d 如何在Unity C#中使一个对象始终具有与另一个对象相同的Y旋转?

jxct1oxe  于 2022-11-15  发布在  C#
关注(0)|答案(1)|浏览(187)

所以我想让自行车的车把和前轮有相同的Y轴旋转。前轮有一个轮子碰撞器连接到它。前轮网格有这样的代码来获得和轮子碰撞器在所有轴上相同的旋转:
`

private void FixedUpdate()
    {
        UpdateWheel(front, frontTransform);
        UpdateWheel(rear, rearTransform);
      
        

    }
    private void UpdateWheel(WheelCollider col, Transform trans)
    {
        Vector3 pos;
        Quaternion rot;
        col.GetWorldPose(out pos, out rot);

        trans.position = pos;
        trans.rotation = rot;
    }

我试过以与前轮相同的速度旋转车把,然后在30/-30度时夹紧它。这是代码:

float currentRotation;

    void SetCurrentRotation(float rot)
    {
        currentRotation = Mathf.Clamp(rot, -30, 30);
        transform.rotation = Quaternion.Euler(0, rot, 0);
    }

    void Update()
    {
        float newRotation = currentRotation + Input.GetAxis("Horizontal") * rotationSpeed;
        SetCurrentRotation(newRotation);
    }

`
这里的问题是,当父级转向车把时,发生了以下情况:https://www.kapwing.com/videos/6370aeb77608ff0199ea3184
我也尝试过使用父约束组件,但即使锁定X轴,也始终存在一些X旋转。
任何帮助都是感激不尽的,谢谢!

dy1byipe

dy1byipe1#

我不确定这是否有帮助,但我建议使用四元数。旋转朝向,而不是使用欧拉坐标。

相关问题