【发布时间】:2019-11-19 22:02:43
【问题描述】:
我得到了 Spikes 和 bool onSpikes,它告诉玩家是否处于 onSpikes 状态。
目前,如果玩家处于 onSpikes 状态,生命值会不断下降。
if(onSpikes)
{
health -= 0.01f;
}
但我认为这不是一个好的解决方案,因为我处于 void Update() 中,而且我无论如何都希望 Health 下降到更大的部分(比如每秒 -0.2f)。
我已经尝试过构建一个方法并使用 Invoke,但是这样我的玩家并没有失去生命值。 代码:
private void Update(){
Debug.Log("Player on Spikes: "+SpikeDMG.onSpikes);
bar.localScale = new Vector3(health,1f);
if(SpikeDMG.onSpikes)
{
Invoke("doDmg",1);
}
//Wenn leben unter 0 fällt ==> starte szene neu
if(health <=0){
int scene = SceneManager.GetActiveScene().buildIndex;
SceneManager.LoadScene(scene, LoadSceneMode.Single);
Time.timeScale = 1;
SpikeDMG.onSpikes = false;
}
}
void doDmg(){
health -= 10/100;
}
}
感谢所有可以提供帮助的人!
【问题讨论】:
-
你能提供更多代码吗?
-
您能否提供您尝试 Invoke 的完整示例?像这样的标准方法是使用InvokeRepeating(编辑:时间参数,方法开始的时间不能为0!)和CancelInvoke一旦玩家不再受到伤害。