Unity - 从不同的脚本传递变量+使敌人逃离

时间:2014-12-14 05:47:31

标签: unity3d artificial-intelligence unityscript

我见过几个与我类似的问题,但我无法满足我的特殊需求。

我在unityscript,EnemyHealth.js和BasicAI.js中都有2个脚本。在EnemyHealth.js中,我有一个名为Health的int变量。我希望将它作为BasicAI.js中的变量传递给我,以便我可以检查敌人的健康状况是否低于某个范围。这两个脚本都附加到游戏对象'Enemy'。

我的问题的第二部分是,如果var Health低于一定数量(比如20),我想要调用函数flee()。我如何让敌人转离玩家并继续离开?

感谢。

2 个答案:

答案 0 :(得分:2)

要回答问题的第一部分,您需要使用(GetComponent)[http://docs.unity3d.com/ScriptReference/GameObject.GetComponent.html]。这样做可以让你在特定类型的GameObject上获得其他脚本。在你的情况下,你做的事情是:

var enemyHealth = gameObject.GetComponent(EnemyHealth);

然后你只需要一个公共方式来访问名为Health的变量,无论该变量是公共的还是某种公共的getter(如果你不希望BasicAI改变健康状况,那么你想要去getter路线,而不仅仅是把变量公之于众。)

现在,为了让敌人逃离,这是一个非常复杂的问题,涉及许多事情,我认为一般来说可能有点过于宽泛。可能想要查找一些基本的AI脚本来处理这些概念。

答案 1 :(得分:0)

在Unity中调用另一个脚本有多种方法。 GetComponent和Brett一样说但我会在你的情况下使用FindObjectsOfType(http://docs.unity3d.com/ScriptReference/Object.FindObjectsOfType.html)。

人工智能问题尚不清楚。你有AI做过什么吗?只需调用flee方法,只需键入您在问题中所说的内容(可能在更新(http://docs.unity3d.com/ScriptReference/MonoBehaviour.Update.html)中。

if(Health < 20){
  flee();
}