我有一个球体作为播放器,我希望它相对于相机移动 而不是世界。
当我沿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)
你能帮助我理解并纠正它吗?