Масштабируемый сборный экземпляр под странными углами и позициями - PullRequest
0 голосов
/ 05 мая 2019

У меня есть масштабный сборный огнемет, который я хочу создать в точке оружия. Мои другие префабы, такие как простые пули и лазер, прекрасно работают с тем же сценарием, но у этого префаба странные места и углы. Как это исправить?

Вот скрипт, который обрабатывает угол и создание экземпляра:

public class FlameThrowerGun : MonoBehaviour
{
    public GameObject theFlame;

    bool isFiring = false;

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        SetPlayerRotation();
        if (Input.GetButtonDown("Fire"))
        {
            Shoot();
        }

    }


    void SetPlayerRotation()
    {
        if (Input.GetKey(KeyCode.W))
        {
            transform.rotation = Quaternion.Euler(0, 0, 45);
        }
        else if (Input.GetKey(KeyCode.S))
        {
            transform.rotation = Quaternion.Euler(0, 0, -45);
        }
        else
        {
            transform.rotation = Quaternion.Euler(0, 0, 0);
        }
    }


    void Shoot()
    {
        GameObject bullet_ = Instantiate(theFlame, transform.position, transform.rotation * Quaternion.Euler(0f, 0f, -90f));
        Destroy(bullet_, 1.0f);

    }
}

* Quaternion.Euler(0f, 0f, -90f) помещен туда, чтобы создать пламя под правильным углом.

Я хочу добавить, что префаб пламени был масштабирован до y=2, чтобы получить желаемый размер, и вместо того, чтобы создавать его на краю префаба, его экземпляр создается в центре, поэтому я чувствую, что у него странное положение.

Здесь, когда стреляют прямо и стреляют под углом, ни один из них не находится на позиции оружия игрока:

https://gfycat.com/EntireGraciousBlueandgoldmackaw

1 Ответ

1 голос
/ 05 мая 2019

Необходимо изменить точку поворота вашего объекта пули

Сейчас точка поворота вашей пули находится в центре, поэтому, когда она появляется и размещается вашим кодом, точка поворота (она же центр)) заканчивается именно там, где вы его просили. Проблема в том, что вы не хотите этого там.

Так что сейчас ваш сборник выглядит примерно так:

Ring in the center

Видите кольцо в центре?Перетащите его влево:

Fixed!

Поместите его прямо в то место, где он должен перекрывать ствол пистолета.

И не обращайте внимания на мою дурацкую попытку дублировать ваше пламя с помощью захвата экрана

Вам, вероятно, придется добавить смещение, если позиционирование соответствует повороту спрайта вашего персонажа, или использовать пустой игровой объект, который сидиттакже в стволе пистолета, но основной принцип здесь заключается в том, что, поскольку стержни центрированы, они выровнены по центру при вызове Instantiate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...