我正在尝试让一个对象移动到一个存储在数组中的立方体中。
数组中填充了带有标记的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的东西,但它传送到离立方体很远的地方。
仅仅将它转换为Transform Array也是行不通的:(有什么想法可以让它工作吗?
非常感谢您的帮助:)提前谢谢!
发布于 2011-04-03 06:07:32
看起来你在一帧中完成了整个转换。您需要拾取一个速度,并将其应用于每个帧的对象。你知道from和to。选择您希望它花费的时间,并增量地更新它。记住,你不能确定每秒会有60帧,所以要考虑到这一点。
发布于 2011-05-28 04:30:47
您可以使用Vector3.MoveTowards
对于maxDistanceDelta,您可以选择一个速度,并将其与Time.deltaTime相乘,使其与帧长度无关:
Vector3.MoveTowards(transform.position, moveTo.transform.position, speed * Time.deltaTime);https://stackoverflow.com/questions/5526141
复制相似问题