- Home /
Move bullet in the same direction of mouse
Hi i am making a 2D tower-defense game where obviously you have to shoot bullets at enemies. My problem is that when i press the shoot button the bullets get stuck at the spawnpoint.I think this issue is caused by a bad command i wrote. Here's the script that handles the spawn and the direction of the bullet. It is attached to the player.
 public class inputs : MonoBehaviour {
     public GameObject proi1; //bullet
     public Vector3 mousePos;
     public Vector3 posProi1SX; //position of spawn
     public Vector3 posProi1DX; //position of spawn
 
     // Use this for initialization
     void Start () {
     
     }
     
     // Update is called once per frame
     void Update () {
 
         posProi1SX=new Vector3(449.9362f,0.3282555f,0);
         posProi1DX=new Vector3(450.1202f,0.3180127f,0);
         mousePos=Input.mousePosition;
     if(Input.GetMouseButtonDown(0))
         {
             if(mousePos.x<gameObject.transform.position.x)
             {
                 transform.rotation=new Quaternion(0,0,0,0);
                 Instantiate(proi1,posProi1SX,Quaternion.identity);
             }
 
              if(mousePos.x>gameObject.transform.position.x)
             {
                 transform.rotation=new Quaternion(0,180,0,0);
                 Instantiate(proi1,posProi1DX,Quaternion.identity);
 
         }
             proi1.transform.position=Vector3.MoveTowards(transform.position,Input.mousePosition,4*Time.deltaTime); //Is this the error??
         }
     }
 }
the bullets should move towards the mouse,in the same direction.
What's wrong?? Please help me i'm stuck in this code by days!!
I found this code that works but when the bullet reaches the mouse it stops.How can i prevent the bullet stops at mouse position?
 Vector2 mousePosition;
     // Use this for initialization
     void Start () {
     mousePosition = Camera.main.ScreenToWorldPoint (Input.mousePosition);
 
     }
     
     // Update is called once per frame
     void Update () {
 
             moving=true;
             transform.position = Vector2.$$anonymous$$oveTowards (transform.position, mousePosition, 5*Time.deltaTime);
     }
 
 
 Please reply
Answer by robertbu · Aug 16, 2014 at 10:28 PM
Your second code would only work if you have an Orthographic camera. Here are some changes to keep it moving:
 public float speed = 5.0f;
 Vector3 mousePosition;
 Vector3 direction;
 void Start () {
       mousePosition = Camera.main.ScreenToWorldPoint (Input.mousePosition);
       mousePosition.z = 0.0;
       direction = (mousePosition - transform.position).normalized;
 }
 
 void Update () {
      transform.position += direction * speed * Time.deltaTime;
 }
Your answer
 
 
             Follow this Question
Related Questions
Error destroying prefab 1 Answer
2D Aiming and Shooting at the mouse 3 Answers
How to check for the nearest gameObject in OverLapCircleAll? 1 Answer
2D Animation does not start 1 Answer
Instatiation on the wrong position 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                