2017-06-13 23 views
0

私は本質的に球であるが、y1、x1.2、z1(回転楕円体)でスケーリングされた文字を持っています。プレーヤーが間違った軸に沿って回転していますか?

キャラクタの剛体位置から主カメラの変換位置を差し引いた任意の「pushDirection」でオブジェクトに力を加えることができます(これはカメラが向いている方向にキャラクタを動かすのに問題ありません。私のゲームでは常に、カメラが向いている方向に進むべきです)。

しかし、今ではオブジェクトを作成しようとしていますはカメラを向いている方向に力を加えずに回転します。私は代わりにトルクを加えています。

注カメラが被写体の周りを回転するたびに、回転のための軸がシフトすること:[ここに私の意図した軸を持つ私の目標の大まかな図示したスクリーンショットです。

その代わりに、私は、この例示のスクリーンショットに示すように、キャラクタが回転する結果取得していても:述べたよう

カメラはカメラと共に回転シフトのために軸を移動させるように、 。しかし、私は左に回転するのではなく、カメラから離れてオブジェクトを移動します。 (両方のスクリーンショットでは、回転を試してデバッグするためにオブジェクトを重力なしでサスペンドしていました。私のスクリプトの

関連ビットは以下の通りです:私はこれで周りにプレイした

void Start() 
 
    { 
 
     rb = GetComponent<Rigidbody>(); 
 
     pushForward = rb.transform.position - 
 
     Camera.main.transform.position; 
 
    } 
 
    
 
    void Update() 
 
    { 
 
     speed = rb.velocity.magnitude; 
 
     pushForward = rb.transform.position - Camera.main.transform.position; 
 
    
 
     if (Input.GetKey("w")) 
 
     { 
 
      isForward = true; 
 
     } 
 
     else 
 
     { 
 
      isForward = false; 
 
     } 
 
    } 
 
    
 
    void FixedUpdate() 
 
    { 
 
     // IF KEY IS DOWN, MOVE // 
 
     if (isForward == true) 
 
     { 
 
      float turn = Input.GetAxis("Vertical"); 
 
      rb.AddTorque(pushForward * torque * turn); 
 
      Debug.Log("Moving Forward"); 
 
     } 
 
    }

はそんなに私はちょうどそれのまわりで私の頭を取得することはできません。 Input.GetAxisを "Horizo​​ntal"に変更したように私はまったく混乱しています。デバッグメッセージ "Moving Forward"はうまくポップアップしますが、オブジェクトにローテーションはありません。

誰かが正しい方向に私を指すことができたら、本当に感謝します。私はちょっと混乱してしまいました。

+0

あなたのコード内のトルクは何ですか? –

+0

@ DvidFlorek 'トルク'は、入力単位あたりの回転量を増減するために使用される「浮動小数点数」です。 – Galandil

答えて

0

あなたが正しく理解している場合は、希望する回転を得るために、pushForwardVector3.downを乗じる必要があります。

すなわち:

void FixedUpdate() { 
    // IF KEY IS DOWN, MOVE // 
    if (isForward == true) { 
     var vect = Vector3.Cross(pushForward, Vector3.down); 
     float turn = Input.GetAxis("Vertical"); 
     rb.AddTorque(vect * torque * turn); 
     Debug.Log("Moving Forward"); 
    } 
} 
関連する問題