在打飛機遊戲中,子彈是自動發射的。子彈與子彈之間間隔必定的時間,玩家經過上下左右控制遊戲角色,來達到躲避敵人及擊中敵人的操做。網站
抽象理解爲有兩個容器存放子彈,其中一個容器裝載死亡子彈,一個容器裝載活着的子彈。兩者在必定的斷定條件下,將子彈循環裝載、釋放,達到子彈的自動發射效果。這裏定義子彈總量爲20發,初始狀態下都存放在死亡容器中,根據開發者定義的循環條件斷定,造成兩容器間的子彈循環,以達到子彈自動發射效果。流程如圖3-1所示。spa
步驟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開源遊戲引擎:遊戲起源,皆因有我!!!