- 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