Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using UnityEngine;
- public class DamageDealer : MonoBehaviour
- {
- bool canDealDamage;
- List<GameObject> hasDealtDamage;
- [SerializeField] float weaponLength;
- [SerializeField] float weaponDamage;
- void Start()
- {
- canDealDamage = false;
- hasDealtDamage = new List<GameObject>();
- }
- void Update()
- {
- if (canDealDamage)
- {
- RaycastHit hit;
- int layerMask = 1 << 9;
- if (Physics.Raycast(transform.position, -transform.up, out hit, weaponLength, layerMask))
- {
- if (hit.transform.TryGetComponent(out Enemy enemy) && !hasDealtDamage.Contains(hit.transform.gameObject))
- {
- enemy.TakeDamage(weaponDamage);
- enemy.HitVFX(hit.point);
- hasDealtDamage.Add(hit.transform.gameObject);
- }
- }
- }
- }
- public void StartDealDamage()
- {
- canDealDamage = true;
- hasDealtDamage.Clear();
- }
- public void EndDealDamage()
- {
- canDealDamage = false;
- }
- private void OnDrawGizmos()
- {
- Gizmos.color = Color.yellow;
- Gizmos.DrawLine(transform.position, transform.position - transform.up * weaponLength);
- }
- }
Add Comment
Please, Sign In to add comment