C# 如果玩家处于扣球状态,如何在每秒钟后对其造成伤害?
我有尖刺和刺刀,它告诉我球员是否在刺刀上。 目前,如果玩家在射击,生命值会持续下降C# 如果玩家处于扣球状态,如何在每秒钟后对其造成伤害?,c#,unity3d,C#,Unity3d,我有尖刺和刺刀,它告诉我球员是否在刺刀上。 目前,如果玩家在射击,生命值会持续下降 if(onSpikes) { health -= 0.01f; } 但我认为这不是一个好的解决方案,因为我在void Update()中,我希望运行状况下降到更大的部分(比如每秒-0.2f) 我已经尝试过构建一个方法并使用Invoke,但像这样,我的玩家根本没有失去生命值。 代码: private void Update(){ Log(“钉子上的玩家:+S
if(onSpikes)
{
health -= 0.01f;
}
但我认为这不是一个好的解决方案,因为我在void Update()中,我希望运行状况下降到更大的部分(比如每秒-0.2f)
我已经尝试过构建一个方法并使用Invoke,但像这样,我的玩家根本没有失去生命值。
代码:
private void Update(){
Log(“钉子上的玩家:+SpikeDMG.onSpikes”);
bar.localScale=新矢量3(运行状况,1f);
如果(尖峰直击)
{
调用(“doDmg”,1);
}
//我们将在0 fällt==>starte szene neu
如果(health您想做的是使用某种时间戳,那么您的下一个操作应该在什么时候执行。还对它进行了描述和说明
您能提供更多的代码吗?您能提供您尝试调用的完整示例吗?像这样的标准方法是使用(编辑:时间参数,方法启动的时间不能为0!)一旦玩家不再受到伤害。很好,但我会将变量命名为spikeDamageAt
,而不是一个通用的timeStamp
,这个cat与任何东西都相关。@trollingchar right更有意义,我只是快速地将找到的解决方案改编为OPs代码。要编辑它吗
private float spikeDamageAt= 0.0f;
void update() {
if(onSpikes && Time.time >= spikeDamageAt) {
health -= 0.01f;
spikeDamageAt= Time.time + 1.0f; // for 1 seconds
}
}