1. 程式人生 > >unity物體移動三種方式之——Transform.Translate

unity物體移動三種方式之——Transform.Translate


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

這裡寫圖片描述


  通過這個函式,我們可以將控制物體按照任何方向進行移動