예제 #1
0
    public override void _PhysicsProcess(float delta)
    {
        if (!exploded)
        {
            Vector3 velocity = Vector3.Forward * speed;

            var collision = MoveAndCollide(velocity * delta, testOnly: true);

            if (collision != null)
            {
                Explode();
                if (collision.Collider is CollisionObject &&
                    !(collision.Collider is BulletPhysics)
                    )
                {
                    ((CollisionObject)(collision.Collider)).QueueFree();
                }

                if (collision.Collider is Enemy)
                {
                    var scoreCount = GetTree().Root.GetNode <ScoreCount>("World/Camera/ScoreCount");
                    scoreCount.IncrementScore();
                }
            }

            bulletParent.Translate(velocity * delta);
        }
    }