Ejemplo n.º 1
0
    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);
        }
    }
Ejemplo n.º 2
0
    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;
            }
        }
    }