void OnCollisionEnter(Collision other) { if (other.gameObject.tag == "Player2") { if (state == CharacterBehavior.states.JUMP) { CharacterBehavior cb = other.gameObject.GetComponent <CharacterBehavior>(); if (cb != null) { // if (cb.transform.localPosition.y > characterBehavior.transform.localPosition.y) return; if (cb.state != CharacterBehavior.states.RUN) { return; } if (cb.isOver != null) { return; } if (isOver != null) { return; } //print("Player " + player.id + " con " + cb.player.id); cb.OnAvatarStartCarringSomeone(this); OnAvatarOverOther(cb); } } } }
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(); } } }