按下右鍵使物件向右移動的程式如下:
public class test : MonoBehaviour
{
public GameObject Cube; //要移動的物件
// Update is called once per frame
void Update()
{
if (Input.GetKey(KeyCode.RightArrow)) //按下方向鍵的右的期間不斷執(zhí)行
{
Cube.transform.Translate(Vector3.right * Time.deltaTime); //Cube 向右移動
}
}
}
將場景上的 Cube 拖曳到 Script 的欄位上。
往其他方向移動的寫法也差不多
void Update()
{
if (Input.GetKey(KeyCode.RightArrow)) //按下方向鍵的右的期間不斷執(zhí)行
{
Cube.transform.Translate(Vector3.right * Time.deltaTime); //Cube 向右移動
}
if (Input.GetKey(KeyCode.LeftArrow)) //按下方向鍵的左的期間不斷執(zhí)行
{
Cube.transform.Translate(Vector3.left * Time.deltaTime); //Cube 向左移動
}
if (Input.GetKey(KeyCode.UpArrow)) //按下方向鍵的上的期間不斷執(zhí)行
{
Cube.transform.Translate(Vector3.forward * Time.deltaTime); //Cube 向前移動
}
if (Input.GetKey(KeyCode.DownArrow)) //按下方向鍵的下的期間不斷執(zhí)行
{
Cube.transform.Translate(Vector3.back * Time.deltaTime); //Cube 向後移動
}
}
接下來我們要在場景上增加其他的 Cube。
為了方便區(qū)隔所以我們要為 Cube 更換材質,讓它們的顏色有所區(qū)隔。
更改材質的顏色
接著我們要為物件更名,有三種方法:
方法一:對物件右鍵→Rename
方法二:慢慢地按兩下物件(方法和給一般檔案更名相同)
方法三:Inspector 視窗上面也可以更名
我們再增加一個 Cube 到場景上,你會發(fā)現(xiàn)兩個 Cube 是疊在一起的,所以我們要移動物件的位置,把它們分開。
更改物件位置的方法 (1)
拖拉 Scene 上的箭頭
上面那三顆鍵可以改變箭頭的種類
此外,任何情況下,按住滾輪可移動場景的位置,按住右鍵可移動場景的角度。
更改物件位置的方法 (2)
Transform 可以調(diào)整物件的位置、角度、大小
然後我們執(zhí)行專案,用鍵盤控制方塊移動...怎麼穿過去了?
會穿過去是因為還沒有達成碰撞的所有條件:
1.撞人和被撞的一方都要有 Collider
2.撞人的一方必須有 Rigidbody
最新版本的 Unity 會在新增 3D Object 的時候順便附上 Collider,如果是比較舊的版本可能要自己手動加。
Rigidbody 要自己手動加。
再執(zhí)行專案...怎麼掉下去了?
避免東西掉下去的方法:
方法一:在它底下加上有 collider 的物件
方法二:關掉 Use Gravity
關掉 Use Gravity 雖然不會讓東西往下掉了,但是會在碰撞後亂飄。還是使用重力並在底下加一個 Plane 吧。
嗯...還是有問題。碰撞之後歪掉了。
Rigidbody 中有個功能,可以鎖定方向或角度。
Freeze Rotation Y
終於正常了...
試著增加牆壁,來創(chuàng)作自己的迷宮吧。
把攝影機拉到 Player 身上,攝影機就會跟著 Player 走。
來製作撿道具的功能吧。
為了與障礙物區(qū)隔,代表道具的物件使用球體,並給它藍色的 Material
勾選 Collider 的 Is Trigger,這樣就不會發(fā)生碰撞
在 Script 中增加 OnTriggerEnter
在碰到有勾選 Is Trigger 的 collider 的時候會觸發(fā)。
然後加上碰到道具後,使道具消失的功能。
private void OnTriggerEnter(Collider other)
{
Destroy(other.gameObject); //將 other 消除掉
}
加上計分的功能。
將分數(shù)顯示在畫面上。
右鍵→UI→Text
將 Scene 切換成 2D 模式,調(diào)整 UI 會比較方便。
更改 Text 的內(nèi)容
Text 相關的程式。
好啦,現(xiàn)在紅色方塊撞到藍色的球就會得一分,並將分數(shù)顯示到畫面上。
稍微有點遊戲的樣子了呢?可喜可賀?
碰撞判定算是初學者很常碰到的一個坑。
我當初也在這邊坑了一陣子(?)
希望這篇文章能幫到大家。