用操纵杆旋转gameobje之后,旋转重置。操纵杆旋转校正

时间:2019-03-25 20:30:36

标签: unity3d rotation joystick

用操纵杆旋转角色后。旋转重置。角色的方向使用操纵杆,当我向想要的方向旋转手然后将其从操纵杆中拉出时,我希望角色朝那个方向看。我离开时,别让他朝操纵杆的方向看。我该怎么做。谢谢。

public class MyJoystick : MonoBehaviour
{
    public Joystick joystick;
    public Joystick joystickRot;
    public float moveSpeed;
    Quaternion targetRotation;
    Rigidbody rigidbody;


    // Start is called before the first frame update
    void Start()
    {
        rigidbody = GetComponent<Rigidbody>();

    }

    // Update is called once per frame
    void Update()
    {
        // var rigidbody = GetComponent<Rigidbody>();


        rigidbody.velocity = new Vector3(joystick.Horizontal * moveSpeed, rigidbody.velocity.y, joystick.Vertical * moveSpeed);

        // this is problem
        // don't reset the rotate when joysticki is released.

        transform.eulerAngles = new Vector3(transform.eulerAngles.x, Mathf.Atan2(joystickRot.Horizontal
              , joystickRot.Vertical) * Mathf.Rad2Deg, transform.eulerAngles.z);
    }
}

1 个答案:

答案 0 :(得分:0)

'joystickRot'在不向任何其他方向推动时将返回零,这就是重置旋转的原因,因此在将值应用于GameObjects变换旋转之前,必须首先检查操纵杆是否正在实际使用。 / p>

我对您使用的操纵杆系统不太熟悉,但是最肯定会有一种方法来测试操纵杆是否正在使用,并且仅在使用时才施加力和旋转。

顺便说一下,您引用了两个操纵杆对象,但我相信您只需要一个。