transform.InverseTransformDirection,没有得到正确的输出

时间:2017-02-06 13:26:33

标签: c# unity3d transform direction

我有一个球体作为播放器,我希望它相对于相机移动 而不是世界。

当我沿Y轴旋转相机90度或270度并输入时,它会产生与预期相反的输出。

这是我附加到sphere的脚本:

using System.Collections;
using UnityEngine;

public class mover : MonoBehaviour {

    public Rigidbody sphere;

    public GameObject cameraa;


    void Start () 
    {
        sphere = GetComponent<Rigidbody> ();
    }


    void Update () 
    {
        // getting input in controlVector
        Vector3 controlVector = new Vector3 (Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));

        // transforming direction from world space to local space[to camera]
        Vector3 localVectToCam = cameraa.transform.InverseTransformDirection (controlVector);

        //applying inputs   
        sphere.AddForce (localVectToCam * 10);
    }
}

当相机的方向与世界相同并且相机沿Y轴旋转180度时,它可以正常工作。

但是沿着Y轴旋转相机90度和270度会产生相反的输出。

示例:

相机沿Y轴旋转= 90度[即(0,90,0)]

输入给定=(0,0,1)

输出得=(-1,0,0)

预期产出=(1,0,0)

你能帮助我理解并纠正它吗?

0 个答案:

没有答案