// on TRIGGER enter private void OnTriggerEnter(Collider other) { //se o player colidir com a poção && o player não estiver segurando outra poção, PotColi pc = other.GetComponent <PotColi>(); if (other.gameObject.CompareTag("Potion") && holding == false && pc != null && !other.GetComponent <PotColi>().getThrown()) { //segura esta poção: holding = true; other.gameObject.transform.SetParent(holdpoint); other.gameObject.transform.position = holdpoint.position; potionRigidbody = other.gameObject.GetComponent <Rigidbody>(); //K: pra que mexer no isKinematic? potionRigidbody.isKinematic = false; potionRigidbody.gameObject.GetComponent <Collider>().enabled = false; //J: adquire script da poção arremessada e altera o valor de qual time carrega/arremessa a poção potionScript = pc; potionScript.setThrower(throwerTeam); } else if (other.gameObject.CompareTag("Potion") && holding == true && pc != null && !other.GetComponent <PotColi>().getThrown()) { //J: ao colidir com orbe no chão enquanto carrega outra orbe, desativa sua colisão if (numIgnore <= 10) { Debug.Log("Novo Ignorado"); other.enabled = false; numIgnore++; ignorados[numIgnore - 1] = other; } } }
private void OnTriggerEnter(Collider other) { //se o objeto colisor for uma poção, trata dos efeitos que ela terá (basicamente contar pontuação) PotColi potion = other.GetComponent <PotColi>(); if (potion != null) { ReceivePotion(potion); } }
//"recebe" uma poção no calderão e ajusta a pontuação de acordo private void ReceivePotion(PotColi potion) { int potionType = (int)potion.potionType; int throwerTeam = potion.getThrower(); if (gameEnd || throwerTeam < 0) { return; } switch (victoryCondition) { case VictoryCondition.PotionSequence: //K: por enquanto está sendo feito este cast de enum pra int, o que é válido e seguro. Porém, seria mais organizado mudar tudo logo //J: se a orbe jogada é o objetivo atual do time, marca ponto. Também impede erros caso uma orbe spawne dentro do poço if (potionType == objective[teamObjIndex[throwerTeam]]) { if (potionType == objective[teamObjIndex[throwerTeam]]) { teamObjIndex[throwerTeam]++; Debug.Log("team " + throwerTeam + " scores!"); } } break; case VictoryCondition.FirstToMaxPoints: teamPoints[throwerTeam] += potion.pointValueOnCauldron; break; default: Debug.LogError("Victory condition not implemented!"); break; } if (HasWonGame(throwerTeam)) { Debug.Log("team " + throwerTeam + " wins!"); gameEnd = true; victoriousTeam = throwerTeam; } }