1

ゲームオブジェクトを曲線に沿って動かそうとしています。それに加えて、それに応じてそのゲームオブジェクトの角度を変更したいと考えています。

以下は私のコードです。しかし、正しく機能していません:

public class CharacterController : MonoBehaviour {

Vector3 prevPos, currentPos;
Vector3 perpPos;

// Use this for initialization
void Start () {
    Debug.Log ("Character Controller start method");
    prevPos = gameObject.transform.position;
    currentPos = gameObject.transform.position;
}

// Update is called once per frame
void Update () {
    currentPos = this.transform.position;
    perpPos = new Vector3 (currentPos.x, prevPos.y, 0.0f);
    //Debug.Log ("perpPos" + perpPos);
    float perpDist = Vector3.Distance (perpPos, currentPos);
    float baseDist = Vector3.Distance (prevPos, perpPos);
    //Debug.Log ("perpDist " + perpDist);
    //Debug.Log ("baseDist " + baseDist);
    float angle = Mathf.Tan (perpDist / baseDist);
    angle = angle * Mathf.Rad2Deg;
    Debug.Log ("angle " + angle);
    gameObject.transform.rotation = Quaternion.Euler (0,0, angle);
    this.transform.eulerAngles = new Vector3 (0, 0, angle);
    //Debug.Log ("angle " + angle);

    //Quaternion rot=new Quaternion();
    //rot.eulerAngles = new Vector3(0, 0, angle);
    //transform.rotation=rot;

    prevPos = currentPos;

}

}

ここでは、ゲームオブジェクトの以前の位置と現在の位置を取得しています。2 つの個別のベクトルの垂線と底辺を取得できるように、3 番目の点を計算します。そこから、tan(Theta) = perp/base 式を使用して角度を計算しています。しかし、これはスムーズに機能していないようです。

誰かが助けることができれば?

4

0 に答える 0