void OnTriggerEnter(Collider other) { // Mini怪物发射的 if (Owner == GameTag.Enemy) { return; } if (Owner == GameTag.Boss) { return; } // 武器打到道具 if (other.tag.Equals(GameTag.Props) && type != WeaponType.Stone) { PropBehaviour pb = other.transform.parent.GetComponent <PropBehaviour>(); if (pb == null) { pb = other.transform.parent.parent.GetComponent <PropBehaviour>(); } if ( //pb.Type == PropType.Bat || //pb.Type == PropType.FeiQi || pb.Type == PropType.Mine) { Trigger(); if (Owner == GameTag.Player) { pb.Trigger(true); } WeaponManager.Instance.AddDespawnWeapon(this); pb.PlayDestroyEffect(); PropsManager.Instance.AddDespawnNormal(pb); return; } } // 打到武器道具 if (other.tag.Equals(GameTag.Weapon)) { WeaponBehaviour wb = other.gameObject.GetComponent <WeaponBehaviour>(); if (wb.Assaultable) { Trigger(); WeaponManager.Instance.AddDespawnWeapon(this); WeaponManager.Instance.AddDespawnWeapon(wb); } } if (other.tag.Equals(GameTag.Bug)) { Trigger(); BugAttack ba = other.GetComponent <BugAttack>(); ba.OnHurt(damageValue); } }
void OnTriggerEnter(Collider other) { if (_Player.BossStep) { return; } // 道具类 if (other.tag.Equals(GameTag.Props)) { PropBehaviour pb = other.transform.parent.GetComponent <PropBehaviour>(); if (pb == null) { pb = other.transform.parent.parent.GetComponent <PropBehaviour>(); } if (pb.Owner == GameTag.Player) { return; } float damage0 = pb.DamageValue; float damage1 = pb.DamagePlane; if (damage0 < 0 && (_Player.ShieldLife + damage0) < 0) { EventDispatcher.TriggerEvent(EventDefine.Event_Tips_Type_By_Int, 0, pb.transform.position, (int)(Mathf.Abs(_Player.ShieldLife + damage0))); } else if (damage0 > 0) { EventDispatcher.TriggerEvent(EventDefine.Event_Tips_Type_By_Int, 1, pb.transform.position, (int)(Mathf.Abs(damage0))); } _Player.OnDamage(damage0, damage1); pb.Trigger(); switch (pb.Type) { case PropType.Coin: PropsManager.Instance.AddDespawnNormal(pb); _Player.OnCoin(pb.Score); break; case PropType.Fix: if (_Player.Data.ConditionRate < 0.9f) { ioo.audioManager.PlayPersonSound("Person_Sound_Fix"); } if (_Player.Data.ConditionRate < 1) { _Player.EffectFixed.SetActive(true); } PropsManager.Instance.AddDespawnNormal(pb); _Player.OnFix(pb.Score); EventDispatcher.TriggerEvent(EventDefine.Event_Tips_Type_By_Int, 4, pb.transform.position, 0); break; case PropType.Diamond: PropsManager.Instance.AddDespawnNormal(pb); _Player.OnDiamond(pb.Score); break; case PropType.Fuel: ioo.audioManager.PlayPersonSound("Person_Sound_Time_Add"); PropsManager.Instance.AddDespawnNormal(pb); _Player.OnFuel(pb.Score); break; case PropType.Shield: ioo.audioManager.PlayPersonSound("Person_Sound_Shield"); PropsManager.Instance.AddDespawnNormal(pb); _Player.OnShield(pb.Score); EventDispatcher.TriggerEvent(EventDefine.Event_Tips_Type_By_Int, 2, pb.transform.position, 0); break; case PropType.Magnet: _MagnetTime = 8; _AbilityMagnet = true; PropsManager.Instance.AddDespawnNormal(pb); _Player.OnMagnet(pb.Score); break; case PropType.Wall: EventDispatcher.TriggerEvent(EventDefine.Event_OnTrigger_Wall); _Player.OnWall(pb.Score); break; //case PropType.FeiQi: // PropsManager.Instance.AddDespawnNormal(pb); // break; //case PropType.Bat: // PropsManager.Instance.AddDespawnNormal(pb); // break; case PropType.Mine: PropsManager.Instance.AddDespawnNormal(pb); break; case PropType.Missile: ioo.audioManager.PlayPersonSound("Person_Sound_Missile"); _AbilityMissile = true; _Player.AbilityMissile(); PropsManager.Instance.AddDespawnNormal(pb); EventDispatcher.TriggerEvent(EventDefine.Event_Tips_Type_By_Int, 5, pb.transform.position, 0); break; case PropType.Engine: ioo.audioManager.PlayPersonSound("Person_Sound_Speed_Up"); PropsManager.Instance.AddDespawnNormal(pb); EventDispatcher.TriggerEvent(EventDefine.Event_Tips_Type_By_Int, 3, pb.transform.position, 0); break; } SetFactorP(pb.Type); } // 武器类 if (other.tag.Equals(GameTag.Weapon)) { WeaponBehaviour wb = other.gameObject.GetComponent <WeaponBehaviour>(); if (wb.Owner == GameTag.Player) { return; } _Player.OnDamage(wb.DamageValue, wb.DamagePlane); wb.Trigger(); switch (wb.Type) { case WeaponType.Mine: case WeaponType.Missle: case WeaponType.Laser: case WeaponType.FireBal: case WeaponType.Missle2: WeaponManager.Instance.AddDespawnWeapon(wb); break; case WeaponType.Stone: _Player.ShackCameraByPosition(1); WeaponManager.Instance.AddDespawnWeapon(wb); EffectManager.Instance.Spawn(EffectName.Effect_Aerolite_baoz, wb.transform.position); if (_Player.ShieldLife + wb.DamageValue < 0) { EventDispatcher.TriggerEvent(EventDefine.Event_Tips_Type_By_Int, 0, wb.transform.position, (int)(Mathf.Abs(_Player.ShieldLife + wb.DamageValue))); } break; } SetFactorW(wb.Type); } // 广告牌 if (other.tag.Equals(GameTag.GuangGaoPai)) { ioo.audioManager.PlaySound2D("SFX_Sound_GuangGao"); } // 敌人 if (other.tag.Equals(GameTag.Enemy)) { _Player.OnDamage(-3, -3); _Player.ShackCameraByPosition(1); } // 加速环 if (other.tag.Equals(GameTag.Glow)) { // 和加速引擎道具一样的效果 SetFactorP(PropType.Engine); } // 虫怪 if (other.tag.Equals(GameTag.Bug)) { _Player.OnDamage(-2, -2); SetFactorP(PropType.Bug); _Player.ShackCameraByPosition(0.2f); if (_Player.ShieldLife - 2 < 0) { EventDispatcher.TriggerEvent(EventDefine.Event_Tips_Type_By_Int, 0, other.transform.position, (int)Mathf.Abs(2 - _Player.ShieldLife)); } } // 特效树 if (other.tag.Equals(GameTag.Tree)) { _Player.ShackCameraByPosition(1); } if (other.tag.Equals(GameTag.CameraStop)) { if (ioo.gameMode.State == GameState.Back) { SlowDown = true; } } }