使用虚拟操纵杆移动和旋转二维对象

Move and rotate 2d object using virtual joystick

这是我使用内置虚拟操纵杆移动 2D 自上而下对象的代码:

void Update () 
    {
        Vector2 moveVec = new Vector2(CrossPlatformInputManager.GetAxis("Horizontal"), 
            CrossPlatformInputManager.GetAxis("Vertical"));


        Vector3 lookVec = new Vector3(CrossPlatformInputManager.GetAxis("Horizontal"), 
            CrossPlatformInputManager.GetAxis("Vertical"), 4000);

        transform.rotation = Quaternion.LookRotation(lookVec, Vector3.back);
        transform.Translate(moveVec * Time.deltaTime * speed);  
    }

没有旋转代码,运动是完美的,加入旋转代码后,运动变得一团糟,如果方向是向下,它会向上移动。 但轮换正是它应该的方式。

只需将 transform.Translate(moveVec * Time.deltaTime * speed); 行更改为 transform.Translate(moveVec * Time.deltaTime * speed, Space.World); :默认情况下,翻译相对于转换本身 space (Space.Self).