我见过几个与我类似的问题,但我无法满足我的特殊需求。
我在unityscript,EnemyHealth.js和BasicAI.js中都有2个脚本。在EnemyHealth.js中,我有一个名为Health的int变量。我希望将它作为BasicAI.js中的变量传递给我,以便我可以检查敌人的健康状况是否低于某个范围。这两个脚本都附加到游戏对象'Enemy'。
我的问题的第二部分是,如果var Health低于一定数量(比如20),我想要调用函数flee()。我如何让敌人转离玩家并继续离开?
感谢。
答案 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();
}