# Ballistic bullet

## Problem

You want a 2D bullet that travels in an arc, or ballistic curve.

## Solution

One approach to this problem would be to use a `RigidBody2D` - with its built-in physics, gravity would automatically pull it back to earth after firing it.

However, as mentioned in the 2D shooting recipe, `Area2D` is a great choice for simple bullets and other projectiles - when you don’t need collisions, bouncing, or other physics reactions. Ballistic motion is easy enough to calculate that we won’t need the help of the physics engine.

### Setting up the bullet

``````- Bullet (Area2D)
- Sprite
- CollisionShape2D
``````

We can use `Area2D`’s `gravity` property. Set it to `150` for the initial test.

``````extends Area2D

var velocity = Vector2(350, 0)

func _process(delta):
velocity.y += gravity * delta
position += velocity * delta
rotation = velocity.angle()

func _on_BallisticBullet_body_entered(body):
queue_free()
``````

Using the standard equations of motion is all we need to do here. The initial value for `velocity` is just for testing. Run the bullet scene:

Now in your object that’s doing the shooting, you can instance the bullet and set its initial properties. Put this in whatever function/input handles shooting:

``````export var muzzle_velocity = 350
export var gravity = 250

func shoot():
var b = Bullet.instance()