【发布时间】:2020-10-13 05:17:11
【问题描述】:
我为我的第三人称玩家创建了一个力场——基本上是一个围绕着他的球体。 我的播放器有耐力花车(curStamina 和 maxStamina)。
我试图弄清楚如何根据玩家当前的耐力自动缩放球体的大小。因此,力场(球体)基本上是对玩家当前拥有的体力(curStamina)的视觉解释,并根据 curStamina 增加或减少大小。
这是我的耐力脚本供参考。任何有关我将如何解决此问题的帮助都将不胜感激!
public class Stamina : MonoBehaviour
{
public float stamina = 100;
public float maxStamina = 100;
public float drainPerSecond = 2.0f, gainPerSecond = 1.0f;
public bool online = false, usingStamina = false;
//public int lives;
public GameObject staminaImagePrefab;
private Transform staminaPanel;
private Image staminaImage;
//private Color lerpedColor; // Not currently used
// Start is called before the first frame update
void Start()
{
if (transform.CompareTag("Player"))
{
staminaPanel = GameObject.FindGameObjectWithTag("StaminaPanel").transform;
GameObject staminaObject = Instantiate(staminaImagePrefab, staminaPanel);
staminaImage = staminaObject.transform.GetChild(1).GetComponent<Image>();
}
}
// Update is called once per frame
void Update()
{
if (usingStamina)
{
DrainStamina();
}
else
{
RegenerateStamina();
}
if (transform.CompareTag("Player"))
{
staminaImage.fillAmount = (float)stamina / maxStamina;
}
}
private void RegenerateStamina()
{
stamina += gainPerSecond * Time.deltaTime;
if (stamina > maxStamina) stamina = maxStamina;
}
public void StaminaDamage(float value)
{
stamina -= value;
}
private void DrainStamina()
{
stamina -= drainPerSecond * Time.deltaTime;
if (stamina < 0)
{
// Out of stamina
stamina = 0;
}
}
public void ResetStamina(float _stamina, float _maxStamina)
{
stamina = _stamina;
maxStamina = _maxStamina;
if (transform.CompareTag("Player"))
{
staminaImage.fillAmount = (float)stamina / maxStamina;
}
}
}
【问题讨论】:
-
大部分代码是不相关的:“变量..不同的范围”,当然。该值是用于缩放还是仅用于显示都没有关系。