今天來試試2D地圖場景的循環

簡單的說就是

如果你有玩過幾款RPG Maker製作出的解謎遊戲

就是裡面常常(大概87%概率)出現的鬼打牆功能(7月底背後一涼)啦~

 

不過這是為了目前作業需要用的場景效果的一種,所以做的比較簡陋

如果你是要設置循環多少次就可以出去之類的,類似功能的話

你可以點右上角了

這種功能我也是有想過,所以碰撞是使用一次判定的Enter

前面加個Int變數然後在碰撞判斷裡面加上碰撞一次+1

然後Update裡面寫上If( 變數名稱 == 想要循環的次數 )

接著後面就可以自由變化啦(鬼聽得懂你在說什麼)

 

看是要轉換場景還是傳送到場景某個位置等等,這些比較基本也都可以靠這套就玩得出來的你可以試試

 

以下是程式碼

 

    public Transform Move_Tran;
    public Transform Player_Tran;


    void Start () 
    {
        Player_Tran = GetComponent<Transform> ();
    
    }

    void OnTriggerEnter2D(Collider2D col)
    {
        if (col.gameObject.name == ("Move_Tri")) 
        {
            Move_Tran = GameObject.Find ("Trans").GetComponent<Transform> ();
            Player_Tran.position = Move_Tran.position;
        }
    }

 

來解釋一下,Transform分別弄了兩個,一個是角色的位置、另一個則是你要傳送的位置

Start裡面是抓取這個程式碼掛著的物件的資源,假如這個程式你不打算擺在玩家身上就不能這樣寫喔(對沒錯,我在偷懶)

 

程式不掛在某個想要抓取資源的物件上時,一般我會這樣寫

Player_Tran = GameObject.Find ("玩家的物件名稱").GetComponent<Transform> ();

 

聽說業界一般情況下都是另外建立一個Manager然後把零碎的控制程式掛在那

也就是說不會讓遊戲開發中發生玩家( Player )身上掛了一堆2266的程式碼

在不需要用到的時候也比較方便Destory,需要的時候再生成Prefab就OK

不然會吃效能,不知道是不是真的

 

不過目前我們弄得這些小遊戲應該不需要想到這麼多(因為要說效能也只有笑能而已)

 

傳送的位置只要在Inpector欄右鍵建立一個GameObject然後改名為Trans,把它拉到你想要傳送的地方後就OK了

接下來就是建立你要碰到後進行傳送的觸發點,把它改名為Move_Tri,加上Rigibody2D跟Collider2D( 這個看你想要哪種 ),然後Trigger打勾勾

 

不知道各位有沒有發現,目前我只講了傳送要怎麼做,並沒有說到輪迴

因為只要知道傳送怎麼做之後,要做到輪迴地圖絕對很簡單

你可以試著想想

 

假設你想做一個單行道,然後左右兩邊不能走

那就左右兩邊設置兩道牆

把碰撞設定成兩個,傳送點的位置也設定兩個

可以完成一個簡單的輪迴啦

 

簡單的說

當你碰到A碰撞,傳到的A點是在B碰撞前面

當你碰到B碰撞,傳到的B點是在A碰撞前面

 

不過這個方法要請各位記住,傳送到的點絕對要在角色走動空間的碰撞前面

不然就真的會發生鬼打牆事件了,你可以玩玩看

 

你可能會問

蝦?就這樣?

 

我只能回答

對就醬ww,但這是我的方法,可能別人的方法更棒

這次就到這裡吧,下次看看有玩出什麼新的會在更新

創作者介紹
創作者 廢需廢墟 的頭像
erichi2023

廢需廢墟

erichi2023 發表在 痞客邦 留言(0) 人氣( 746 )