void OnCollisionEnter(Collision col) { if (state == BullState.DYING) { return; } if (col.gameObject.tag == "Player") { hitSFX.Play(); UpdateIdle(); } else if (col.gameObject.tag == "Hologram" || col.gameObject.tag == "Marker" || col.gameObject.tag == "Debris") { } else if (col.gameObject.tag == "Pillar") { state = BullState.DYING; dest = col.transform.position; home = transform.position; toOther = dest - home; } else { if (state == BullState.CHARGE) { hitSFX.Play(); state = BullState.STUNNED; stunStart = Time.time; nav.Stop(); confusedStars.SetActive(true); } } }
void UpdateIdle() { state = BullState.IDLE; nav.speed = 3.5f; exclamation.SetActive(false); nav.SetDestination(dest); }
void OnTriggerStay(Collider col) { if (state == BullState.DYING) { return; } if (state == BullState.IDLE) { if (col.tag == "Player" || col.tag == "Hologram") { exclamation.SetActive(true); target = col.gameObject; home = target.transform.position; toOther = target.transform.position - transform.position; state = chargeDisabled ? BullState.FOLLOW : BullState.CHARGE; } } if (col.tag == "Wall" || col.tag == "Pillar") { CookNewDest(); nav.SetDestination(dest); } }