Unity 6.3
0 онлайн 102 гостей 3 в системе
Вход
GameObjects Шаг 55 из 56

Создавайте снаряды и взрывы

Вы можете создать экземпляр префабы для использования в качестве снаряда и уничтожить его с помощью эффекта взрыва в вашем приложении.

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

Создание снаряда префаб

  1. В Hierarchy щелкните правой кнопкой мыши и выберите 3D Объект > Сфера.
  2. Выберите сферу, и в ее Inspector, выберите Добавить Компонент > Rigidbody. Сфера нуждается в Rigidbody, чтобы она могла лететь в воздухе и обнаруживать, когда происходит столкновение.
  3. Переименуйте сферу в Projectile и затем перетащите ее в папку Assets вашего проекта, чтобы создать актив префаб.
  4. Затем вы можете удалить сферу из Hierarchy.

Вы можете по желанию добавить текстура к Генеральной Ассамблее префаб, изменить его размеры или импортировать другой модель чтобы действовать в качестве снаряда.

Добавить скрипт взрыва к объекту снаряда префаб

Чтобы добавить взрыв к снаряды префаб, вы должны иметь префаб ассет, который представляет взрыв. Вы можете использовать систему частиц до создать префаб актив, или найти эффект взрыва на Asset Store и добавьте его в папку Assets вашего проекта.

Затем создайте скрипт под названием Projectile следующим образом:

using UnityEngine;

public class Projectile : MonoBehaviour
{

    public GameObject explosion;
    void Start()
    {
         // Deletes the projectile after 10 seconds, regardless
         // of whether it collided with anything. This prevents
         // instances from staying in the scene indefinitely.
         Destroy(gameObject,10);
    }
    void OnCollisionEnter()
    {
        // When the projectile hits something, create an explosion
        // and remove the projectile.
        Instantiate(explosion,transform.position,transform.rotation);
        Destroy(gameObject);
    }
}

Скрипт инстанционирует взрыв в текущем положении снаряда и удаляет снаряд GameObject, когда снаряд столкнется с чем-то.

Чтобы использовать скрипт, прикрепите его к объекту префаб:

  1. Выберите ассет Projectile префаб и откройте его в режиме редактирования префаб.
  2. В Inspector перетащите на него скрипт Projectile.
  3. Перетащите объект взрыва префаб в поле Взрыв.

Создание скрипта для запуска снарядов

Чтобы запустить снаряды, вам нужно создать скрипт, который инстанционирует снаряды при нажатии клавиши стрельбы, и добавить этот скрипт в GameObject.

Создайте скрипт под названием FireProjectile и добавьте в него следующее:

using UnityEngine;
using UnityEngine.InputSystem;

public class FireProjectile : MonoBehaviour
{
    // Only GameObjects with a Rigidbody can be assigned as the projectile.
    public Rigidbody projectile;
    // Speed of the projectile when fired.
    // This is a public variable so it can be adjusted in the Unity Editor.
    public float speed = 4;
    // Update is called once per frame
    // This method checks for input and fires a projectile if the attack action is pressed.
    void Update()
    {
        // Check if the "Attack" action was pressed this frame
        // If it was, instantiate a projectile at the player's position and set its velocity.
        if (InputSystem.actions.FindAction("Attack").WasPressedThisFrame())
        {
            Rigidbody p = Instantiate(projectile, transform.position, transform.rotation);
            p.linearVelocity = transform.forward * speed;
        }
    }
}

Этот скрипт использует Instantiate чтобы запустить снаряд. Открытая переменная префаба может иметь тип GameObject либо любой допустимый тип компонента — как встроенного компонента Unity, так и одного из ваших скриптов MonoBehaviour.

Для переменных типа компонента (таких как Rigidbody, Collider и Light) можно назначить переменной только GameObjects этого типа компонента, и функция Instantiate возвращает ссылку на этот конкретный компонент в новом экземпляре GameObject.

Присоедините скрипт запуска к GameObject

Чтобы использовать этот скрипт, необходимо прикрепить его к GameObject. Для этого:

  1. Убедитесь, что ваша сцена имеет землю GameObject Если вы используете пустой проект, создайте Плану, в котором будет указано место, где должен столкнуться снаряд. GameObject: щелкните правой кнопкой Hierarchy и выберите 3D Объект > Самолёт.
  2. Создать куб GameObject: щелкните правой кнопкой мыши Hierarchy и выберите 3D Объект > Куб и расположите его на плоскости.
  3. Выберите куб и в его Inspector удалите компонент Box Collider. Если вы не удалите этот компонент, снаряды столкнутся с кубом, прежде чем попасть на землю.
  4. Перетащите скрипт FireProjectile на куб.
  5. Перетащите объект Projectile префаб в поле Projectile скрипта Огненный снаряд.
  6. Введите режим воспроизведения, а затем нажмите кнопку мыши.

Куб стреляет сферическими снарядами, и взрыв происходит, когда они сталкиваются с землей.

Снаряжение и взрыв префабы инстанцируются и уничтожаются.
Снаряжение и взрыв префабы инстанцируются и уничтожаются.

Обратите внимание, что любые экземплярные объекты появляются в Hierarchy с (Clone), добавленным к имени.

Дополнительные ресурсы