效果預覽
獲取代碼
私信或留言。
游戲介紹
● Github上的代碼,不能進行合並操作,修改以后,功能類似2048,空白塊賞隨機位置,生成2,可以往左、右、上、下滑動,數字會朝着指定方向運動,相鄰元素如果相同,則合並。
游戲代碼參考:https://github.com/potato47/1024
工程結構介紹
● 游戲分3個場景,game、sleep、success,sleep是不玩顯示的,success是成功顯示的,game是游戲核心場景,玩游戲都在此場景進行。
● 游戲中的數字塊都在TileLayer節點上,游戲核心邏輯Map掛在到Map節點上。
● 每個數字塊,通過對預制初始化,放置在界面上,預制Tile負責數字塊的顯示,掛在有Tile腳本組件。
算法介紹
● 游戲的核心算法在Map腳本上,通過滑動結束點和起始點,判斷滑動的方向,可以向左、右、上、下滑動,滑動后執行相應的邏輯onLeftSlide、onRightSlide、onUpSlide、onDownSlide,根據方向進行合並操作,相鄰的元素,如果是相同的則合並,如果是空的,則向滑動方向移動。
● 核心的算法mergeArray,對傳入的數組往右移動,然后相同的合並。
● 如四格的數字分別是[2,0,0,2],往右滑動以后,就會變成[0,0,2,2],最右邊的相同,就執行合並操作,最終變成[0,0,0,4]。
● 又如[2,0,2,2],第一步移動后變成[0,2,2,2],從最后側開始合並,合並第一步變成[0,2,0,4],再移動變成[0,0,2,4]。
● 類似上述操作,無論是向上、下、左、右滑動,只需要改變傳入的數組元素的順序即可。