1、所有組件都是類,當組件掛載到游戲物體上,運行后,引擎會自動實體化物件。游戲腳本則是,游戲物體的大腦。
2、使用變換組件移動物體:
(1)申明變數
private Transform m_Transform;//此舉申明一個可以存盤Transform型別的變數
(2)m_Transform=gameObject.GetComponent<Transform>();//此舉將掛載了腳本的Transform組件變數值賦給m_Transform變數,以便后續使用。
(3)gameObject這個類是所有物體的類,其下有GetComponent方法(函式),用于獲取物體下轄的組件。
(4)m_Transform.Translate(Vector3.forward,Space.World);//前一個變數控制方向,后一個選擇坐標軸。Vector3是結構體變數,可以有Vector.forward(back\left\right)等,Space也是結構體變數,可有Space.self和Space.world.
3、使用剛體移動物體
(1)申明變數
private Rigidbody m_Rigidbody;//此舉申明一個能存盤剛體資料的變數,變數名為m_Rigidbody
(2)m_Rigidbody=gameObject.GetComponent<Rigidbody>();//此舉不多解釋,也是取出Rigidbody變數存于m_Rigidbody中便于后續使用。
(3)m_Rigidbody.MovePosition(m_Transform.Position+Vector3.left*0.2f);
4、按鍵判斷
if(Input.GetKey(KeyCode.W))
{
//執行
}
5、void Update()
{
//一秒六十幀,穩定執行
}
void Start()
{
//只執行一次,因此用來什么變數即可
}
uj5u.com熱心網友回復:
1、由于AddForce()方法只能讓剛體按"世界坐標系"運動,因此,引出更好的AddRelativeForce()方法,可以沿自身坐標軸運動了。但是呢,你把這個方法使用于球sphere上時,會出現往復運動,因此講此段代碼內置于if(Input.GetKedDown(KeyCode.Space))中去,解決了這個問題。2、m_Rigidbody.AddForce(Vector3.forward*10,ForceMode.Force);//AddForce可替換為AddRelativeForce
3、ForceMode在此時列舉變數,第一次見到通過.運算子進行應用這種樣式,一度以為是結構。注意enmu的新用法哈
uj5u.com熱心網友回復:
1、在void Start()和void Update()方法上新增void FixedUpdate()方法。解決卡頓問題!Update()方法每幀執行一次,畫面每渲染完一次就是一幀,因此渲染完成時間不固定,也因此,如果以此時間作為方法執行,將輸入輸出卡頓,這本來是可以避免的。
2、因此引出FixedUpdate()方法,一秒執行50次,固定更新的時間間隔則為0.02秒。
uj5u.com熱心網友回復:
1、組件出生自帶Collider,以什么建立的自帶什么Collider。但!不帶剛體!因此沒有自由落體想象出現!但是撞不進去!2、因此剛體組件要自己添加,否則默認為"紋絲不動"的場景物體!
3、出生還自帶的有,Transform組件、Mesh Renderer組件、Mesh Filter網格過濾器組件。
uj5u.com熱心網友回復:
我也是初學者。uj5u.com熱心網友回復:
看一看,學一學uj5u.com熱心網友回復:
看一看,寫一寫,學一學uj5u.com熱心網友回復:
補充一下,Update的每幀執行的,并且一秒不是60幀,配置越高幀數越高,幀數是不固定的。AddRelativeForce是區域坐標體系的,沿著自身或者父物體為起始點,并且區域并不比世界坐標體系更好,只是作用不同。Start()作為常用的初始化方法,只運行一次主要用于初始化,(關閉腳本在啟動也不會再次運行,如果腳本移除后在加到物體上還是會運行一次)。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/22266.html
標籤:Unity3D
下一篇:Unity打包問題
