gpt4 book ai didi

unity-game-engine - Unity3D - 多个敌人在同一脚本中巡逻多条路径

转载 作者:行者123 更新时间:2023-12-02 10:16:27 26 4
gpt4 key购买 nike

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

如果我想要超过 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);
}
}
}

最佳答案

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

    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]);
}
}

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

关于unity-game-engine - Unity3D - 多个敌人在同一脚本中巡逻多条路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23177371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com