Unity 5 How to destroy Enemy and not Ground in C#
using UnityEngine;
using System.Collections;
public class Attack : MonoBehaviour
{
public float fireRate = 0;
public float damage = 10;
public LayerMask whatToHit;
float timeToFire = 0;
Transform firePoint;
// Use this for initialization
void Awake()
{
firePoint = transform.FindChild("FirePoint");
if (firePoint == null)
{
Debug.LogError("No firepoint");
}
}
// 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, 500, whatToHit);
Debug.DrawLine(firePointPosition, (mousePosition - firePointPosition) * 100000, Color.yellow);
if (hit.collider != null)
{
Debug.DrawLine(firePointPosition, hit.point, Color.red);
Debug.Log("Hit " + hit.collider.name + " and did " + damage + " damage.");
}
if (hit.collider == (gameObject.CompareTag("Ground")))
{
Debug.Log("Hit ground");
} else
{
GameObject.Destroy(hit.collider.gameObject);
}
}
}
Comment