private void OnCollisionEnter2D(Collision2D collision) { if (gameObject.layer != 9) { return; } if (collision.collider.GetComponent <Bird>() || collision.collider.GetComponent <BlueBirdClone>() || collision.collider.GetComponent <Egg>()) { return; } if (Mathf.Approximately(RigidbodySelf.gravityScale, 0)) { RigidbodySelf.gravityScale = g; } IPassiveDamageObject passiveDamageObject = collision.collider.GetComponent <IPassiveDamageObject>(); if (passiveDamageObject != null && collision.relativeVelocity.magnitude > criticalSpeed) { if (passiveDamageObject is Obstacle obstacle) { passiveDamageObject.ChangeHp(Damage * DamageCoefficient[(int)System.Enum.Parse(typeof(AttackObstacleType), obstacle.tag)], true); } else { passiveDamageObject.ChangeHp(Damage, true); } } if (State == BehaviorState.Fly) { TrailRenderer.emitting = false; animator.SetTrigger("Damaged"); GameManager.Instance.AudioSystemControl.Play(audioSource, tag + "Hurt"); GameManager.Instance.BirdControlSystemControl.ClearTrail(); StartCoroutine(StopFollowing()); StartCoroutine(DeadBefore()); } if (collision.relativeVelocity.magnitude > criticalSpeed) { SetParticle(); } State = BehaviorState.FinalRoll; }
private void OnCollisionEnter2D(Collision2D collision) { if (hurtState == HurtState.Dead || collision.collider.GetComponent <Bird>() != null) { return; } IPassiveDamageObject damageObject = collision.collider.GetComponent <IPassiveDamageObject>(); float damageAdd = 1.0f; if (collision.relativeVelocity.magnitude > criticalSpeed) { if (damageObject != null) { damageAdd = damageObject.Damage; } ChangeHp((collision.relativeVelocity.magnitude - criticalSpeed) * damageAdd); } }
private void Explosion() { Collider2D[] colliders = Physics2D.OverlapCircleAll(rigidbodySelf.position, explosionRadius); foreach (Collider2D obj in colliders) { Rigidbody2D rigidbody = obj.GetComponent <Rigidbody2D>(); IPassiveDamageObject passiveDamageObject = obj.GetComponent <IPassiveDamageObject>(); if (!rigidbody || passiveDamageObject == null) { continue; } AddForce(rigidbody); passiveDamageObject.Hp -= eggDamage; } rigidbodySelf.velocity = Vector2.zero; rigidbodySelf.isKinematic = true; GameManager.Instance.AudioSystemControl.Play(audioSource, "EggBoom"); animator.SetTrigger("Exp"); }