ETH官方钱包

創(chuàng)作內(nèi)容

7 GP

從0開始的 Unity ~ 物件移動篇

作者:微笑的貘│2020-07-28 12:54:34│巴幣:14│人氣:4616
按下右鍵使物件向右移動的程式如下:
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ū)隔。

新增材質
右鍵→Create→Material

更改材質的顏色

接著我們要為物件更名,有三種方法:
方法一:對物件右鍵→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ù)顯示到畫面上。
稍微有點遊戲的樣子了呢?可喜可賀?

碰撞判定算是初學者很常碰到的一個坑。
我當初也在這邊坑了一陣子(?)
希望這篇文章能幫到大家。
引用網(wǎng)址:http://www.jamesdambrosio.com/TrackBack.php?sn=4863924
All rights reserved. 版權所有,保留一切權利

相關創(chuàng)作

同標籤作品搜尋:Unity

留言共 2 篇留言

KK
微笑大文章更新的速度好快,而且還是圖文並茂版,不知道你這個從0開始的系列會寫到哪邊@@
現(xiàn)在公會有活動,可以把這一連串的教學PO到公會叭啦叭啦,可以拿【技術文章分享】,
不管有沒有打算丟過去,還是很開心看到有人發(fā)教學文[e19]

07-28 13:08

微笑的貘
其實是因為最近要被抓去交高中生,
我將準備的教材弄成文章,一次發(fā)兩篇.
不一定有下一篇(ry
話說我是不是被公會除名啦?
我的公會列表裡沒有遊戲製作的公會.07-28 13:40
KK
我還真的被你這訊息嚇到了...你是?;罱j在 discord 上的人,正在做東方的同人遊戲我知道。不過巴哈這邊的有新開收錄區(qū),需要重繳一次報到單,你應該是錯過這個資訊了,所以沒有被收錄進來,重新報到跟大家重新打招呼吧@@

07-28 13:59

微笑的貘
OK 填好了07-28 14:22
我要留言提醒:您尚未登入,請先登入再留言

7喜歡★a710594 可決定是否刪除您的留言,請勿發(fā)表違反站規(guī)文字。

前一篇:從0開始的 Unity ... 後一篇:自製遊戲公會成員報到單...


face基於日前微軟官方表示 Internet Explorer 不再支援新的網(wǎng)路標準,可能無法使用新的應用程式來呈現(xiàn)網(wǎng)站內(nèi)容,在瀏覽器支援度及網(wǎng)站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現(xiàn)和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業(yè)系統(tǒng)版本才可使用)

face我們了解您不想看到廣告的心情? 若您願意支持巴哈姆特永續(xù)經(jīng)營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】