【问题标题】:Update function doesn't work correctly更新功能无法正常工作
【发布时间】:2016-05-26 00:33:06
【问题描述】:

我正在开发一个简单的僵尸生存游戏。 该脚本附加在一个空的 GameObject 中,充当玩家的健康。

#pragma strict

var health = 100;
var attack = 10;
var otherAttackDelay = 5;

function Attack1 () {
    health -= attack;
    Debug.log ("Under Attack 1!");
    yield WaitForSeconds (otherAttackDelay);
    Attack2 ();
}

function Attack2 () {
    health -= attack;
    Debug.log ("Under Attack 2!");
}

function Update () {
    if (health == 80) {
        Debug.log ("Die!");
    }
}

玩家有100生命值,攻击一个僵尸是10。僵尸再次攻击有5秒延迟。

在函数Update中我写了一个条件,如果玩家的生命值等于80(2次攻击)将显示一个Debug日志,并显示消息“Die!”

问题是当僵尸只攻击一次时(90的生命就会出现)立即显示“死!”。我做错了什么?

您好。

【问题讨论】:

  • 这里有很多错别字,比如attack var = 10;health - = attack;
  • 是的,对不起。我不会说英语,那是翻译错误。我现在正在修复代码。
  • 是否“受到攻击 2!”在“死”之前退出?即 Attack2() 是否在 Attack1() 之后立即被调用?
  • Attack1() 在哪里被调用?你确定只有一个地方在调用它并且只有一次吗?
  • 您是否使用 onTriggerEnter() 来调用这些攻击方法?您的逻辑可能会给您带来这个问题。

标签: function unity3d unityscript


【解决方案1】:

而不是在更新功能中不断检查健康状况。在 Attack1 或 Attack2 中,或者更好的两者中,您可以在最后检查运行状况。如果这不起作用,我还建议在更新或攻击功能中粘贴显示玩家健康状况的调试日志,这样您就可以确保健康状况不会像您希望的那样达到 80。另外,我注意到您正在检查一个确切的数量,这在检查诸如健康之类的事情时可能有点粗略。尝试执行 if (health

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-08
    • 2017-09-23
    • 2013-11-06
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多