【发布时间】:2016-08-04 02:25:32
【问题描述】:
using UnityEngine;
using System.Collections;
public class WaypointsMover : MonoBehaviour {
public float rotateSpeed = 2.0f;
private bool rotating;
void Update() {
StartCoroutine(TurnTowards(-transform.forward));
}
IEnumerator TurnTowards(Vector3 lookAtTarget) {
if(rotating == false) {
Quaternion newRotation = Quaternion.LookRotation(lookAtTarget - transform.position);
newRotation.x = 0;
newRotation.z = 0;
for (float u = 0.0f; u <= 10.0f; u += Time.deltaTime * rotateSpeed) {
rotating = true;
transform.rotation = Quaternion.Slerp(transform.rotation, newRotation, u);
yield return null;
}
rotating = false;
}
}
// Use this for initialization
void Start () {
}
}
无论我将 rotateSpeed 的值更改为 10.0f 还是 20.0f,敌人都会走到一侧,然后会转身走到另一侧。怎样才能让敌人走到一边时立刻转身?
为什么在场景中敌人定位在建筑物屋顶上,而我却将它们定位在另一个地方?
-
如何设置航点?我在代码中找不到路点。我知道在 for 循环中它是在原来的:
for (float u = 0.0f; u
我把它改成了 10.0f 而不是 1.0f,所以现在他们在屋顶上走得更远了。但如果我想让它们在我拥有的两个领域之间移动?
这是运行游戏时右侧建筑物的屏幕截图,他们在屋顶上行走。左边的两个敌人(守卫)是主玩家。我设置的相机跟随第一个守卫。
我还注意到它们之间没有空间,因此它们相互碰撞或相互干扰行走。我可以在哪里或如何在它们之间设置更多空间,以便每个人都走自己的路?
这是我录制的一个简短视频片段,展示了他们的行走方式和行走地点:
【问题讨论】:
-
1- 检查你的敌人 (AI) 代码我确定你在某处设置位置。 2-我不知道每个敌人使用什么脚本,但是我很确定您只有一个“WaypointsMover”实例(我认为那是某种管理器)。如果没有,你能粘贴敌人的代码和组件吗?谢谢。
-
@Cabrra 我现在检查我看到对象选项卡中导航窗口中的地形我检查以使其导航静态,然后我单击烘焙。所以现在敌人从他们在场景中的位置开始。但出于某种原因,他们会先到大楼底下,然后在那里巡逻。我不明白为什么要去大楼。
-
@Cabrra 我现在检查我看到对象选项卡中导航窗口中的地形我检查以使其导航静态,然后我单击烘焙。所以现在敌人从他们在场景中的位置开始。但出于某种原因,他们会先到大楼底下,然后在那里巡逻。我不明白为什么要去大楼。
-
@Cabrra 敌人是你可以在我的问题截图中看到的卫兵。我称他们为敌人,但在我的场景中,我将他们命名为警卫(警卫和警卫 1)。在我的问题中,除了这个之外,他们没有任何脚本或代码。这是附加到 Guard 和 Guard 1 的唯一脚本。这个 Guards 是 ThirdPersonControllers 对象。
-
@Cabrra 我如何在此处复制和粘贴 Guards 组件?也许我可以将我的项目上传到我的 onedrive。或者也许只上传角色。