2017-01-07 8 views
0

私はプレハブ次の簡単なを持っている:私は私のシーンにこれを追加するとユニティプレハブが間違っ回転に産卵

enter image description here

が、それは次のようになります。

enter image description here

非常にきれい!

その後、私は私の文字の上に次のスクリプトを持っている:

public class MageController : MonoBehaviour { 
    public GameObject Spell; 
    public float SpellSpeed; 
    // Use this for initialization 
    void Start() { 

    } 

    // Update is called once per frame 
    void Update() { 
     if (Input.GetKeyDown(KeyCode.H)) { 
      GameObject newSpell = Instantiate(Spell); 
      newSpell.transform.position = transform.position; 
      newSpell.transform.rotation = Quaternion.LookRotation(transform.forward, transform.up); 
      Rigidbody rb = newSpell.GetComponent<Rigidbody>(); 
      rb.AddForce(newSpell.transform.forward * SpellSpeed); 
     } 
    } 
} 

目標はfireballが(その背後にある尾で)正しく起動されていることを確認することはもちろんである

Iこれは動作します立っているのは0.0.0です。それは次のようになります。

enter image description here

をしかし、私はそれを好転させる場合は、次のようになります

enter image description here

あなたが見ることができるように、火の玉の回転が正しくない(中上記の間違ったイメージの上に、私から離れて飛んでいる、しかし、尾が前にある)。

私は間違っていますか?どのようにして尾が常に正しく配置されることを確認できますか?

更新PlantProgrammer の指導に従った後、それはまだ間違ってターン:(下の画像で

ルック!

答えて

2

enter image description hereあなたはプレイヤーの前進方向を使用したいとそれは回転ではなく、火球をインスタンス化するときです(覚えておいてください:はあなたのスクリプトに変換された球体変換ではありません)。https://docs.unity3d.com/ScriptReference/Quaternion.LookRotation.html。 LookRotationは、プレーヤーの前方ベクトルとアップベクトルに基づいて回転を返します。

GameObject newSpell = Instantiate(Spell); 
newSpell.transform.position = transform.position; 
newSpell.transform.rotation = Quaternion.LookRotation(transform.forward, transform.up); 

ないあなたの質問の一部が、私はまた、火の玉が自身の順方向ではないプレイヤーに飛ぶせることを示唆している(これは後で修正のためのより多くの部屋を離れると)

rb.AddForce(newSpell.transform.forward * SpellSpeed); 
+0

をいただき、ありがとうございますあなたの答えはそれではありませんnewSpell.transform.position = transform.position? –

+0

はい、もちろんです:)私はちょうど十分な注意を払っていませんでした。私はそれを編集しました。 – PlantProgrammer

+0

それでも間違って変わる:(il update my code –

関連する問題