Создавайте снаряды и взрывы
Вы можете создать экземпляр префабы для использования в качестве снаряда и уничтожить его с помощью эффекта взрыва в вашем приложении.
В следующем примере при нажатии пользователем кнопки стрельбы создается снаряд префаб. Вы можете прикрепить его к GameObject, который выступает в качестве пускового устройства для префаб.
Создание снаряда префаб
- В Hierarchy щелкните правой кнопкой мыши и выберите 3D Объект > Сфера.
- Выберите сферу, и в ее Inspector, выберите Добавить Компонент > Rigidbody. Сфера нуждается в Rigidbody, чтобы она могла лететь в воздухе и обнаруживать, когда происходит столкновение.
- Переименуйте сферу в
Projectileи затем перетащите ее в папкуAssetsвашего проекта, чтобы создать актив префаб. - Затем вы можете удалить сферу из 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, когда снаряд столкнется с чем-то.
Чтобы использовать скрипт, прикрепите его к объекту префаб:
- Выберите ассет
Projectileпрефаб и откройте его в режиме редактирования префаб. - В Inspector перетащите на него скрипт
Projectile. - Перетащите объект взрыва префаб в поле Взрыв.
Создание скрипта для запуска снарядов
Чтобы запустить снаряды, вам нужно создать скрипт, который инстанционирует снаряды при нажатии клавиши стрельбы, и добавить этот скрипт в 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. Для этого:
- Убедитесь, что ваша сцена имеет землю GameObject Если вы используете пустой проект, создайте Плану, в котором будет указано место, где должен столкнуться снаряд. GameObject: щелкните правой кнопкой Hierarchy и выберите 3D Объект > Самолёт.
- Создать куб GameObject: щелкните правой кнопкой мыши Hierarchy и выберите 3D Объект > Куб и расположите его на плоскости.
- Выберите куб и в его Inspector удалите компонент Box Collider. Если вы не удалите этот компонент, снаряды столкнутся с кубом, прежде чем попасть на землю.
- Перетащите скрипт
FireProjectileна куб. - Перетащите объект
Projectileпрефаб в поле Projectile скрипта Огненный снаряд. - Введите режим воспроизведения, а затем нажмите кнопку мыши.
Куб стреляет сферическими снарядами, и взрыв происходит, когда они сталкиваются с землей.
Обратите внимание, что любые экземплярные объекты появляются в Hierarchy с (Clone), добавленным к имени.