- Home /
Question by
emiratakans · Nov 09, 2020 at 02:42 PM ·
gunshootautomaticedit
Automatic Shooting Script
I am shooting by mouse fire 1 button but i want my player attack to enemy automathic without any press button. How can i write script about automatic shooting gun please help my code is
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Weapon : MonoBehaviour {
public float fireRate = 0;
public float Damage = 10;
public LayerMask whatToHit;
public Transform BulletTrailPrefab;
public Transform MuzzleFlashPrefab;
float timeToSpawnEffect = 0;
public float effectSpawnRate = 10;
float timeToFire = 0;
Transform firePoint;
// Start is called before the first frame update
void Awake()
{
firePoint = transform.Find("FirePoint");
if (firePoint == null)
{
Debug.LogError("No firepoint!! WHAT !!");
}
}
// Update is called once per frame
void Update()
{
if (fireRate == 0)
{
if (Input.GetButtonDown("Fire1"))
{
Shoot();
}
}
else
{
if(Input.GetButton ("Fire1") && Time.time > timeToFire)
{
timeToFire = Time.time + 1 / fireRate;
Shoot();
}
}
}
void Shoot()
{
Vector2 mousePosition = new Vector2(Camera.main.ScreenToWorldPoint(Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y);
Vector2 firePointPosition = new Vector2(firePoint.position.x, firePoint.position.y);
RaycastHit2D hit = Physics2D.Raycast(firePointPosition, mousePosition - firePointPosition, 100, whatToHit);
if (Time.time >= timeToSpawnEffect)
{
Effect();
timeToSpawnEffect = Time.time + 1 / effectSpawnRate;
}
Debug.DrawLine(firePointPosition, (mousePosition - firePointPosition) * 100, Color.cyan);
if (hit.collider != null)
{
Debug.DrawLine(firePointPosition, hit.point, Color.red);
Debug.Log("We hit" + hit.collider.name + "and did" + Damage + "damage.");
}
}
void Effect ()
{
Instantiate(BulletTrailPrefab, firePoint.position, firePoint.rotation);
Transform clone = Instantiate(MuzzleFlashPrefab, firePoint.position, firePoint.rotation) as Transform;
clone.parent = firePoint;
float size = Random.Range(0.6f, 0.9f);
clone.localScale = new Vector3(size, size, size);
Destroy(clone.gameObject, 0.02f);
}
} ,how can i write script automatic shooting my code is:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Weapon : MonoBehaviour {
public float fireRate = 0;
public float Damage = 10;
public LayerMask whatToHit;
public Transform BulletTrailPrefab;
public Transform MuzzleFlashPrefab;
float timeToSpawnEffect = 0;
public float effectSpawnRate = 10;
float timeToFire = 0;
Transform firePoint;
// Start is called before the first frame update
void Awake()
{
firePoint = transform.Find("FirePoint");
if (firePoint == null)
{
Debug.LogError("No firepoint!! WHAT !!");
}
}
// Update is called once per frame
void Update()
{
if (fireRate == 0)
{
if (Input.GetButtonDown("Fire1"))
{
Shoot();
}
}
else
{
if(Input.GetButton ("Fire1") && Time.time > timeToFire)
{
timeToFire = Time.time + 1 / fireRate;
Shoot();
}
}
}
void Shoot()
{
Vector2 mousePosition = new Vector2(Camera.main.ScreenToWorldPoint(Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y);
Vector2 firePointPosition = new Vector2(firePoint.position.x, firePoint.position.y);
RaycastHit2D hit = Physics2D.Raycast(firePointPosition, mousePosition - firePointPosition, 100, whatToHit);
if (Time.time >= timeToSpawnEffect)
{
Effect();
timeToSpawnEffect = Time.time + 1 / effectSpawnRate;
}
Debug.DrawLine(firePointPosition, (mousePosition - firePointPosition) * 100, Color.cyan);
if (hit.collider != null)
{
Debug.DrawLine(firePointPosition, hit.point, Color.red);
Debug.Log("We hit" + hit.collider.name + "and did" + Damage + "damage.");
}
}
void Effect ()
{
Instantiate(BulletTrailPrefab, firePoint.position, firePoint.rotation);
Transform clone = Instantiate(MuzzleFlashPrefab, firePoint.position, firePoint.rotation) as Transform;
clone.parent = firePoint;
float size = Random.Range(0.6f, 0.9f);
clone.localScale = new Vector3(size, size, size);
Destroy(clone.gameObject, 0.02f);
}
}
Comment
Your answer
Follow this Question
Related Questions
Automatic Shooting Script 2 Answers
Trouble with script to fire a bullet from a handgun 1 Answer
Troubles With A Shoot Script 1 Answer
Raycasting to the middle of the screen? 2 Answers
Shoot only once when clicked 1 Answer