I am working on a 2d Game. player shoot at mouse click
My code doesn’t work accurately
Weapon
using UnityEngine;
using System.Collections;
public class Weapon : MonoBehaviour
{
#region Varabiles
[SerializeField]
private Transform firePoint, bulletTrail;
[SerializeField] float waitForNextFire, fireCounter;
[SerializeField] bool canFire;
[SerializeField]
private LayerMask hitLayerMask;
Vector2 mousePos, firePointPosition;
public int bulletCount;
private int maxBullets;
#endregion
#region Unity Methods
void Awake ()
{
firePoint = transform.Find("Fire Point");
if(firePoint == null)
Debug.LogError("fire point missing");
fireCounter = waitForNextFire;
maxBullets = 10;
bulletCount = maxBullets;
}
void Update ()
{
fireCounter -= Time.deltaTime;
if(Input.GetMouseButtonDown(0))
{
bulletCount--;
if (bulletCount >= 0)
Shoot();
fireCounter = waitForNextFire;
}
}
#endregion
#region Methods
void Shoot()
{
mousePos = new Vector2(Camera.main.ScreenToWorldPoint(Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y);
firePointPosition = new Vector2(firePoint.position.x, firePoint.position.y);
RaycastHit2D hit = Physics2D.Raycast(firePointPosition, mousePos - firePointPosition, 50f, hitLayerMask);
Instantiate(bulletTrail, firePoint.position, transform.localRotation);
}
#endregion
Bullet
using UnityEngine;
using System.Collections;
public class Bullet : MonoBehaviour
{
private int moveSpeed = 25;
private Vector3 direction;
private void Awake()
{
direction = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
Debug.Log("bullet rotation" + transform.localRotation);
}
void Update ()
{
// transform.Translate(direction * Time.deltaTime * moveSpeed);
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
Destroy(gameObject, 2f);
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "Enemy")
{
Destroy(this.gameObject);
}
}
}
HELP PLEASE