unity2D横版游戏教程-1 让人物动起来
在看完了麥扣老師的小狐貍的視頻后,為了鞏固練習,我另外找一個素材包來練手,順便寫成一個教程讓自己更加熟練,同時當自己遺忘時可以回頭查閱。另外,這個教程我寫的非常詳細,萌新也可以學習。有什么不對的地方或者有疑問的地方,歡迎指正和咨詢。
首先導入素材
然后我們可以先瀏覽一下素材包,一個是Assets,一個是測試場景demo,我們主要看Asset里面有什么,background里面是我們的背景圖片,Items是各種各樣的物品,Main Character存放的就是我們的角色,這里有四個人物,我們用第一個人物就行,Other是一些調色用的東西,Terrain就是我們的地形相關的素材,Traps里面有很多的陷阱,用來增加游戲性。素材包就介紹到這里,其實我們這一節的主要目的還是讓角色動起來,所以用到的東西不是很多,一個是角色,還是就是地形素材。
我們先把角色的所有圖片的Pixels Per Unit(每單位像素)都改成32,因為素材是32像素*32像素的
?接著創建一個空組件(Hierarchy欄右鍵->Create Empty)命名為player,右邊的transform記得reset(重置)一下
?在player里面添加一個組件叫sprite Renderer(精靈渲染器),這個就是用來添加我們角色的模型
?把角色的的idle的第一幀的姿勢拖到剛才的sprite Render里面的Sprite
?這樣我們就創建我們的角色,并且可以再Scene欄中看到我們的角色了
?然后我們把地圖簡單的設置一下
在左邊的hierachy視圖那里創建一個tilemap,tilemap是unity的一個插件,可以很方便的讓我們進行2D游戲地編工作
?命名為platforms
?接著我們從Window->2D->Tile Palette打開我們的tilemap的編輯界面
?Creat New Palette創建一個新的面板,命名為Map,位置可以自己隨便放,但是為了后期更好的管理我創建了一個文件夾專門的放這類的東西,在project欄右鍵creat就可以創建新的Folder,我們這里可以創建一個Map文件夾存放我們的tilemap
在素材包的Terrain里面有兩個png圖片,這兩個就是我們地編的基礎素材了,第一個好像沒有切分,所以我們用第二個,記得把在右邊Inspector那里把像素改成16
?然后直接把這個圖片拖到Tile Palette,位置選擇我們創建的Map文件夾
?回到Hierarchy,點擊platforms,這時候就可以編輯我們的地形了,回到Tile Palette,我們先添加一個簡單的平臺,直接選中Tile Palette里面的方塊就直接直接拖到Scene里面
?這樣我們的第一個平臺就做好了
我們還需要給platforms添加一個碰撞器
我們點擊platforms,在右邊點擊Add Component(添加組件)添加一個Collider組件,搜索tilemap collider 2D,選擇就可以了。
?這樣我們就給我們的地形添加了一個碰撞體,這個collider可以用來檢測物品之間是否發生碰撞,也可以作為觸發器使用。我們這里可以簡單的認為加了collider之后地形就有了實體,人物不會直接穿過去,并且還可以響應對應的碰撞事件,比如人物碰到地形以后會觸發一個事件,這個事件可以用來寫人物跳躍的動畫。
既然地形可以加collider,那么我們的人物也可以加collider,我們給人物也添加一個collider,我們給人物添加的是一個圓形的碰撞器,還有一個盒體碰撞器叫Box Collider 2D,我們不用這個,考慮到素材沒有蹲下的動作而且盒體碰撞體容易和地形發生卡頓。
?然后我們點擊Edit Collider對這個圓形碰撞器進行一個編輯,將它的大小調整到一個合適的位置
?
?我們點擊運行之后就可以發現人物已經站立在了平臺上
然后我們就需要將我們的人物動起來,角色要動起來肯定要有一個力,并且還要響應我們的按鍵的觸發,這個力就是我們的Rigidbody 2D,這個組件可以給我們的角色添加x方向和y方向的力,這樣就能夠讓角色動起來了,所以我們給角色添加這個組件
?但是記得在constraints(約束)那里鎖定z軸,不要讓z軸動起來,因為z軸動起來的話角色就會翻滾起來
然后我們給player添加一個空組件,點擊player右鍵create empty,然后命名為groundCheck,這個東東是為了我們之后檢測人物是否在地面時用的,在這個空的組件右邊屬性面板選擇一個合適的顏色便于我們修改它的transform
?把它放到角色的腳那里就行
?還有就是按鍵的觸發,Edit->Project Settings->Input Manager,這樣我們就進入了按鍵設置
?拉開Axed我們就可以添加或者改變我們想要的鍵位,比如這個Horizontal,這個是x軸方向的鍵位,a和d或者left和right,Vertical就是y軸方向的鍵位
這里已經幫我們綁定好了,我們不需要做任何變動
為了讓角色動起來我們還要給角色添加動畫
創建一個文件夾叫Animation來存放動畫資源
在這個文件夾里面右鍵->create->Animation創建一個動畫命名Idle
?記得在屬性欄勾選Loop,讓我們的Idle動畫循環播放
?然后將這個Idle拖給我們的player,我們就會發現文件夾里多了一個叫player的Animator Controller
?同時在player的Inspector欄多了一個Animator,我們發現Animator Controller已經自動為我們創建并添加上去了,這樣是不是非常方便
?然后我們通過window->Animation,打開Animation和Animator
?選擇player,在Animation欄只有一個Idle動畫,我們給這個Idle添加動畫序列,我們上面說過,角色的動畫都在Main Character文件夾的Mask Dude里面,選擇Idle里面的所有圖片拖到Animation欄里面
?將Samples改成15,就可以播放動畫試試了,Samples越大播放速度越快
同理,我們創建一個run的動畫,選擇player,在Animation欄,點idle下面可以創建新的動畫
?把這個新的動畫命名為run,然后把run的動畫序列拖進去,samples改為20就行
?我們之前不僅打開了Animation欄,還打開了Animator欄,Animator欄是干什么用的呢,Animator是用來進行動畫的切換,打開我們Animator可以發現多了兩個狀態,一個idle一個是run,我們右鍵idle,make transition連到run,同樣run也一樣,這樣我們就可以添加一些條件讓這兩個動畫進行切換了
?
?在Parameters(參數)那里點擊加號可以添加一個變量來作為動畫間的切換的開關
我們添加一個bool變量表示run狀態
?所以我們idle和run之間的連線就可以設置他們切換時的條件,比如我們點擊idle朝向run的箭頭,我們就可以設置什么時候從idle切換到run,記得把右邊屬性欄的Has Exit Time取消勾選,以及把settings里面的Transition Duration設置為0,以后所有動畫之間的連線都要這樣設置
?然后在下面Conditions就可以添加條件了,我們判斷run為真時從idle狀態切換到run狀態
?從run狀態到idle狀態的設置與上面類似
?依次類推,我們再創建兩個動畫,并且設置他們之間切換的條件
分別是jump(起跳)的動畫和fall(下落)的動畫,這里不在一一講解了,這里把相關的操作貼出來,但是記得去Animation文件夾里面把jump和fall兩個動畫的loop time取消勾選,這兩個動畫播放一次就夠了
?
?
?Run->jump和idle->jump的條件都是一樣的,都是jump為true
?Jump->fall的條件是jump為false,fall為true
?Fall到idle的條件是fall為false
?這樣我們除了代碼之外的準備工作就做完了。
然后下面我們就開始進行代碼編寫的工作啦。
鏈接:unity2D游戲之讓人物動起來-下_真的沒事鴨的博客-CSDN博客
總結
以上是生活随笔為你收集整理的unity2D横版游戏教程-1 让人物动起来的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于unity的2D横版游戏开发日志 小
- 下一篇: 横版格斗——技能动作概念