我是新编写的代码。 敌人将在两条路径之间巡逻。 然后,当玩家进入敌人周围的探测区域时,它将跟随玩家。

如果我想要多于1个敌人和多个路径,我将如何添加到此代码中以便能够执行此操作。 为每个敌人创建一个脚本将是一种浪费,对吗?

public var enemyPath1 : Transform;
public var enemyPath2 : Transform;
private var target : Transform = null;
private var characterControls: CharacterController;

function Start ()
{
    SetTarget(enemyPath1);
    characterControls = GetComponent(CharacterController);
}

function SetTarget(newTarget : Transform) : void
{
    target = newTarget;
}

function Update() : void
{
    var lookAtPosition : Vector3 = Vector3(target.position.x,
                                           this.transform.position.y,
                                           target.position.z);
    transform.LookAt(lookAtPosition);
    characterControls.SimpleMove(transform.forward);
}

function OnTriggerEnter(node : Collider) : void
{
    if(node.transform == target)
    {
        if(target == enemyPath1)
        {
            SetTarget(enemyPath2);
        }
        else if(target == enemyPath2)
        {
            SetTarget(enemyPath1);
        }
    }
}

===============>>#1 票数:0

这段代码应该进入敌人的游戏对象,对吧? 一种方法是将所有所需的路径放入一个数组中,按照它们应该被敌人跟随的顺序。

    var paths : Transform[];
    var pathIndex : int = 0;
    // Then in your start function:
    function Start ()
    {
        SetTarget(paths[pathIndex]);
        characterControls = GetComponent(CharacterController);
    }
    // Then in the function that is doing the checking and looking for the next path
    function OnTriggerEnter(node : Collider) : void
    {
        if(node.transform == target)
        {
            // Increment the index so it looks for the next path object
            pathIndex += 1;
            if(pathIndex == paths.length)
            {
                // Resets to the first path if this is the last one
                pathIndex = 0;
            }
            SetTarget(paths[pathIndex]);
        }
    }

因此,您可以将此脚本添加到场景中的所有敌方游戏对象,然后在编辑器中,您可以手动将其路径变量设置为您希望按所需顺序排列的任何路径,并且它们应遵循其设置例程。

  ask by user3552964 translate from so

未解决问题?本站智能推荐:

2回复

在Unity3d中为多个关卡创建一个加载场景

我在加载场景时遇到问题。 我已经创建了一个加载场景,然后在完成场景后加载另一个级别,这就是概念,对吗? 现在的问题是,如果要加载的场景太多,是否也必须创建那么多的加载场景? 我想知道是否有一些方法可以使我在加载另一个关卡时仍然在第一个加载场景中进行操作,因此不必创建那么多加载场景。
1回复

删除多个帧中特定骨骼的动画Unity3d

我有一个Mecanim的动画。 我想知道一旦在LateUpdate()函数中按某个键,如何才能删除接下来几帧仅右手的动画 如果有人可以建议如何做到这一点?
1回复

unity3D,敌人追随

当玩家进入敌人的半径区域时,我试图使敌人跟随我的玩家,但是当我的子弹击中object或进入radiusArea时,使敌人停止跟随。 查看我的gif以获取更多详细信息: Gif 脚本: 我希望有一个人可以帮助我 :(
2回复

Unity3d中的多线程脚本调用

我试图在Unity3d中实现多线程脚本执行,但似乎Unity库没有办法提供,我们必须使用Mono提供的System.Threading。 但是他们已经提到Unity Scripting不是线程安全的。 我可以使用System.threading或其他独立于平台的API在Unity3D中安
1回复

给一个预制件克隆一个来自Unity3d中另一个预制件的脚本

我有以下内容: 炮塔球经理: 炮塔等级: 球类: 我有一个炮塔,希望每1秒发射一个球,这个球是预制的,希望有Ball类(当球超出范围或被碰到时应该销毁),我想做的是创建另一个炮塔每35 sec愿望也应该每1秒开一个球..我面临的问题是休闲问题: 在35 s
1回复

来自另一个脚本的Unity3D调用函数(Unityscript)

我查找了类似的问题和答案,但仍然无法使它起作用。 LessonRightButton.js AudioPlayback.js 我收到此错误: NullReferenceException:对象引用未设置为对象LessonRightButton.OnClick()的
1回复

我的unity3d安卓游戏中加载了多个广告

我有一个统一的3D Android游戏,并在其中加载了一些广告。 因此,其中一个广告是横幅广告,问题在于它出现了多个横幅广告(不知道为什么:()。它们全部堆叠在一起,看起来像它的名字一样)。 我这样加载广告。 也许一旦广告加载(我不知道该怎么做)就需要停止它,或者只是说我想要一个
2回复

unity3d我如何删除敌人:S而不是动画师

如何删除敌人enemyprefab上的敌人,但不删除enemanim动画师? 这是我的敌人预制代码,我正在主实例化它 这两个变量:
1回复

如何在Unity3d中制作相机平移js脚本

我正在尝试制作以下相机平移js脚本,以使其正常工作,这意味着左右平移相机。 到目前为止,我已经完成的工作是仅将摄像机向左移动并返回其初始位置。 我无法让它在被单击/触摸的gui.button上左右移动。 这是js脚本: 有人可以提供有关如何使此脚本工作的线索吗? 我是Unit
2回复

(Unity3D)如何在脚本上放置注释或文档

:)有没有一种方法可以让我们设置注释或文档 ,使其可以在我们制作的自定义脚本下显示在Inspector视图上?