unity物体移动三种方式之——Transform.Translate

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liyuerge/article/details/79134337


  在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);

这里写图片描述


  通过这个函数,我们可以将控制物体按照任何方向进行移动

猜你喜欢

转载自blog.csdn.net/liyuerge/article/details/79134337