using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Shooting : MonoBehaviour
{
[SerializeField]
private Transform[] firePoints;
[SerializeField]
private Rigidbody projectilePrefab;
[SerializeField]
private float launchForce = 700f;
[SerializeField]
private Animator anim;
[SerializeField]
private bool automaticFire = false;
private void Start()
{
anim.SetBool("Shooting", true);
}
public void Update()
{
if (Input.GetButtonDown("Fire1") && automaticFire == false)
{
if (anim.GetBool("Shooting") == true)
{
anim.Play("SHOOTING");
LaunchProjectile();
}
}
if(automaticFire == true)
{
anim.Play("SHOOTING");
LaunchProjectile();
}
}
private void LaunchProjectile()
{
foreach (var firePoint in firePoints)
{
Rigidbody projectileInstance = Instantiate(
projectilePrefab,
firePoint.position,
firePoint.rotation);
projectileInstance.AddForce(new Vector3(0,0,1) * launchForce);
projectileInstance.gameObject.AddComponent<BulletDestruction>().Init();
}
}
}
Если он автоматический:
if(automaticFire == true)
{
anim.Play("SHOOTING");
LaunchProjectile();
}
Он стреляет без остановки, но выглядит как одна длинная пуля.Если, например, я хочу, чтобы он стрелял без перерыва, но только одна пуля каждый раз?Или выстрелили много пуль, но с небольшим промежутком между ними?
На каждую пулю я добавляю следующий скрипт уничтожения:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BulletDestruction : MonoBehaviour
{
// Start is called before the first frame update
public void Init()
{
StartCoroutine(DestroyBullet());
}
IEnumerator DestroyBullet()
{
yield return new WaitForSeconds(0.2f);
Destroy(gameObject);
}
}
Но это тоже проблема.Если я устанавливаю задержку уничтожения равной 0,2, расстояние стрельбы пулями будет очень коротким, но если я установлю время задержки, например, на 5, пули будут стрелять на большее расстояние, но опять же будет много пуль водновременно.
Какая логика на уничтожение и автоматический режим?И как мне это сделать в скрипте / с?