在unity中,经常遇到的一个问题就是物体移动的问题,Unity引擎给出了很多种解决方案,这里先给大家介绍一种——Transform.Translate函数。
在Unity中这是最基础的一种物体移动的方式之一,物体会按照你给的速度方程移动。
首先,我们先创建一个场景,加入一个Terrain或者是Plane,这里我加的是Terrain,为了美观,我在Terrain上刷了一层草地,绘制了一个小山包,然后添加一个Sphere,作为我们要移动的对象。新建一个脚本move.cs,绑定到脚本上,并在vs中打开:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class move : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//使小球按照y轴正方向以每帧1的单位长度移动
transform.Translate(Vector3.up * Time.deltaTime, Space.World);
}
}
效果图:
transform.Translate()函数中,前一个变量是物体的移动速度,这里的速度是一个矢量,既包含大小写包含方向,后一个变量是相对坐标系,这里的相对坐标系有两个值,一个是世界坐标,一个是自身坐标,如果第一个坐标不填写的话,默认为自身坐标系。这里我们将坐标体系修改为自身坐标系看一下效果:
transform.Translate(Vector3.up * Time.deltaTime, Space.Self);
这里我为了看到效果,将小球按照x轴旋转了90°。
我们还可以这样:
transform.Translate(new Vector3 (1,1,1) * Time.deltaTime, Space.World);
通过这个函数,我们可以将控制物体按照任何方向进行移动