Unity: 用Instantiate產生子彈/敵人

在Unity中Instantiate可用來射出子彈 產生敵人 產生特效 可謂妙用無窮 現在來說明一下 如何應用Instantiate射出子彈,並且控制每秒可射出子彈的數量 (手槍,機關槍效果)

使用Instantiate功能做出子彈發射效果 並控制每秒可射出子彈的數量

程式碼如下

子彈發射速率為每秒1發 由spawnRate控制

注意事項

  • Line 2: lastSpawnTime = 0.0; 為float格式, 在Javascript中 如果寫成0 (int整數)跟寫成0.0(float浮點數)是表示不同的資料形態 會產生不同結果
  • Line 8: currentTime = Time.time; 不是Time.DeltaTime

當lastSpawnTime寫成 0 (int整數)的時候 且當spawnRate設定在 0 – 1之間時 (如spawnRate = 0.5) 會產生錯誤結果 子彈會亂射ㄧ通 如下影片

錯誤效果影片:SpawnTimeError1(點我觀看)

當lastSpawnTime寫成 0.0 (float浮點數)的時候 且當spawnRate設定在 0 – 1之間時 (如spawnRate = 0.5) 結果就會正確 子彈會 ”2發/每秒“ 射出

正常效果影片: SpawnTimeCorrect(點我觀看)

 

Bonus:讓子彈只產生一次的方法

(instantiate just once)