void OnCollision(OnPhysicsObjectCollide collisionInfo) { if (collisionInfo.Collided.tag == "Player") { if (collisionInfo.Collided.name != Shooter.name) { try { _pool.Despawn(this); } catch (Exception e) { print(e.ToString()); } } else { if (this.bounceCount >= bulletInfo.MaxBounces) { try { _pool.Despawn(this); } catch (Exception e) { print(e.ToString()); } } else { bounceCount += 1; } } } else if (collisionInfo.Collider.tag == "Wall") { if (this.bounceCount >= bulletInfo.MaxBounces) { try { _pool.Despawn(this); } catch (Exception e) { print(e.ToString()); } } else { bounceCount += 1; } } }
void OnCollision(OnPhysicsObjectCollide collisionInfo) //Forma atual de fazer um "callback" para colisões { if (collisionInfo.Collider.tag == "Bullet" && collisionInfo.Collided.gameObject == this.gameObject) { Bullet bi = collisionInfo.Collider.GetComponent <Bullet>(); if ((this.gameObject != bi.Shooter) || bi.bulletInfo.CanDamageShooter) // O dano só é aplicado caso este objeto não seja o atirador OU caso esta bala possa causar dano ao próprio atirador, como é com a KillerQueen { TakeDamage(bi.bulletInfo.Damage); customCollision.eventBus.Publish <OnDamageTaken>(new OnDamageTaken(CurrentHealth, gameObject.GetComponent <Player>())); } } }
/// <summary> /// Retornando o BasicPhysicsObject pois assim podemos retornar qualquer classe derivada dele /// (CircleCustomCollider e SquareCustomCollider) e tambem conseguimos acessar /// o GameObject em que o colisor esta anexado. /// </summary> public void OnCustomCollision(OnPhysicsObjectCollide collisionInfo) { }