Instantiate bullet is offset when Parent rotates

I have a shooting script that works great until the object the Instantiate origin point is parented to rotates. It appears but immediately jumps one direction or the other and continues on its way.

My Hierarchy is:


…Bank Control ( when this rotates, the bullets jump.)

…Ship Model

… Gun (instantiate point)

How do I stop that jumping or offsetting from happening?

In addition, whenever I shoot, my entire player is jolted or jerked. I need to stop that too.

using UnityEngine;
using System.Collections;

public class PlayerAttack : MonoBehaviour {

	public GameObject 	_bullet;				// what is the bullet
	public Transform 	_bulletOrigin1; 			// where the bullet starts
	public Transform 	_bulletOrigin2; 			// where the bullet starts
	public float 		_bulletSpeed = 2f;		// speed of the bullet
	private bool 		_readyToFire = true;    // check if ready to fire
	public float		_rateofFire = .005f;		// establishes rate of fire.

	void Update(){

		// testing whether I am ready to fire
			if (Input.GetButtonDown ("Fire1")) {  	// when I hit my mouse button I want to fire.
				_readyToFire = false;
				StartCoroutine ("WaitandFire");


	void Fire1(){					// Create and shoot bullet.
		// hey! make a bullet
		var _newBullet = (GameObject)Instantiate (_bullet, _bulletOrigin1.position, _bulletOrigin1.rotation);
		// shoot the bullet: give it speed.
		_newBullet.GetComponent<Rigidbody>().AddRelativeForce(Vector3.forward * 500);
	//	_newBullet.GetComponent<Rigidbody> ().velocity = _newBullet.transform.forward * _bulletSpeed;
		// destroy the bullet after a specific amount of time.
		Destroy (_newBullet, 2.0f);  // destroy bullet if it hasn't hit anything after 2 seconds.

	IEnumerator WaitandFire(){		//rate of fire
		Fire1 ();	
	//	Fire2 (); // run Fire Function
		yield return new WaitForSeconds (_rateofFire);  // determines rate of fire
		_readyToFire = true;

well the jolt the player gets, and possibly even the offset, is likely from a physics interaction. try removing the interaction between the player and the bullet.

I tried adding the line below and it doesn’t work. it still collides and jumps.

Physics.IgnoreCollision(_bullet.GetComponent<Collider>(), GetComponent<Collider>());

// and also tried

Physics.IgnoreCollision(_bullet.GetComponent<Collider>(), _player.GetComponent<Collider>());

// added _player as global variable.