【发布时间】:2018-01-25 23:14:43
【问题描述】:
所以当我的角色被敌人的火焰吐息击中时,我想营造角色被点燃的感觉。因此,当角色着火时,我希望他在特定的时间内失去特定的生命值。
例如;假设他着火了 3 秒,我想让他因为着火而失去 30 生命值,我将如何平均分配失去 30 生命值 3 秒?我不希望 30 点伤害立即施加到生命值上,我希望它慢慢地在玩家生命值上滴答作响,以便在 3 秒标记处造成 30 点伤害。
游戏是用c#制作的。
谢谢。
【问题讨论】:
-
Mathf.Lerp() 也可能很方便。这可以在没有协程的情况下轻松完成,只需在 Update() 中使用 bool 输入“decreaseHealth”方法。
-
所以我尝试让计时器变量从 3 开始,然后从中减去 Time.deltaTime,直到计时器变为 0,从角色中减去 1 生命值。但是,如果我没记错的话,这显然不起作用,因为 Time.delta 时间是基于帧速率的。所以最终发生的事情是我的玩家会在这 3 秒内损失大量生命值。
-
这样的事情应该在协程中完成,而不是在 void/Update 函数中。当我说东西时,我的意思是 “在 x 时间内做某事” 问题。检查我留下的答案。这应该可以解决您的问题。
-
我最终使用了 couroutine