当前位置:首页 > 卢杰-基于Unity3D的坦克大战游戏的设计与实现 - 图文
卢杰:基于Unity3D的坦克大战游戏的设计与实现
return; }
enemyHp -= atk;
hp_Image.fillAmount -= atk / ENEMYHP; if (enemyHp <= 0) {
Instantiate(m_TankExplosion, transform.position + transform.up, Quaternion.identity); m_Canvas.SetActive(false); Destroy(gameObject);
GameManager._instance.scoreNum++; GameManager._instance.ScoreAdd(); }
}
4.5 炮弹的碰撞检测
4.5.1 炮弹的身份
给炮弹定义一个叫做身份的枚举,里面有玩家和敌人,当玩家攻击实例化子弹的时候就将实例化生成的子弹的身份设置为玩家,当敌人攻击实例化子弹的时候就将实例化生成的子弹的身份设置为敌人。枚举代码如下:
public enum ShellIdentity {
PLAYER, ENEMY,
}
4.5.1 碰撞检测 (1)实现思路
碰撞的检测使用Unity3D内置的API方法,是OnTriggerEnter,功能是当碰撞的那一瞬间触发一次该方法,而碰撞的必要条件是,碰撞的双方都有碰撞体,双方至少一方有刚体,才会触发碰撞。当子弹碰撞到对象时,销毁自己,然后在炮弹的位置生成炮弹爆炸特效,然后会验证碰撞体身份,如果子弹的身份与碰撞体的身份不一致的话即调用碰撞体的受伤方法。 (2)代码
private void OnTriggerEnter(Collider other) {
if (other.tag == transform.tag)
18
卢杰:基于Unity3D的坦克大战游戏的设计与实现
{
return; }
if (other.tag == \ && identity != other.GetComponent
other.GetComponent
else if (other.tag == \ && identity !=
other.GetComponent
{
other.GetComponent
else if (other.tag == \ && identity == ShellIdentity.ENEMY) {
GameManager._instance.MapBruise(shellAttack); }
Instantiate(m_ShellExplosion, transform.position, Quaternion.identity); Destroy(gameObject);
}
19
卢杰:基于Unity3D的坦克大战游戏的设计与实现
第5章 系统测试
5.1 在Unity3D中运行测试
点击软件中的运行按钮,如图5.1所示。
图5.1 运行按钮
游戏在软件中测试运行,如图5.2所示。
图5.2 Unity3D中运行
游戏能够正常运行,没有报错,测试成功。
5.2 在PC中运行测试
点击File选择Build Settings出现打包菜单,如图5.3所示。
20
卢杰:基于Unity3D的坦克大战游戏的设计与实现
图5.3 打包选项
结合游戏之前的几个场景,就可以打包成一个完整的游戏了,先将其打包为PC游戏进行测试。
运行结果如图5.4所示。
21
共分享92篇相关文档