【发布时间】:2017-05-13 16:12:29
【问题描述】:
我的敌人射击时遇到了这个问题,你看我正在使用光线投射来检测我的玩家在哪里,一旦检测到我希望敌人射击,到目前为止我已经完成了,但是每个之间没有延迟实例化的子弹!所以子弹是不断产生的,而不是每次产生之间的延迟。我已经尝试了很多不同的解决方案来解决这个问题,但没有任何效果!我已经尝试过 IEnumerator、对象池、创建倒数计时器以及调用和调用重复,但我的子弹仍然会立即实例化,没有任何延迟。有谁知道如何在每个实例化的子弹之间有延迟?谢谢!
这是我的脚本:
public GameObject bulletPrefab;
public Transform bulletSpawn;
public Transform sightStart, sightEnd;
public bool spotted = false;
void Update()
{
RayCasting ();
Behaviours ();
}
void RayCasting()
{
Debug.DrawLine (sightStart.position, sightEnd.position, Color.red);
spotted = Physics2D.Linecast (sightStart.position, sightEnd.position, 1 << LayerMask.NameToLayer("Player"));
}
void Behaviours()
{
if (spotted == true) {
//Invoke("Fire", cooldownTimer);
Fire ();
} else if (spotted == false) {
//CancelInvoke ();
}
}
void Fire()
{
GameObject bullet = (GameObject)Instantiate (bulletPrefab);
//GameObject bullet = objectPool.GetPooledObject ();
bullet.transform.position = transform.position;
bullet.GetComponent<Rigidbody2D> ().velocity = bullet.transform.up * 14;
Destroy (bullet, 2.0f);
}
【问题讨论】: