我正在尝试将对象移动到存储在数组中的多维数据集。
Array中填充了带有标记的gameObjects。
我可以让物体立即移动到立方体,但不能慢慢地走向它。
这是我的剧本:
var moveTo : GameObject;
function Update(){
print(FindClosestEnemy().name);
}
function FindClosestEnemy():GameObject{
var chasePoints : GameObject[];
chasePoints = GameObject.FindGameObjectsWithTag("chasePoint");
var closest : GameObject;
var distance = Mathf.Infinity;
var position = transform.position;
for(var go: GameObject in chasePoints){
var diff = (go.transform.position-position);
var curDistance = diff.sqrMagnitude;
if(curDistance < distance){
closest = go;
moveTo = closest;
transform.position -= moveTo.transform.position;
distance = curDistance;
}
}
return closest;
}
我也尝试了Time.deltaTime
这个东西,但它传送的远离立方体。
只是将它转换为变换数组也没有解决:(任何想法使这个工作?
非常感谢帮助:)提前致谢!
答案 0 :(得分:1)
看起来你正在一帧中进行整个转换。您需要选择一个速度并将其应用于每个帧的对象。你知道从哪里来的。选择您想要的时间并逐步更新。请记住,您无法确定每秒会有60帧,因此请将其考虑在内。
答案 1 :(得分:0)
你可以使用 Vector3.MoveTowards
对于maxDistanceDelta,您可以选择一个速度并将其与Time.deltaTime相乘,使其与帧长度无关:
Vector3.MoveTowards(transform.position, moveTo.transform.position, speed * Time.deltaTime);