2017-01-07 3 views
0

У меня есть следующий простой сборный:Unity Каркасные икра неправильного вращения

enter image description here

Когда я добавить это к моей сцене, это выглядит следующим образом:

enter image description here

Очень аккуратный!

Тогда у меня есть следующий сценарий на моем Character:

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 правильно породил (с хвостом позади него)

Это работает, когда я стоять на 0.0.0; это выглядит следующим образом:

enter image description here

Однако, если я перехожу вокруг него выглядит следующим образом:

enter image description here

Как вы можете видеть, вращение огненного шара не является правильным (в над неправильным изображением он улетает от меня, однако хвост впереди).

Что я делаю неправильно? Как я могу убедиться, что хвост всегда правильно размещен?

Update после выполнения руководством PlantProgrammer все равно получается неправильно :(

Посмотрите на изображение ниже!

enter image description here

ответ

2

Вы хотите использовать прямое направление игрока и а не его вращение при создании файербола (помните: transform в вашем скрипте - это трансформация игрока, а не преобразование огненного шара.) Проверьте 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 –

Смежные вопросы