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
 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

×
  • Create New...