Не понимаю как через такой скрипт передать информацию об уроне в другой скрипт
Вот скрипт выстрела
using UnityEngine;
public class Weapon : MonoBehaviour
{
[SerializeField] private float _gunDammage;
[SerializeField] private float _fireDistance;
[SerializeField] private GameObject player;
private bool _haveHoot;
private RaycastHit hitData;
private void Update()
{
FireRay();
GunShoot();
}
private void GunShoot()
{
if (Input.GetMouseButtonDown(0))
{
if (hitData.transform.tag == TagEnum.Enemy.ToString() && _haveHoot)
{
}
}
}
private void FireRay()
{
Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0));
Physics.Raycast(ray, out hitData);
float x = hitData.transform.position.x - player.transform.position.x;
float y = hitData.transform.position.y - player.transform.position.y;
if (x <= _fireDistance && y <= _fireDistance)
_haveHoot = true;
else
_haveHoot = false;
}
}
Вот скрип который должен принимать этот урон
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyHealt : MonoBehaviour
{
[SerializeField] private float _enemyHealth;
private void Update()
{
if(_enemyHealth <= 0)
{
_enemyHealth = 0;
Destroy(gameObject);
}
}
}
Ответы (1 шт):
Автор решения: Александр Шаповалов
→ Ссылка
Так, вот решение всем спасибо
private void GunShoot()
{
if (Input.GetMouseButtonDown(0))
{
FireRay();
if (hitData.transform.tag == TagEnum.Enemy.ToString() && _haveHoot)
{
hitData.transform.GetComponent<EnemyHealt>().ApplyDamage(_gunDammage);
}
}
}
public void ApplyDamage(float damage)
{
_enemyHealth -= damage;
}
private void Update()
{
if(_enemyHealth <= 0)
{
_enemyHealth = 0;
Destroy(gameObject);
}
}