Unity Translate方法使用指南
文章目錄
- API 簡介
- Translate 的不同用法組合
- 1)相對于自己坐標(biāo)系下的z軸正方向移動(往面朝向移動)
- 2)相對于世界坐標(biāo)系下,自己的面朝向移動
- 3)相對于世界坐標(biāo)系下的z軸正方向移動
- 4)相對于自己坐標(biāo)系下,自己的面朝向移動
API 簡介
Translate 方法是 Transform 類下的一個公共方法。一般可以用于物體的位移。
方法的第一個參數(shù)表示位移多少,一般用移動方向×速度 ×?xí)r間來表示。
方法的第二個參數(shù)表示相對于哪個坐標(biāo)系進行移動。如果沒有傳第二個參數(shù),默認是相對于自己的坐標(biāo)系。
Translate 的不同用法組合
在介紹 Translate 方法的具體使用方式之前,我先畫出世界坐標(biāo)系和本地坐標(biāo)系便于大家后續(xù)理解。
現(xiàn)在新建一個物體,假設(shè)它的世界坐標(biāo)系是這樣的:(剛剛創(chuàng)建的物體本地坐標(biāo)系也和世界坐標(biāo)系重合)
現(xiàn)在將物體繞 y 軸順時針旋轉(zhuǎn)一定角度。
現(xiàn)在黑色坐標(biāo)系是世界坐標(biāo)系,紅色坐標(biāo)系是物體旋轉(zhuǎn)后的本地坐標(biāo)系(因為是繞 y 軸轉(zhuǎn)所以 y 軸不動,就不標(biāo)紅了)。
1)相對于自己坐標(biāo)系下的z軸正方向移動(往面朝向移動)
transform.Translate(Vector3.forward*1*Time.deltaTime);把物體當(dāng)作人,那么就是朝人的前方移動。
這個比較好理解,就是在自己的坐標(biāo)系下,往(0,0,1)的方向移動。在上圖中就是沿著紅色的 z 軸方向移動。
2)相對于世界坐標(biāo)系下,自己的面朝向移動
transform.Translate(transform.forward*1*Time.deltaTime,Space.World);效果和上面那種方法是相同的,都是沿著紅色的 z 軸方向移動。
這里簡單提一下 transform.forward,它代表了物體當(dāng)前的面朝向(自身的z 軸指向),并且是相對于世界坐標(biāo)系下的!
也就是用自己坐標(biāo)系下的(0,0,1)投影到世界坐標(biāo)系下的各分量來表示 forward 得出的向量,以上面畫的坐標(biāo)系圖為例,就是這樣理解:
transform.forward 得出的向量就是(Zx,0,Zz),從黑色的世界坐標(biāo)系來看就是沿著紅色的 z 軸方向。
3)相對于世界坐標(biāo)系下的z軸正方向移動
transform.Translate(Vector3.forward*1*Time.deltaTime,Space.World);此時物體只會朝黑色的 z 軸移動。
4)相對于自己坐標(biāo)系下,自己的面朝向移動
(一般不會這樣用)
transform.Translate(transform.forward*1*Time.deltaTime,Space.Self);transform.forward 得到的向量是相對于世界坐標(biāo)系的,可這時候我們要求相對于自己的坐標(biāo)系,那么必須將原來 forward 得到的向量轉(zhuǎn)化成自己坐標(biāo)系的一個向量。這時候物體的移動方向也就不會是自己的面朝向了。
最后的移動方向是藍色的 z’ 軸。
以上面這張圖為例,就是原先由黑色 z 軸轉(zhuǎn)到紅色 z 軸旋轉(zhuǎn)了一定角度。然后再從紅色 z 軸旋轉(zhuǎn)相同的角度到藍色 z’ 軸的方向(有點像將原來的世界坐標(biāo)系旋轉(zhuǎn)到紅色的坐標(biāo)系,那么原本相對于黑色坐標(biāo)系的紅色 z 軸就相應(yīng)變成了相對于原本紅色坐標(biāo)系的藍色 z’ 軸)。
總結(jié)
如果想實現(xiàn)物體沿自身方向移動,比如游戲中常見的人物移動,參考前兩種方法就好了。尤其注意不要掉入最后一種方式的陷阱,因為有可能會寫成 :
那么它是無法實現(xiàn)我們正常想要看到的人物移動效果的。
總結(jié)
以上是生活随笔為你收集整理的Unity Translate方法使用指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows系统鼠标右键菜单添加打开c
- 下一篇: 简单爬取去哪儿网