私は敵の射撃でこの問題を抱えています。自分のプレイヤーがどこにいるのかを検出するためにレイキャスティングを使っているのを見て、敵を撃って欲しいと思っています。各インスタンシエートされた箇条書きの間で遅れてはいけません!したがって、各箇条書きの間の遅延ではなく、弾丸が常に生成されています。私はこの問題を解決するためにさまざまなソリューションを試しましたが、何も効果がありませんでした。私はIEnumerator、オブジェクトプーリング、カウントダウンタイマーを作成し、& invokerepeatingを呼び出そうとしましたが、まだ私の弾丸はまだ遅延なしで即座にインスタンス化されています。インスタンス化された各箇条書きの間に遅延を持つ方法を知っていますか?ありがとうございました!Unity2D:敵撃ち
これは私のスクリプトです:
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);
}
ありがとうございます!私はそれをもっと良く理解しています!ほんとうにありがとう –