【发布时间】:2015-11-18 15:28:07
【问题描述】:
我目前使用的代码让敌人在远处注意到我,然后在我靠近时跟随我。我遇到的问题是他们如何移动。我正在构建一个 Minecraft 风格的游戏,但我无法让敌人留在地面上并像我使用 fps 控制器一样跳上每个街区。他们似乎只是向我漂浮了尽可能短的距离。
代码:
var target : Transform; //the enemy's target
var moveSpeed = 3; //move speed
var rotationSpeed = 3; //speed of turning
var range : float=10f;
var range2 : float=10f;
var stop : float=0;
var myTransform : Transform; //current transform data of this enemy
function Awake()
{
myTransform = transform; //cache transform data for easy access/preformance
}
function Start()
{
target = GameObject.FindWithTag("1Player").transform; //target the player
}
function Update () {
//rotate to look at the player
var distance = Vector3.Distance(myTransform.position, target.position);
if (distance<=range2 && distance>=range){
myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);
}
else if(distance<=range && distance>stop){
//move towards the player
myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);
myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
}
else if (distance<=stop) {
myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);
}
}
【问题讨论】:
-
这就是您编写代码的目的,让它们直接浮向您。您可以尝试设置 Navmesh(虽然我不知道它是否能在不断变化的 3D 环境中正常工作)或查找/编写您自己的更复杂的 AI 导航脚本。
标签: unity3d artificial-intelligence unityscript