// 火力测试 private TankDestoryed.DamageType FirePowerTest(Enemy enemy) { TankDestoryed.DamageType damage = TankDestoryed.DamageType.NoEffect; float firePower = Random.Range(2f, 7f); if (firePower < enemy.armor) { damage = TankDestoryed.DamageType.NoEffect; } else { if (firePower < enemy.armor + 1) { damage = TankDestoryed.DamageType.BailedOut; } else { if (firePower <= enemy.armor + 3) { damage = TankDestoryed.DamageType.Destoryed; } else { if (firePower > enemy.armor + 3) { damage = TankDestoryed.DamageType.AmmoDetonation; } } } } return(damage); }
// 火力测试 private TankDestoryed.DamageType FirePowerTest(Player player) { TankDestoryed.DamageType damage = TankDestoryed.DamageType.NoEffect; float firePower = Random.Range(2f, 7.5f); Debug.Log(firePower); if (firePower < player.armor) { damage = TankDestoryed.DamageType.NoEffect; } else { if (firePower < player.armor + 1) { damage = TankDestoryed.DamageType.BailedOut; } else { if (firePower <= player.armor + 3) { damage = TankDestoryed.DamageType.Destoryed; } else { if (firePower > player.armor + 3) { damage = TankDestoryed.DamageType.AmmoDetonation; } } } } return(damage); }
private void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag == "Enemy") { Enemy enemy = collision.gameObject.GetComponent <Enemy>(); // 伤害判定在炮弹脚本中进行 TankDestoryed.DamageType damage = FirePowerTest(enemy); switch (damage) { case TankDestoryed.DamageType.NoEffect: Debug.Log("NoEffect"); break; case TankDestoryed.DamageType.BailedOut: enemy.startBailedOut = true; enemy.isBailedOut = true; Debug.Log("BailedOut"); break; case TankDestoryed.DamageType.Destoryed: enemy.tankDestoryed.isTankDestoryed = true; enemy.tankDestoryed.isAmmoDetonation = false; enemy.tankDestoryed.destoryedTank = enemy.transform; break; case TankDestoryed.DamageType.AmmoDetonation: enemy.tankDestoryed.isTankDestoryed = true; enemy.tankDestoryed.isAmmoDetonation = true; enemy.tankDestoryed.destoryedTank = enemy.transform; enemy.tankDestoryed.destoryedTankTurretTrans = enemy.turret; break; } if (damage == TankDestoryed.DamageType.NoEffect) { // 没有产生效果,炮弹不能立刻删除 Destroy(this.gameObject, 0.5f); } else { // 产生了效果,炮弹立刻删除 Destroy(this.gameObject); } } else { Destroy(this.gameObject, 0.5f); } // 产生了效果 生成冲击特效 GameObject temp = Instantiate(impactFX, collision.contacts[0].point, Quaternion.FromToRotation(Vector3.up, collision.contacts[0].normal)); Destroy(temp, 3f); }
private void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag == "Player") { Player player = collision.gameObject.GetComponent <Player>(); PlayerDestoryed playerDestoryed = GameObject.FindGameObjectWithTag("GameManager").GetComponent <PlayerDestoryed>(); // 伤害判定在炮弹脚本中进行 TankDestoryed.DamageType damage = FirePowerTest(player); switch (damage) { case TankDestoryed.DamageType.NoEffect: Debug.Log("NoEffect"); break; case TankDestoryed.DamageType.BailedOut: player.startBailedOut = true; player.isBailedOut = true; Debug.Log("BailedOut"); break; case TankDestoryed.DamageType.Destoryed: playerDestoryed.isDestoryed = true; break; case TankDestoryed.DamageType.AmmoDetonation: playerDestoryed.isAmmoDetonation = true; playerDestoryed.isDestoryed = true; break; } if (damage == TankDestoryed.DamageType.NoEffect) { // 没有产生效果,炮弹不能立刻删除 Destroy(this.gameObject, 0.5f); } else { // 产生了效果,炮弹立刻删除 Destroy(this.gameObject); } } else { Destroy(this.gameObject); } // 产生了效果 生成冲击特效 GameObject temp = Instantiate(impactFX, collision.contacts[0].point, Quaternion.FromToRotation(Vector3.up, collision.contacts[0].normal)); Destroy(temp, 3f); }