public override void _PhysicsProcess(float delta) { KinematicCollision2D collision = MoveAndCollide(Direction * Speed * delta, false); if (collision != null) { Object collider = collision.Collider; if (collider is HittablePart) { HittablePart part = (HittablePart)collider; if (part.OnHit(this)) { DidHit(part, collision); return; } } if (collider is Box) { Box box = (Box)collider; box.DoDamage(5); } DisintegrateBullet(collision); } }
private void Explode() { MoonHunter.Instance.AddExplosion(GlobalPosition); SoundManager.Instance.Explosion5AudioPlayer.Play(); Godot.Collections.Array array = damageArea.GetOverlappingBodies(); for (int i = 0; i < array.Count; i++) { if (array[i] is HittablePart) { HittablePart part = (HittablePart)array[i]; part.DoDamage(Damage); } } MoonHunter.Instance.MineExploded(); QueueFree(); }
private void DoDamage() { Godot.Collections.Array array = GetOverlappingBodies(); for (int i = 0; i < array.Count; i++) { if (array[i] is HittablePart) { HittablePart part = (HittablePart)array[i]; part.DoDamage(Damage); } if (array[i] is Box) { Box box = array[i] as Box; box.DoDamage(Damage); } } }
public void DidHit(HittablePart part, KinematicCollision2D collision) { SoundManager.Instance.HitEnemiesAudioPlayer.Play(); QueueFree(); }