運動方式1
修改 position / localPosition ,可以讓物體運動
例如,
?Vector3 pos = this.transform.localPosition;
pos.z += distance;
this.transform.localPosition = pos;
此時,小車向+Z ?方向運動
具體代碼如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class SimpleLogic : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){float speed = 1;float distance = speed * Time.deltaTime;Vector3 pos = this.transform.localPosition;pos.z += distance; // 0.005f;this.transform.localPosition = pos;}
}
運動方式2
一般使用 transform.Translate () ,實現相對運動 ?
transform.Translate( dx, dy, dz , ..)
其中,dx , dy, dz 是坐標增量
例如,
transform.Translate(0, 0, distance); ? ?// Z 方向增加 distance
代碼如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class SimpleLogic : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){float speed = 1;float distance = speed * Time.deltaTime;this.transform.Translate(distance, 0, distance);}
}
相對運動
物體的相對運動,只需在transform.Translate(0, 0, distance);參數里添加一個參數this.transform.Translate(distance, 0, distance,Space.Self); //自己的坐標
this.transform.Translate(distance, 0, distance,Space.World);//世界坐標
物體運動方向
運動的方向,使物體朝著目標方向運動
1 獲取目標物體 ?
GameObject flag = GameObject.Find("目標物體名稱");
2 轉向目標 ?
this.transform.LookAt(flag.transform);
3 向‘前’運動 ,forward ,+Z 方向 ?
this.transform.Translate(0, 0, ?dz , Space.Self);
其中, ? GameObject.Find ( name_or_path) ,根據名字/路徑來查找物體 ? transform.LookAt ( target ) ,使物體的 Z軸 指向物體 ? Space.self ,沿物體自身坐標系的軸向運動
代碼如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class SimpleLogic : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){GameObject flag = GameObject.Find("目標物體名稱");this.transform.LookAt(flag.transform);}// Update is called once per framevoid Update(){float speed = 1;float distance = speed * Time.deltaTime;this.transform.Translate(0, 0, distance, Space.Self);}
}