# Correctly positioning the start of projectile position

I have the following code;

``````    if (Bullet == null)

GameObject o = GameObject.FindGameObjectWithTag("Player");
var player = o.transform;

var shootPos = player.position + player.forward * 0.9f;
//Position the bullet to come from the middle of the player
//shootPos.z = shootPos.z - 1.0f;
//shootPos.x = shootPos.x - 0.5f;

var instance = (GameObject)Instantiate(Bullet, shootPos, player.rotation);

Vector3 bulletDirection = new Vector3(target.position.x-transform.position.x,
0.0f,
target.position.z-transform.position.z ) * bulletSpeed;

//Debug Statements
//print(transform.position);
//print(target.position);
//print(bulletDirection);

instance.rigidbody.velocity = bulletDirection;
``````

Now when I trigger the shot button my projectile is drawn on the screen and moves towards my target. What I am struggling to understand is how to make the projectile start from the center of my â€˜playerâ€™ model, and then to travel in a horizontal plane towards the target. (I have gravity behaviour off). It seems that no matter how I tweak the shootPos I cannot get it to be consistently at the center of the player, nor to move in a horizontal line. (It moves straight, but sometimes goes up at an angle to the horizontal plane.)

I guess this is either down to some bug in my above code, or more likely down to my understanding of the math involved. So can somoen explain to me what I am doing wrong, or what incorrect assumption I have made?

Just a shot in the dark here, but there may be some weird collisions happening inside your character before the projectile leaves.

http://unity3d.com/support/documentation/ScriptReference/Physics.IgnoreCollision.html

Take a look at that function, and see if keeping the collider of your projectile and the collider of your character from colliding helps.