void OnTriggerEnter(Collider other)
    {
        if (!isActive)
        {
            return;
        }
        if (exploted)
        {
            return;
        }

        switch (other.tag)
        {
        case "wall":
            addExplotionWall();
            SetScore(180);
            Destroy();
            break;

        case "floor":
            addExplotion(0.2f);
            SetScore(100);
            Destroy();
            break;

        case "enemy":
            MmoCharacter enemy = other.gameObject.GetComponent <MmoCharacter> ();

            //esto funca para los bosses:-----------------------
            if (enemy)
            {
                if (enemy.state == MmoCharacter.states.DEAD)
                {
                    return;
                }
                SetScore(enemy.score);
                enemy.Die();
            }
            else
            {
                other.gameObject.SendMessage("breakOut", other.gameObject.transform.position, SendMessageOptions.DontRequireReceiver);
            }
            //---------------------------------------------------

            Destroy();
            break;

        case "destroyable":
            SetScore(70);
            other.gameObject.SendMessage("breakOut", other.gameObject.transform.position, SendMessageOptions.DontRequireReceiver);
            Destroy();
            break;

        case "boss":
            SetScore(120);
            other.gameObject.SendMessage("breakOut", other.gameObject.transform.position, SendMessageOptions.DontRequireReceiver);
            Destroy();
            break;

        case "firewall":
            //SetScore(70);
            //	other.gameObject.SendMessage("breakOut",other.gameObject.transform.position, SendMessageOptions.DontRequireReceiver);
            Vector3 rot = transform.localEulerAngles;
            rot.y += 180 + other.gameObject.GetComponentInParent <SceneObject>().transform.localEulerAngles.y;
            transform.localEulerAngles = rot;
            break;

        case "Player":
            if (Data.Instance.playMode != Data.PlayModes.VERSUS)
            {
                return;
            }
            CharacterBehavior cb = other.gameObject.GetComponentInParent <CharacterBehavior> ();
            if (cb == null ||
                cb.player.id == playerID ||
                cb.state == CharacterBehavior.states.CRASH ||
                cb.state == CharacterBehavior.states.FALL ||
                cb.state == CharacterBehavior.states.DEAD)
            {
                return;
            }

            //chequea si el projectil es del otro team
            if (team_for_versus == cb.team_for_versus)
            {
                return;
            }

            Data.Instance.GetComponent <FramesController> ().ForceFrameRate(0.05f);
            Data.Instance.events.RalentaTo(1, 0.05f);
            cb.Hit();
            Destroy();
            break;
        }
    }
    void OnTriggerEnter(Collider other)
    {
        if (characterBehavior == null)
        {
            return;
        }
        if (
            characterBehavior.state == CharacterBehavior.states.DEAD ||
            characterBehavior.state == CharacterBehavior.states.CRASH ||
            characterBehavior.state == CharacterBehavior.states.FALL
            )
        {
            return;
        }

        if (other.tag == "wall" || other.tag == "firewall")
        {
            if (characterBehavior.state == CharacterBehavior.states.SHOOT)
            {
                return;
            }
            if (player.fxState == Player.fxStates.NORMAL)
            {
                characterBehavior.data.events.AddExplotion(transform.position, Color.red);
                characterBehavior.Hit();
            }
            //  else
            //   other.GetComponent<WeakPlatform>().breakOut(transform.position);
        }
        if (other.tag == "destroyable")
        {
            if (characterBehavior.state == CharacterBehavior.states.SHOOT)
            {
                return;
            }
            if (player.fxState == Player.fxStates.NORMAL)
            {
                Breakable breakable = other.GetComponent <Breakable> ();
                if (breakable != null)
                {
                    if (breakable.ifJumpingDontKill && characterBehavior.IsJumping() && breakable.transform.position.y < transform.position.y)
                    {
                        characterBehavior.SuperJumpByHittingSomething();
                    }
                    else if (!breakable.dontKillPlayers)
                    {
                        characterBehavior.HitWithObject(other.transform.position);
                    }
                }
            }
        }
        else if (other.tag == "floor")
        {
            CharacterAnimationForcer chanimF = other.GetComponent <CharacterAnimationForcer> ();
            if (chanimF != null)
            {
                switch (chanimF.characterAnimation)
                {
                case CharacterAnimationForcer.animate.SLIDE:
                    characterBehavior.Slide();
                    break;
                }
            }
            float difY = transform.position.y - other.transform.position.y;

            if (other.transform.eulerAngles.x == 0 && difY < 1.6f)
            {
                //si es una plataforma rotada se va:
                SceneObject so = other.transform.GetComponentInParent <SceneObject>();
                if (so != null && so.transform.localEulerAngles != Vector3.zero)
                {
                    return;
                }

                Vector3 pos = characterBehavior.transform.position;
                if (difY < -0.5f)
                {
                    characterBehavior.Hit();
                    return;
                }
                else if (difY < 0.15f)
                {
                    characterBehavior.SuperJumpByBumped(2600, 0.5f, false);
                }
                else if (difY < 0.5f)
                {
                    characterBehavior.SuperJumpByBumped(2000, 0.5f, false);
                }
                else
                {
                    characterBehavior.SuperJumpByBumped(1200, 0.5f, false);
                }

                pos.y += difY;
                characterBehavior.transform.position = pos;
            }
        }
        else if (other.tag == "enemy")
        {
            print("______________" + characterBehavior.state + characterBehavior.IsJumping());

            if (characterBehavior.IsJumping())
            {
                MmoCharacter mmoCharacter = other.GetComponent <MmoCharacter> ();
                if (mmoCharacter != null)
                {
                    other.GetComponent <MmoCharacter> ().Die();
                }
                characterBehavior.SuperJumpByBumped(920, 0.5f, false);
                return;
            }
            if (player.fxState == Player.fxStates.NORMAL)
            {
                characterBehavior.Hit();
            }
        }
        else if (
            other.tag == "fallingObject" &&
            characterBehavior.state != CharacterBehavior.states.FALL
            )
        {
            if (player.fxState == Player.fxStates.NORMAL)
            {
                characterBehavior.Hit();
            }
        }
    }
    void OnTriggerEnter(Collider other)
    {
        if (characterBehavior == null)
        {
            return;
        }
        if (characterBehavior.state == CharacterBehavior.states.DEAD)
        {
            return;
        }
        if (characterBehavior.state == CharacterBehavior.states.CRASH)
        {
            return;
        }
        if (characterBehavior.state == CharacterBehavior.states.FALL)
        {
            return;
        }
        if (other.tag == "Player")
        {
            if (characterBehavior.state == CharacterBehavior.states.JUMP)
            {
                if (other.GetComponent <CharacterCollisions>())
                {
                    CharacterBehavior cb = other.GetComponent <CharacterCollisions>().characterBehavior;

                    // if (cb.transform.localPosition.y > characterBehavior.transform.localPosition.y) return;
                    if (cb.state != CharacterBehavior.states.RUN)
                    {
                        return;
                    }
                    if (cb.isOver != null)
                    {
                        return;
                    }
                    if (characterBehavior.isOver != null)
                    {
                        return;
                    }

                    print("Player " + player.id + " con " + cb.player.id);
                    cb.OnAvatarStartCarringSomeone(characterBehavior);
                    characterBehavior.OnAvatarOverOther(cb);
                }
            }
        }
        else
        if (other.tag == "wall" || other.tag == "firewall")
        {
            if (characterBehavior.state == CharacterBehavior.states.SHOOT)
            {
                return;
            }
            if (player.fxState == Player.fxStates.NORMAL)
            {
                characterBehavior.data.events.AddExplotion(transform.position, Color.red);
                characterBehavior.Hit();
            }
            else
            {
                other.GetComponent <WeakPlatform>().breakOut(transform.position);
            }
        }
        if (other.tag == "destroyable")
        {
            if (characterBehavior.state == CharacterBehavior.states.SHOOT)
            {
                return;
            }
            if (player.fxState == Player.fxStates.NORMAL)
            {
                if (!other.GetComponent <Breakable>().dontKillPlayers)
                {
                    characterBehavior.HitWithObject(other.transform.position);
                }
            }
        }
        else if (other.tag == "floor" && !hitted)
        {
            if (transform.position.y - other.transform.position.y < 0f)
            {
                //  characterBehavior.Hit();
            }
            else
            {
                hitted = true;
                characterBehavior.SuperJumpByBumped(1200, 0.5f, false);
                Invoke("resetHits", 1);
            }
            if (other.GetComponent <WeakPlatform>())
            {
                other.GetComponent <WeakPlatform>().breakOut(characterBehavior.transform.position);
            }
        }
        else if (
            other.tag == "enemy" &&
            characterBehavior.state != CharacterBehavior.states.JUMP &&
            characterBehavior.state != CharacterBehavior.states.DOUBLEJUMP &&
            characterBehavior.state != CharacterBehavior.states.SHOOT &&
            characterBehavior.state != CharacterBehavior.states.FALL
            )
        {
            if (player.fxState == Player.fxStates.NORMAL && characterBehavior.state != CharacterBehavior.states.JETPACK)
            {
                characterBehavior.Hit();
            }

            MmoCharacter mmoCharacter = other.GetComponent <MmoCharacter> ();
            if (mmoCharacter != null)
            {
                other.GetComponent <MmoCharacter>().Die();
            }
        }
        else if (
            other.tag == "fallingObject" &&
            characterBehavior.state != CharacterBehavior.states.FALL
            )
        {
            if (player.fxState == Player.fxStates.NORMAL && characterBehavior.state != CharacterBehavior.states.JETPACK)
            {
                characterBehavior.Hit();
            }
        }
    }
    void OnTriggerEnter(Collider other)
    {
        if (characterBehavior == null)
        {
            return;
        }
        if (
            characterBehavior.state == CharacterBehavior.states.DEAD ||
            characterBehavior.state == CharacterBehavior.states.CRASH ||
            characterBehavior.state == CharacterBehavior.states.FALL
            )
        {
            return;
        }

        if (other.tag == "wall" || other.tag == "firewall")
        {
            if (characterBehavior.state == CharacterBehavior.states.SHOOT)
            {
                return;
            }
            if (player.fxState == Player.fxStates.NORMAL)
            {
                Data.Instance.events.AddExplotion(transform.position, Color.red);
                characterBehavior.Hit();
            }
        }
        if (other.tag == "destroyable")
        {
            if (characterBehavior.state == CharacterBehavior.states.SHOOT)
            {
                return;
            }
            if (player.fxState == Player.fxStates.NORMAL)
            {
                Breakable breakable = other.GetComponent <Breakable> ();
                if (breakable != null)
                {
                    if (breakable.ifJumpingDontKill && characterBehavior.IsJumping() && breakable.transform.position.y < transform.position.y)
                    {
                        characterBehavior.SuperJumpByHittingSomething();
                    }
                    else if (!breakable.dontKillPlayers)
                    {
                        characterBehavior.HitWithObject(other.transform.position, false);//breakable.killAtHit);
                    }
                }
            }
        }
        else if (other.tag == "floor")
        {
            CharacterAnimationForcer chanimF = other.GetComponent <CharacterAnimationForcer> ();
            if (chanimF != null)
            {
                switch (chanimF.characterAnimation)
                {
                case CharacterAnimationForcer.animate.SLIDE:
                    characterBehavior.Slide();
                    break;
                }
            }
            float difY = transform.position.y - other.transform.position.y;

            if (other.transform.localEulerAngles.z > -0.9f && other.transform.localEulerAngles.z < 0.9f)
            {
                if (other.transform.eulerAngles.x == 0 && difY < 0.8f)
                {
                    Vector3 pos = characterBehavior.transform.position;
                    if (difY < -1.55f)
                    {
                        characterBehavior.Hit();
                        return;
                    }
                    else if (difY < -0.5f)
                    {
                        characterBehavior.SuperJumpByBumped(2400, 0.5f, false);
                    }
                    else if (difY < 0)
                    {
                        characterBehavior.SuperJumpByBumped(2000, 0.5f, false);
                    }
                    else
                    {
                        characterBehavior.SuperJumpByBumped(1200, 0.5f, false);
                    }

                    pos.y += difY;
                    characterBehavior.transform.position = pos;
                }
            }
        }
        else if (other.tag == "enemy")
        {
            MmoCharacter mmoCharacter = other.GetComponent <MmoCharacter> ();
            if (mmoCharacter != null)
            {
                other.GetComponent <MmoCharacter> ().Die();
            }
            if (characterBehavior.IsJumping())
            {
                characterBehavior.SuperJumpByBumped(920, 0.5f, false);
                return;
            }
            else if (player.fxState == Player.fxStates.NORMAL)
            {
                characterBehavior.HitWithObject(other.transform.position, false);
            }
        }
        else if (
            other.tag == "fallingObject" &&
            characterBehavior.state != CharacterBehavior.states.FALL
            )
        {
            if (player.fxState == Player.fxStates.NORMAL)
            {
                characterBehavior.HitWithObject(other.transform.position, false);
            }
        }
    }
Exemple #5
0
    void OnTriggerEnter(Collider other)
    {
        if (!isActive)
        {
            return;
        }
        if (exploted)
        {
            return;
        }
        Breakable breakable;

        switch (other.tag)
        {
        case "wall":
            addExplotionWall();
            SetScore(ScoresManager.score_for_destroying_wall, ScoresManager.types.DESTROY_WALL);
            ResetProjectil();
            break;

        case "floor":
            addExplotion(0.2f);
            SetScore(ScoresManager.score_for_destroying_floor, ScoresManager.types.DESTROY_FLOOR);
            ResetProjectil();
            break;

        case "enemy":
            MmoCharacter enemy = other.gameObject.GetComponent <MmoCharacter> ();
            //esto funca para los bosses:-----------------------
            if (enemy)
            {
                if (enemy.state == MmoCharacter.states.DEAD)
                {
                    return;
                }
                // Debug.Log(other.gameObject.name + " total:  score_for_breaking " + ScoresManager.score_for_breaking + "score: " + enemy.score);

                SetScore(ScoresManager.score_for_killing + enemy.score, ScoresManager.types.KILL);
                enemy.Die();
            }
            else
            {
                breakable = other.gameObject.GetComponent <Breakable>();
                breakable.breakOut(other.gameObject.transform.position, true);
                //  Debug.Log(other.gameObject.name + "   score_for_breaking " + ScoresManager.score_for_breaking + "score: " + breakable.GetSceneObject().score);

                SetScore(ScoresManager.score_for_killing + breakable.GetSceneObject().score, ScoresManager.types.KILL);
                //other.gameObject.SendMessage("breakOut",other.gameObject.transform.position, SendMessageOptions.DontRequireReceiver);
            }
            //---------------------------------------------------

            ResetProjectil();
            break;

        case "destroyable":
            breakable = other.gameObject.GetComponent <Breakable>();
            int total = ScoresManager.score_for_breaking + breakable.GetSceneObject().score;
            //Debug.Log(other.gameObject.name + " total: " + total + "   score_for_breaking " + ScoresManager.score_for_breaking + "score: " + breakable.GetSceneObject().score);
            SetScore(total, ScoresManager.types.BREAKING);
            breakable.breakOut(other.gameObject.transform.position, true);
            // other.gameObject.SendMessage("breakOut",other.gameObject.transform.position, SendMessageOptions.DontRequireReceiver);
            ResetProjectil();
            break;

        case "boss":
            SetScore(ScoresManager.score_for_boss, ScoresManager.types.BOSS);
            other.gameObject.GetComponent <Boss>().breakOut();

            // other.gameObject.SendMessage("breakOut",other.gameObject.transform.position, SendMessageOptions.DontRequireReceiver);
            ResetProjectil();
            break;

        case "firewall":
            //SetScore(70);
            //	other.gameObject.SendMessage("breakOut",other.gameObject.transform.position, SendMessageOptions.DontRequireReceiver);
            Vector3 rot = transform.localEulerAngles;
            rot.y += 180 + other.gameObject.GetComponentInParent <SceneObject>().transform.localEulerAngles.y;
            transform.localEulerAngles = rot;
            break;

        case "Player":
            if (Data.Instance.playMode != Data.PlayModes.VERSUS)
            {
                return;
            }
            CharacterBehavior cb = other.gameObject.GetComponentInParent <CharacterBehavior> ();
            if (cb == null ||
                cb.player.id == playerID ||
                cb.state == CharacterBehavior.states.CRASH ||
                cb.state == CharacterBehavior.states.FALL ||
                cb.state == CharacterBehavior.states.DEAD)
            {
                return;
            }

            //chequea si el projectil es del otro team
            //if (team_for_versus == cb.team_for_versus)
            //	return;

            Data.Instance.framesController.ForceFrameRate(0.05f);
            Data.Instance.events.RalentaTo(1, 0.05f);
            cb.Hit();
            ResetProjectil();
            break;
        }
    }
Exemple #6
0
    void OnTriggerEnter(Collider other)
    {
        if (!isActive)
        {
            return;
        }
        if (exploted)
        {
            return;
        }

        switch (other.tag)
        {
        case "wall":
            addExplotionWall();
            Reset();
            break;

        case "floor":
            addExplotion(0.2f);
            Reset();
            break;

        case "enemy":
            MmoCharacter enemy = other.gameObject.GetComponent <MmoCharacter> ();

            if (enemy)
            {
                if (enemy.state == MmoCharacter.states.DEAD)
                {
                    return;
                }
                enemy.Die();
            }
            else
            {
                other.gameObject.SendMessage("breakOut", other.gameObject.transform.position, SendMessageOptions.DontRequireReceiver);
            }
            Reset();
            break;

        case "destroyable":
            other.gameObject.SendMessage("breakOut", other.gameObject.transform.position, SendMessageOptions.DontRequireReceiver);
            Reset();
            break;

        case "boss":
            other.gameObject.SendMessage("breakOut", other.gameObject.transform.position, SendMessageOptions.DontRequireReceiver);
            Reset();
            break;

        case "firewall":
            Vector3 rot = transform.localEulerAngles;
            rot.y += 180 + other.gameObject.GetComponentInParent <SceneObject>().transform.localEulerAngles.y;
            transform.localEulerAngles = rot;
            break;

        case "Player":
            if (Data.Instance.playMode != Data.PlayModes.VERSUS)
            {
                return;
            }
            CharacterBehavior cb = other.gameObject.GetComponentInParent <CharacterBehavior> ();
            if (cb == null ||
                cb.state == CharacterBehavior.states.CRASH ||
                cb.state == CharacterBehavior.states.FALL ||
                cb.state == CharacterBehavior.states.DEAD)
            {
                return;
            }

            Data.Instance.GetComponent <FramesController> ().ForceFrameRate(0.05f);
            Data.Instance.events.RalentaTo(1, 0.05f);
            cb.Hit();
            Reset();
            break;
        }
    }