问题的根源在于Astar路径搜索依赖于场景中的游戏对象,但Player Clone / Instantiate创建的对象不在场景中。这可以通过将Player Clone / Instantiate创建的对象添加到Astar的图形中来解决。
以下是示例代码,演示如何将Player Clone / Instantiate创建的对象添加到Astar图形中:
public GameObject playerPrefab; // Player Clone / Instantiate的预制体对象
public GraphUpdateObject guo; // GraphUpdateObject对象
void Start() {
guo = new GraphUpdateObject(playerPrefab.GetComponent().bounds);
}
void Update() {
// 如果玩家对象移动了,则更新Astar图形
if (PlayerHasMoved()) {
AstarPath.active.UpdateGraphs(guo);
}
}
在上述代码中,我们首先创建一个GraphUpdateObject对象,该对象将包含Player Clone / Instantiate对象的范围作为参数。然后,我们在Update()函数中检查玩家对象是否移动。如果移动,我们使用AstarPath.active.UpdateGraphs()方法更新Astar图形,并将之前创建的GraphUpdateObject对象用作参数。
通过这种方法,我们可以将Player Clone / Instantiate对象添加到Astar图形中,并在玩家对象移动时更新该图形,以确保路径搜索正常工作。