Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать задержку между выстрелами в unity?

Kukuruza Ученик (142), на голосовании 6 месяцев назад
Совсем недавно начал изучать unity. Надо написать скрипт, чтобы персонаж стрелял после чего появлялась задержка. У меня получился такой код:
 public class Shoot : MonoBehaviour 
{

[SerializeField] private GameObject bullet; //Объект пули
[SerializeField] private Transform posGun; //Позиция пушки
[SerializeField] private float delayTime; //Задержка между выстрелами
private float delay;

void Update()
{
if (delay > 0)
{
delay -= Time.deltaTime;
}
if (Input.GetMouseButtonDown(0) && delay <= 0)
{
Instantiate(bullet, posGun.position, posGun.rotation);
delay = delayTime;
}

}
}

Будет ли считаться этот скрипт правильным или нет? Если нет, то как можно его улучшить?
Заранее благодарю за помощь.
Голосование за лучший ответ
creakdowndeadly Мастер (1079) 7 месяцев назад
Так по-моему твой скрипт должен работать, он верный. Скорее всего тебе нужно просто в окне свойства объекта задать время.
А так советую добавить отдельный метод выстрела.
Рекомендую так же уничтожать пулю, если она находится за границами экраном игрока или через некоторое время после создания.

void Update()
{
if (delay > 0)
{
delay -= Time.deltaTime;
}
if (Input.GetMouseButtonDown(0) && delay <= 0)
{
ShootBullet();
delay = delayTime;
}
}

private void ShootBullet()
{
Instantiate(bullet, posGun.position, posGun.rotation);
}
}
KukuruzaУченик (142) 7 месяцев назад
Спасибо. Скрипт работает. Скрипт для уничтожения пули я тоже сделал.
Похожие вопросы