日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【和我一起学习Unity3D】Unity3D的坐标控制

發布時間:2024/6/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【和我一起学习Unity3D】Unity3D的坐标控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

坐標這個東西,在Unity3D里面是分為幾個類的,各自是Vector2,Vector3。Vector4;含義各自是:二維坐標系,三維坐標系,四維坐標系。一般做游戲呢,用到的最多的就是Vector3了。這篇文章主要講的也是這個。

一般一個場景中。有X軸,Y軸,Z軸三個軸,以默認的坐標來說 X軸控制左右,Y軸控制上下。Z軸控制前后。

在這里有一個函數值得特別說明一下,就是transform組件里面的LookAt。這個函數用以將一個GameObject的Z軸對準另外一個GameObject。這種話,假設想將這個GameObject移向另外一個GameObject的話,就能夠直接將這個GameObject向前移就能夠了,以下是樣例:

using UnityEngine; using System.Collections; public class CCubeA: MonoBehaviour { publuc GameObject m_gCubeB;publuc float m_fMoveSpeed = 2.0f;// Use this for initialization void Start () { } // Update is called once per frame void Update () { this.transform.LookAt(m_gCubeB.transform);this.transform.Translate(Vector3.forward * m_fMoveSpeed * Time.deltaTime);} }
這種話。當前方塊A就向著方塊B,以每秒2個單位的速度平移過去了。

這里還調用了一個函數,叫做Translate,這個函數主要是用來平移物體的(注意的是這個平移是一個瞬間動作),參數是一個Vector3,這個參數是表示平移的量,本樣例中的公式解釋為:單位距離乘以速度乘以單位時間等于單位時間上走的距離。

第一個變量Vector3.forward實質上就是(0,0,1)。由上文我們知道。Z軸實際上是管理前后的。forward就是向前的意思。

第三個變量Time.deltaTime是上一幀到這一幀所花費的時間,乘上這個時間的話,就能夠變成每秒平移的距離了。

整句話連起來就是:向前以每秒m_fMoveSpeed的速度平移(因this已經LookAt(m_gCubeB),所以向前移也就是向著m_gCubeB移動)。

------------------------------------------------------------------------------------------------------------

以下講的是GameObject的旋轉,旋轉用的是transform中的Rotate,函數原型是:

void Rotate (Vector3 eulerAngles ,Space relativeTo = Space.Self);第一個參數是轉移的角度,是角度制的,不是弧度制的。另外為什么是一個Vector3的變量呢?由于通過這個變量能夠指定環繞哪個軸進行旋轉。第二個參數是用來指定相對于自身旋轉還是相對于世界坐標旋轉。

以下給出一個樣例:

using UnityEngine; using System.Collections; public class CCubeA: MonoBehaviour { publuc float m_fRotateSpeed = 2.0f;// Use this for initialization void Start () { } // Update is called once per frame void Update () { this.transform.Rotate(Vector.up * m_fRotateSpeed * Time.deltaTime);} }
這個樣例中的物體會以每秒2度的速度進行旋轉,旋轉的方式是環繞著X軸逆時針的旋轉。

另外一個旋轉的函數是RotateAround,其能夠指定環繞某個GameObject進行旋轉,這樣能夠做非常多操作。比方攝像機環繞著主角進行旋轉。

這個函數的原型是:

void RotateAround (Vector3 point ,Vector3 axis,float angle);
第一個參數是環繞的點的位置,第二個參數是以什么軸為核心進行旋轉,第三個自然是旋轉的角度了。以下再舉一個樣例:

using UnityEngine; using System.Collections; public class CCubeA: MonoBehaviour { public GameObjcet m_gCubeB;publuc float m_fRotateSpeed = 2.0f;// Use this for initialization void Start () { } // Update is called once per frame void Update () { this.transform.RotateAround(m_gCubeB.transform.position, Vector.up, m_fRotateSpeed * Time.deltaTime);} }這個樣例是當前的GameObject以m_gCubeB的位置為中心,環繞著m_gCubeB的Y軸進行旋轉。旋轉的速度是每秒2度

轉載于:https://www.cnblogs.com/bhlsheji/p/5258923.html

總結

以上是生活随笔為你收集整理的【和我一起学习Unity3D】Unity3D的坐标控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。