Jump to content

Unity: Создание объектов через метод Instantiate


Recommended Posts

 

Для начала объявляем переменную, которая будет хранить в себе создаваемый объект, например:

    [Tooltip("создаем объект переменную для генерации объекта с помощью клавиши Y")]
    public GameObject GenerateObjectAtKeyY;

Создаем скрипт с любыми именем, перетаскиваем его на любой активный объект на сцене, в скрипте в методе Update пишем:

        if (Input.GetKeyUp(KeyCode.Y))
        {
            Debug.Log("Сработала генерация");
            GameObject MyGenObject = Instantiate(GenerateObjectAtKeyY, transform.position, transform.rotation);
            //MyGenObject.GetComponent<Rigidbody>().AddForce(transform.up * 2500);
        }

Теперь перетаскиваем префаб объекта, который нужно создать, в поле переменной скрипта, которое находится в инспекторе объекта, на который мы повесили скрипт.

 

Таким образом при нажатии на Y будет сначала выводиться в консоль информация, что сработала генерация, потом создается объект.

  • Положение созданного объекта будет таким же, как и положение объекта, на котором скрипт. Если повесить скрипт на игрока, то прямо в игроке создастся нужный объект из префаба. Можно удалить ", transform.position, transform.rotation" из кода, тогда положение создаваемого объекта будет таким, каким было на момент создания префаба. Т.е. инфа по положении берется из префаба.
  • Можно раскоментировать последнюю строчку, тогда объект при создании будет получать импульс вверх относительно объекта, к которому прикреплен скрипт (например, игрока), то есть будет выстреливать. При этом если игрок наклонится, то верх будет тоже под наклоном.
  • Этот код нужен лишь для примера, чтобы понять принципы работы скриптов. Он неоптимизирован, в крупных проектах такой подход не стоит использовать.

 

Link to post
Share on other sites
 

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Powered by Invision Community
Поддержка Invision Community в России

×
  • Create New...