《Genesis-3D開源遊戲引擎完整實例教程-2D射擊遊戲篇03:子彈發射》

3.子彈發射

子彈發射概述:

在打飛機遊戲中,子彈是自動發射的。子彈與子彈之間間隔必定的時間,玩家經過上下左右控制遊戲角色,來達到躲避敵人及擊中敵人的操做。網站

發射原理:

抽象理解爲有兩個容器存放子彈,其中一個容器裝載死亡子彈,一個容器裝載活着的子彈。兩者在必定的斷定條件下,將子彈循環裝載、釋放,達到子彈的自動發射效果。這裏定義子彈總量爲20發,初始狀態下都存放在死亡容器中,根據開發者定義的循環條件斷定,造成兩容器間的子彈循環,以達到子彈自動發射效果。流程如圖3-1所示。spa


圖3-1

實現方法:

步驟1
添加子彈3d

01 public class CannonMgr
02  {
03  public void Init()
04  {
05   for(int i=0;i < ActorManager.GetActiveActorCount();i++)
06       {
07        if(ActorManager.GetActiveActor(i).Name == "Cannon")
08        {
09        //添加子彈
10         Actor temp = ActorManager.GetActiveActor(i);
11         temp.Deactive();
12         deadCannon.Add(temp);
13        }
14        else if (ActorManager.GetActiveActor(i).Name == "little_plane")
15        {
16           plane = ActorManager.GetActiveActor(i);
17        }
18   }
19  }
20 }

步驟2:code

死亡容器載入子彈的斷定。 發射子彈,超出預設距離的子彈死亡;擊中目標,子彈死亡。遊戲

01 public void Tick()//實時更新:如今全部活着的子彈
02 {
03  if (liveCannon.Count > 0)
04  {
05   //使全部活着的子彈向前移動,當其一出屏幕範圍使,設置其爲死亡
06   for (int i = 0; i < liveCannon.Count; i++)
07   {
08    liveCannon[i].WorldPosition += new Vector3(0.0f,speed * Util.GetDeltaTime(),0.0f);
09    //發射子彈
10    if ((liveCannon[i].WorldPosition.Y - plane.WorldPosition.Y) > shootRange) //死亡斷定:子彈與遊戲角色的距離超出必定範圍
11    {
12    //子彈載入死亡容器
13    iveCannon[i].Deactive();
14    deadCannon.Add(liveCannon[i]);
15    }
16   }
17  }
18 }
19  
20 public void AddDead (Actor beDead)       
21 {
22  beDead.Deactive();
23  deadCannon.Add(beDead);
24  if (liveCannon.Contains(beDead))
25  {
26   liveCannon.Remove(beDead);
27  }
28 }

步驟3: 遊戲開發

自由發射子彈。間隔必定時間使子彈活過來,即發射。開發

01 //從死亡的容器中,間隔必定時間使子彈活過來,即發射子彈
02 public void ShootCannon ()
03 {
04  if (deadCannon.Count > 0)
05  {
06   reloadTimer += Util.GetDeltaTime();
07   if (reloadTimer > 0.1f)
08   {
09    deadCannon[0].WorldPosition = plane.WorldPosition + new Vector3(1.0f,1.0f,0.0f);
10    deadCannon[0].Active();
11    liveCannon.Add(deadCannon[0]);
12    deadCannon.RemoveAt(0);
13    reloadTimer = 0.0f;
14   }
15  }
16 }


 

引擎官方網站:http://www.genesis-3d.com.cn/get

官方論壇:http://bbs.9tech.cn/genesis-3d/string

官方千人大羣:59113309   135439306it

YY頻道-遊戲開發大講堂(徹底免費,按期開課):51735288 

Genesis-3D開源遊戲引擎:遊戲起源,皆因有我!!!

相關文章
相關標籤/搜索