[英]Making a Modern FPS game health regeneration system in Unity C#
我目前正在尝试在时间系统后进行再生,但无论我做什么都没有用,基本上是这样的:
玩家被击中,等待 2-3 秒并开始再生。 但我无法让“等待 2-3 秒”重新生成。
代码:
private void Hit()
{
if (PlayerShield > 0)
{
PlayerShield -= EnemyScript.EnemyBulletDamage;
}
else
{
Health = Health - EnemyScript.EnemyBulletDamage;
}
Invoke("Regen", 3);
if (Health < 0)
{
Debug.Log("player dead");
}
}
private void Regen()
{
while (PlayerShield < 120)
{
PlayerShield += 10*Time.deltaTime;
if (PlayerShield > 120)
{
PlayerShield = 120;
}
}
}
当我运行此程序时,如果玩家没有被击中几次,则此代码有效,但如果它在 3 秒内获得多次击中,则不会重新启动等待过程,这是我的主要问题。
这里一个简单的解决方案是在每个Invoke
调用之前使用CancelInvoke
:
private void Hit()
{
if (PlayerShield > 0)
{
PlayerShield -= EnemyScript.EnemyBulletDamage;
}
else
{
Health = Health - EnemyScript.EnemyBulletDamage;
}
CancelInvoke("Regen");
Invoke("Regen", 3);
if (Health < 0)
{
Debug.Log("player dead");
}
}
private void Regen()
{
while (PlayerShield < 120)
{
PlayerShield += 10*Time.deltaTime;
if (PlayerShield > 120)
{
PlayerShield = 120;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.