- Home /
Firing with the mouse 2D.
Hello, I have a top down 2 dimensional game and all i want to know why my code isn't working when I play the game I know there may be something wrong with the code but, the player has to face the mouse at all times and the player fires in the mouse direction. This is my code:
using UnityEngine;
using System.Collections;
public class PlayerShooting : MonoBehaviour
{
public Rigidbody2D bulletPrefab;
public float attackSpeed = 0.5f;
public float coolDown;
public float bulletSpeed = 500;
public float yValue = 1f; // Used to make it look like it's shot from the gun itself (offset)
public float xValue = 0.2f; // Same as above
// Update is called once per frame
void Start()
{
}
void Update()
{
if (Time.time >= coolDown)
{
if (Input.GetMouseButtonDown("Fire1"))
{
Fire();
}
}
}
void Fire()
{
//Rigidbody2D bPrefab = Instantiate(bulletPrefab,transform.position,Quaternion.identity) as Rigidbody2D;
Rigidbody2D bPrefab = Instantiate(bulletPrefab, new Vector3(transform.position.x + xValue, transform.position.y + yValue, transform.position.z), transform.rotation) as Rigidbody2D;
bPrefab.GetComponent<Rigidbody2D>().AddForce(transform.up * bulletSpeed);
coolDown = Time.time + attackSpeed;
}
}
Any help is much appreciated.
Answer by Khozo · Feb 29, 2016 at 02:17 PM
if (Input.GetMouseButtonDown("Fire1")) should be turned into either
A. if(Input.GetMouseButtonDown(0))
B. if(Input.GetButtonDown("Fire1))
Answer by Salocin19 · Feb 29, 2016 at 04:13 PM
Input.GetMouseButtonDown() takes an integer represented by the following: 0 - left mouse button 1 - right mouse button 2 - middle click
So, your script should use Input.GetMouseButtonDown(0) instead of GetMouseButtonDown("Fire1").
Here's the reference to the Unity Scripting API: http://docs.unity3d.com/ScriptReference/Input.GetMouseButtonDown.html
Your answer
![](https://koobas.hobune.stream/wayback/20220612065829im_/https://answers.unity.com/themes/thub/images/avi.jpg)