創作內容

7 GP

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

作者:微笑的貘│2020-07-28 12:54:34│巴幣:14│人氣:4298
按下右鍵使物件向右移動的程式如下:
public class test : MonoBehaviour
{
    public GameObject Cube; //要移動的物件

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.RightArrow)) //按下方向鍵的右的期間不斷執行
        {
            Cube.transform.Translate(Vector3.right * Time.deltaTime); //Cube 向右移動
        }
    }
}

將場景上的 Cube 拖曳到 Script 的欄位上。

往其他方向移動的寫法也差不多
void Update()
    {
        if (Input.GetKey(KeyCode.RightArrow)) //按下方向鍵的右的期間不斷執行
        {
            Cube.transform.Translate(Vector3.right * Time.deltaTime); //Cube 向右移動
        }
        if (Input.GetKey(KeyCode.LeftArrow)) //按下方向鍵的左的期間不斷執行
        {
            Cube.transform.Translate(Vector3.left * Time.deltaTime); //Cube 向左移動
        }
        if (Input.GetKey(KeyCode.UpArrow)) //按下方向鍵的上的期間不斷執行
        {
            Cube.transform.Translate(Vector3.forward * Time.deltaTime); //Cube 向前移動
        }
        if (Input.GetKey(KeyCode.DownArrow)) //按下方向鍵的下的期間不斷執行
        {
            Cube.transform.Translate(Vector3.back * Time.deltaTime); //Cube 向後移動
        }
    }

接下來我們要在場景上增加其他的 Cube。
為了方便區隔所以我們要為 Cube 更換材質,讓它們的顏色有所區隔。

新增材質
右鍵→Create→Material

更改材質的顏色

接著我們要為物件更名,有三種方法:
方法一:對物件右鍵→Rename
方法二:慢慢地按兩下物件(方法和給一般檔案更名相同)
方法三:Inspector 視窗上面也可以更名

我們再增加一個 Cube 到場景上,你會發現兩個 Cube 是疊在一起的,所以我們要移動物件的位置,把它們分開。

更改物件位置的方法 (1)
拖拉 Scene 上的箭頭

上面那三顆鍵可以改變箭頭的種類
此外,任何情況下,按住滾輪可移動場景的位置,按住右鍵可移動場景的角度。

更改物件位置的方法 (2)
Transform 可以調整物件的位置、角度、大小

然後我們執行專案,用鍵盤控制方塊移動...怎麼穿過去了?

會穿過去是因為還沒有達成碰撞的所有條件:
1.撞人和被撞的一方都要有 Collider
2.撞人的一方必須有 Rigidbody

最新版本的 Unity 會在新增 3D Object 的時候順便附上 Collider,如果是比較舊的版本可能要自己手動加。
Rigidbody 要自己手動加。

再執行專案...怎麼掉下去了?

避免東西掉下去的方法:
方法一:在它底下加上有 collider 的物件
方法二:關掉 Use Gravity

關掉 Use Gravity 雖然不會讓東西往下掉了,但是會在碰撞後亂飄。還是使用重力並在底下加一個 Plane 吧。

嗯...還是有問題。碰撞之後歪掉了。

Rigidbody 中有個功能,可以鎖定方向或角度。
Freeze Rotation Y

終於正常了...

試著增加牆壁,來創作自己的迷宮吧。

把攝影機拉到 Player 身上,攝影機就會跟著 Player 走。

來製作撿道具的功能吧。
為了與障礙物區隔,代表道具的物件使用球體,並給它藍色的 Material
勾選 Collider 的 Is Trigger,這樣就不會發生碰撞

在 Script 中增加 OnTriggerEnter
在碰到有勾選 Is Trigger 的 collider 的時候會觸發。

然後加上碰到道具後,使道具消失的功能。

private void OnTriggerEnter(Collider other)
{
    Destroy(other.gameObject); //將 other 消除掉
}

加上計分的功能。

將分數顯示在畫面上。
右鍵→UI→Text

將 Scene 切換成 2D 模式,調整 UI 會比較方便。

更改 Text 的內容

Text 相關的程式。

好啦,現在紅色方塊撞到藍色的球就會得一分,並將分數顯示到畫面上。
稍微有點遊戲的樣子了呢?可喜可賀?

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

相關創作

同標籤作品搜尋:Unity

留言共 2 篇留言

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

07-28 13:08

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

07-28 13:59

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

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

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

追蹤私訊切換新版閱覽

作品資料夾

TU88694給予幸福的尼
幸福其實很簡單 只要一直陪伴再一起就足夠了 ₍ᐢ.ˬ.⑅ᐢ₎看更多我要大聲說7小時前


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

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