Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果玩家处于扣球状态,如何在每秒钟后对其造成伤害?_C#_Unity3d - Fatal编程技术网

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
    }
}