3.子弹发射
子弹发射概述:
在打飞机游戏中,子弹是自动发射的。子弹与子弹之间间隔一定的时间,玩家通过上下左右控制游戏角色,来达到躲避敌人及击中敌人的操作。
发射原理:
抽象理解为有两个容器存放子弹,其中一个容器装载死亡子弹,一个容器装载活着的子弹。二者在一定的判定条件下,将子弹循环装载、释放,达到子弹的自动发射效果。这里定义子弹总量为20发,初始状态下都存放在死亡容器中,根据开发者定义的循环条件判定,形成两容器间的子弹循环,以达到子弹自动发射效果。流程如图3-1所示。
图3-1
实现方法:
步骤1
添加子弹
05 | for ( int i=0;i < ActorManager.GetActiveActorCount();i++) |
07 | if (ActorManager.GetActiveActor(i).Name == "Cannon" ) |
10 | Actor temp = ActorManager.GetActiveActor(i); |
14 | else if (ActorManager.GetActiveActor(i).Name == "little_plane" ) |
16 | plane = ActorManager.GetActiveActor(i); |
步骤2:
死亡容器载入子弹的判定。 发射子弹,超出预设距离的子弹死亡;击中目标,子弹死亡。
03 | if (liveCannon.Count > 0) |
06 | for ( int i = 0; i < liveCannon.Count; i++) |
08 | liveCannon[i].WorldPosition += new Vector3(0.0f,speed * Util.GetDeltaTime(),0.0f); |
10 | if ((liveCannon[i].WorldPosition.Y - plane.WorldPosition.Y) > shootRange) |
13 | iveCannon[i].Deactive(); |
14 | deadCannon.Add(liveCannon[i]); |
20 | public void AddDead (Actor beDead) |
23 | deadCannon.Add(beDead); |
24 | if (liveCannon.Contains(beDead)) |
26 | liveCannon.Remove(beDead); |
步骤3:
自由发射子弹。间隔一定时间使子弹活过来,即发射。
02 | public void ShootCannon () |
04 | if (deadCannon.Count > 0) |
06 | reloadTimer += Util.GetDeltaTime(); |
07 | if (reloadTimer > 0.1f) |
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); |
引擎官方网站:http://www.genesis-3d.com.cn/
官方论坛:http://bbs.9tech.cn/genesis-3d/
官方千人大群:59113309 135439306
YY频道-游戏开发大讲堂(完全免费,定期开课):51735288
Genesis-3D开源游戏引擎:游戏起源,皆因有我!!!