хотел я сделать стрельбу для персонажа, и добавить такой хот бар в котором хранится и отображается значение "int value", и надо чтоб при выстреле (функция которого в скрипте "Gun" ) в другом скрипте ("ProgressBarComponent") убавлялась эта самая value. Прошу помогите!(в скрипте есть мои попытки сделать это)
скрипт ProgressBarComponent :
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class ProgressBarComponent : MonoBehaviour
{
[Header("UI Elements")]
[SerializeField] private Image image;
[Header("Properties")]
public int value = 0;
private int maxValue = 50;
private bool isCorrectlyConfigured = false;
public Transform shotpos;
public GameObject Bullet;
private void Start()
{
StartCoroutine(addScore());
}
private void Awake()
{
if (image.type == Image.Type.Filled & image.fillMethod == Image.FillMethod.Horizontal)
{
isCorrectlyConfigured = true;
}
else
{
Debug.Log("{GameLog} => [ProgressBarController] - (<color=red>Error</color>) -> Components Parameters Are Incorrectly Configured! \n" +
"Required Type: Filled \n" +
"Required FillMethod: Horizontal");
}
}
private void LateUpdate()
{
if (!isCorrectlyConfigured) return;
image.fillAmount = (float) value / maxValue;
}
public void SetValue(int value) => this.value = value;
public void SetMaxValue(int maxValue) => this.maxValue = maxValue;
private IEnumerator addScore()
{
while (true)
{
yield return new WaitForSeconds(1);
if (value < 50)
{
value++;
}
}
}
скрипт Gun:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Gun : MonoBehaviour
{
public float offset;
public Transform shotpos;
public GameObject Bullet;
void Update()
{
Vector3 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
float rotZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0f, 0f, rotZ + offset);
}
public void Fire(int value)
{
if (Input.GetMouseButton(0) && value > 4)
{
Instantiate(Bullet, shotpos.position, transform.rotation);
value -= 5;
}
}
}
дискорд для связи: kontay#7833