unity3D学习【功能实现】之十二:指定时间移动到目标位置
2016-08-17 11:15
721 查看
首先看下两个物体的坐标一个是x=-10,另一个是x=10,
那么这两个物体的距离就是20了。
一般我们移动都是
transform.position = Vector2.MoveTowards (transform.position,target.position,moveSpeed*Time.deltaTime);
假设moveSpeed 赋值一个2.0f,那么10秒就能到达目标位置。
所以指定时间达到目标位置就是反向操作了
替换moveSpeed为
moveSpeed=(transform.position到target.position的距离)/你指定的时间;
所以代码是这样的
public Transform target;//目标位置 public float distance;//两个物体的距离 void Start () { distance = Vector2.Distance (transform.position,target.position); } void Update () { transform.position = Vector2.MoveTowards (transform.position,target.position,(distance/1f)*Time.deltaTime); }//我设置了1秒达到。 所以如果用协程的话,做出两个方式,一下是摘自网络 //在time时间内移动物体 private IEnumerator MoveObject(Vector3 startPos, Vector3 endPos, float time) { var dur = 0.0f; while (dur <= time) { dur += Time.deltaTime; transform.position = Vector3.Lerp(startPos, endPos, dur / time); yield return null; } } //以指定速度speed移动物体 private IEnumerator MoveObject_Speed(Vector3 startPos, Vector3 endPos, float speed) { float startTime = Time.time; float length = Vector3.Distance(startPos, endPos); float frac = 0; while (frac < 1.0f) { float dist = (Time.time - startTime) * speed; frac = dist / length; transform.position = Vector3.Lerp(startPos, endPos, frac); yield return null; } }
相关文章推荐
- 强大的游戏开发工具Unity3D推出2D开发工具,unity将混合3D与2D开发
- Unity 问题汇总
- 2D游戏获得子节点的最小最大位置
- SliderJoint2D 滑动关节移动限制
- tiggerkill 碰撞后销毁
- 添加2d刚体力
- 2d摄像机跟随脚本
- 2d角色速度控制跳跃检测转向设置
- 随机播放音效 在音频组件中添加好元素 Random.Range在自定义的函数中可以用整形
- 2d 空物体实例化发射子弹 围绕旋转
- Ugui游戏开始界面 设置界面弹出
- 自动生成地图 物体 Generator
- 火箭鼠激光版自动开关,换图,旋转
- unity2D 忽略物体之间的碰撞
- Unity2D游戏开发基础教程1.2 项目、资源和场景
- Unity2D游戏开发基础教程1.2项目、资源和场景
- SceneManager.LoadScene
- ugui sprite替换方法
- (1-4)Unity3D/2D:制作2D帧动画
- (1-3)Unity3D/2D:Unity中使用Sprite-sheets