C# 如何在c语言的视频游戏中对武器攻击进行半秒的冷却#

C# 如何在c语言的视频游戏中对武器攻击进行半秒的冷却#,c#,unity3d,C#,Unity3d,我需要对攻击进行冷却。现在你可以发垃圾邮件,可以快速挥杆,但我想更好地平衡游戏,并增加一个小的冷却时间。但我似乎在任何地方都找不到这样做的方法。有人有什么想法吗?您可能希望得到以下内容。由于我没有您的任何代码,我将假设这是在一个player类下,并将相应地编写 class PlayerClass : MonoBehaviour { float timer = 0.0f; float cooldownTime = 1.0f; void Update() {

我需要对攻击进行冷却。现在你可以发垃圾邮件,可以快速挥杆,但我想更好地平衡游戏,并增加一个小的冷却时间。但我似乎在任何地方都找不到这样做的方法。有人有什么想法吗?

您可能希望得到以下内容。由于我没有您的任何代码,我将假设这是在一个player类下,并将相应地编写

class PlayerClass : MonoBehaviour
{
    float timer = 0.0f;
    float cooldownTime = 1.0f;

    void Update() {
        if(timer > cooldownTime) { 
            if(Input.GetMouseButtonDown(0)) {
                Attack();
                timer = 0;
            }
        }

        if(timer < cooldownTime + 1) // Add some leaniency for inaccurate floating points.
            timer += time.DeltaTime;
    }
}
class PlayerClass:monobhavior
{
浮动定时器=0.0f;
浮动冷却停机时间=1.0f;
无效更新(){
如果(计时器>冷却停机时间){
if(Input.GetMouseButtonDown(0)){
攻击();
定时器=0;
}
}
if(timer
显然,请尝试此代码。我现在正在工作,无法访问我的电脑,所以你需要处理未经测试的C#!当然,在谷歌上搜索一下计时器之类的东西,因为那将是你需要寻找的地方。如果您想了解更多,还可以查看IEnumerable中的异步代码


(>^3^)>

您可以使用包含以下内容的IEnumerator函数:

public class YourClass : MonoBehaviour
{
    private float cooldownTime;
    private bool isCooldown;

    // your code

    private void Update()
    {
        if (!isCooldown)
        {
            // Do stuff
        }
    }

    private IEnumerator Cooldown()
    {
        // Start cooldown
        isCooldown = true;
        // Wait for time you want
        yield return new WaitForSeconds(cooldownTime);
        // Stop cooldown
        isCooldown = false;
    }
}

只需在攻击处理程序中启动协同程序

欢迎使用堆栈溢出!请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南。关于主题和如何提问,请在此申请。StackOverflow不是设计、编码、研究或教程服务@易卜拉欣·马塔尔将这些事情张贴在