transform.position = Vector2.MoveTowards (transform.position,target.position,moveSpeed*Time.deltaTime);
所以指定时间达到目标位置就是反向操作了
替换moveSpeed为
moveSpeed=(transform.position到target.position的距离)/你指定的时间;
所以代码是这样的
publicTransform target;//目标位置
publicfloatdistance;//两个物体的距离
voidStart () { distance = Vector2.Distance (transform.position,target.position); }
voidUpdate () {transform.position = Vector2.MoveTowards (transform.position,target.position,(distance/1f)*Time.deltaTime); }//我设置了1秒达到。所以如果用协程的话,做出两个方式,一下是摘自网络//在time时间内移动物体
privateIEnumeratorMoveObject(Vector3 startPos, Vector3 endPos,floattime){vardur =0.0f;while(dur <= time) { dur += Time.deltaTime; transform.position = Vector3.Lerp(startPos, endPos, dur / time);yieldreturnnull; } }//以指定速度speed移动物体privateIEnumeratorMoveObject_Speed(Vector3 startPos, Vector3 endPos,floatspeed){floatstartTime = Time.time;floatlength = Vector3.Distance(startPos, endPos);floatfrac =0;while(frac <1.0f) {floatdist = (Time.time - startTime) * speed; frac = dist / length; transform.position = Vector3.Lerp(startPos, endPos, frac);yieldreturnnull; }}
http://blog.csdn.net/vipzjh/article/details/52229220?locationNum=8