/// <summary> /// 对敌人造成伤害 /// </summary> /// <param name="enemy">敌人对象</param> /// <param name="baseDamage">基础伤害</param> /// <param name="direction">伤害方向</param> /// <param name="extraDamage">额外伤害</param> public void Damage(GameObject enemy, float baseDamage, float direction, float extraDamage = 0) { var enemyMovement = enemy.GetComponent <EnemyMovement>(); if (!enemyMovement.canGetDamage()) { return; } int type = 1; baseDamage += property.GetAttack(); if (property.HaveEquipment("SkullSword")) { baseDamage += property.GetCoinNumber() / 20 * 2; } if (property.HaveEquipment("WizardSword") && Random.Range(0, 1f) < 0.05f) { property.SetShield(1); } if (property.HaveEquipment("ThiefMask") && Random.Range(0, 1f) < 0.1f) { GameObject coin = Resources.Load <GameObject>("Prefabs/Item/SilverCoin"); Instantiate(coin).GetComponent <Item>().Emit(enemy.transform.position, false); } if (property.HaveEquipment("SamuraiSoul") && Random.Range(0, 1f) < 0.3f) { baseDamage *= 2; type += 2; } if (extraDamage > 0) { type++; } if (property.HaveEquipment("ShadowBlade") && direction * enemy.transform.localScale.x > 0) { extraDamage += 10; if (type != 2 && type != 4) { type++; } } if (property.HaveEquipment("EnergyDrink")) { if (Random.Range(0, 1f) < 0.35f) { extraDamage += Random.Range(10, 51); if (type != 2 && type != 4) { type++; } } } if (property.HaveEquipment("BloodyFangs")) { if (!enemy.TryGetComponent(out BloodyFangs bloodyFangs)) { bloodyFangs = enemy.AddComponent <BloodyFangs>(); } bloodyFangs.AddHurtNumber(); extraDamage += bloodyFangs.GetExtraDamage(); if (extraDamage > 0 && type != 2 && type != 4) { type++; } } float damage = baseDamage + extraDamage; enemyMovement.getDamage(damage, (int)direction); PoolManager.GetInstance().GetDamageText(enemy.transform.position, damage, type); }