Bullet and shoot problem.

Okay i’m trying to shoot sphere in rotation of shooter and the base position is current shooter position here are my classes.
The problem is that it shoot in random direction…

using UnityEngine;
using System.Collections;

public class bulletMove : MonoBehaviour {
	
	#region --Pubs--
		public int bulletRange;
		public float bulletSpeed;
		public GameObject shooter;
	#endregion
	#region --Privs--
		private Vector3 startPos;
		private Quaternion rotation;
	#endregion
	
	// Use this for initialization
	void Start () {
		shooter = GameObject.FindGameObjectWithTag("Player");
		startPos = shooter.transform.position;
		rotation = shooter.transform.rotation;
	}
	
	// Update is called once per frame
	void Update () {
		float distance = Vector3.Distance(startPos,transform.position);
		Debug.Log(distance);
		float move = bulletSpeed * Time.deltaTime;
		transform.Translate(startPos * move);
		if(distance >=bulletRange)
		{
			Destroy(gameObject);
		}
	}
}
using UnityEngine;
using System.Collections;

public class characterCombat : MonoBehaviour {
	#region --Pubs--
	public GameObject ammo;
	public string weaponName = "H&K";
	public int weaponMinDmg = 4;
	public int weaponMaxDmg = 15;
	#endregion
	#region --Privs--
	#endregion
	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		if(Input.GetKeyDown(KeyCode.F))
		{
			Vector3 playerPosition = new Vector3(transform.position.x,transform.position.y,transform.position.z);
			Instantiate(ammo,playerPosition,transform.rotation);
		}
	}
}

I’m fairly sure you don’t need the contents of the Start function in the bulletMove… the instantiate function should set the position and rotation for the created gameobject. (unless it’s different for c# … I’m a javascript person :slight_smile: )

transform.Translate(startPos * move);
is wrong
you probably want
transform.Translate(transform.forward * move);