今天來試試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,但這是我的方法,可能別人的方法更棒
這次就到這裡吧,下次看看有玩出什麼新的會在更新
請先 登入 以發表留言。