最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

我們來用Unity做個2D像素boss戰(zhàn)(2)角色篇

2022-04-13 15:07 作者:皮皮關(guān)做游戲  | 我要投稿

(本文作者 @酒九大魔王)

好久不見米娜桑,我,酒九大魔王又來了。

原本上一次的Boss制作教程更新完了以后就準備更新制作玩家部分的文章,結(jié)果因為種種原因才拖延到今天發(fā)出來(并不是忘了)。

蒼白無力的辯解


所以廢話不多說,本文的主題就是關(guān)于Boss戰(zhàn)項目中的玩家的制作。Boss部分的內(nèi)容傳送門如下:

好了,咱們開始。

包含歉意


  • 準備工作

找到大家自己喜歡的玩家素材。當然這里建議大家選擇素材時要注意圖片的大小、所包含的動畫數(shù)量、是否已經(jīng)被等比列劃分好了等等。這里了我選擇了小紅帽的素材(本人自稱)。

截取的部分素材


然后和Boss制作的流程一樣,我們導入進Unity之后,調(diào)整到合適的單位像的大?。≒ixels Per Unit),進行切割(Sprite Editor)。這一次我們的素材依然是整整齊齊排列好的,但每個小人的大小不統(tǒng)一,所以了這里我們還是選擇Grid By Cell Count模式來進行切割。

把素材都切出來后,選擇一個圖片作為在游戲中的人物并在這個物體身上掛載好需要使用的各個組件,還要記得將素材中的動畫都制作出來。制作動畫的流程就是在Project窗口右鍵新建出Animation,命名好之后將一個一個的切好的精靈圖拖進去,就完成一個動畫片段啦。再將這些動畫片段拖入玩家的Animator中去。之后我們就可以在代碼中控制動畫播放了。別忘把碰撞體調(diào)整到一個合適的位置大小。

這里的流程比較繁瑣,但是大部分2D游戲都是一樣的。大家可以參考一些的視頻學習:

玩家角色需要的組件
Animation窗口


現(xiàn)在準備工作基本上已經(jīng)完成,下面就是編寫玩家的腳本內(nèi)容了。玩家身上只會掛載兩個腳本,分別是PlayerCharacter和PlayerController。

現(xiàn)在讓我們來編寫其中的內(nèi)容吧。

  • PlayerCharacter腳本

這個腳本負責玩家的所有屬性和行為,所以在編寫之前,我們要想清楚需要做什么。

在我的這個實現(xiàn)里,玩家的屬性包括了:血量,速度,傷害數(shù)值,滑鏟CD(閃避CD)等等。在后面會直接通過代碼塊貼出來方便大家理解。

玩家的行為是重點,在這個項目中玩家擁有以下的行為:移動,跳躍,輕攻擊,重攻擊,滑鏟,受傷,無敵時間。咱們一個一個來實現(xiàn)他們。



以上就是接下來會使用到的一些數(shù)據(jù),我在代碼中也會進行說明。

移動:



本次利用的是Rigidbody2D的移動,直接更改剛體的速度來控制左右的移動。

在這個代碼中我們要考慮到,主角移動時需要朝向前進方向,因此我們在游戲一開始就記錄下玩家的初始朝向NowDir(這里是一個Vector3值,記錄玩家的Transform.localScale)根據(jù)這個來決定我們移動時的朝向。當然在移動時咱們就播放奔跑動畫(Run)和對應(yīng)的音頻,而沒有輸入時就播放待機動畫(Idle)且暫停音頻播放。

跳躍:


??


跳躍這一行為,是通過一個過程來實現(xiàn)的:首先檢測玩家是否滿足跳躍條件,再進行跳躍,然后進行下落操作。因此,這里分別寫了三個方法來負責。

首先是跳躍的基本操作內(nèi)容,就是播放跳躍動畫(Jump)和給剛體一個向上的速度,還有就是通過JumpConut的跳躍計數(shù)器來限制玩家進行多次跳躍。

然后是檢測地面,這里我是這樣做的:在玩家腳下位置放一個空物體(JumpBox)作為玩家的子物體,以它為中心來檢測指定的地面層級(ground),之所以這么做是為了實現(xiàn)空氣跳(就是當看上去覺得角色接觸到地面但實際上還未真正碰到地面時,也可以進行跳躍),改善手感。

最后就是下落的部分,其中的主要操作是播放下落的動畫(Fall)并且要在玩家起跳之后給一個向下的加速度。不然的話玩家的跳躍落下就會像一個氣球一樣,手感很差。而且還有一個好處就是:這樣實現(xiàn)之后,輕擊跳躍鍵和長按跳躍鍵的跳躍高度也不同。

輕攻擊和重攻擊:



這里輕重攻擊腳本中的內(nèi)容其實是差不多的,這里的攻擊效果是模仿了《死亡細胞》的攻擊時不可移動但是存在向前方小幅度前進的速度補正。為了實現(xiàn)連擊了,兩個腳本共用一個連擊計數(shù)器(ComboCount)可以實現(xiàn)輕重攻擊之間的切換。當然連擊銜接是有時間限制的,所以需要一個方法來倒計時,在規(guī)定時間中進行了輸入才可以接上,一旦超過就從頭開始。攻擊到敵人的判定方式還是選擇的利用OnTriggerEnter2D來實現(xiàn)敵人檢測,但是上方的代碼中并沒有打開HitBox的代碼,那么是在哪兒打開的呢?答案是在通過錄制的功能錄制在了攻擊動畫里。步驟如下:

在玩家物體下新建一個帶有BoxCollider2D組件的物體(HitBox),把碰撞體組件中的IsTrigger勾選上,然后關(guān)閉掉默認物體的顯示。

接下來點擊玩家,并打開Animation窗口,在攻擊動畫中點擊左上角的錄制按鈕(那個紅色的位置)就開始錄制了。錄制過程中在合適的時候打開HitBox,并且根據(jù)動畫攻擊的范圍大小調(diào)整HitBox的大小,最后關(guān)閉HitBox。完成錄制之后關(guān)閉錄制,這樣做完之后當我們播放這個動畫時,HitBox就會自動打開關(guān)閉,并且自動調(diào)整大?。ň珳使舻綌橙耍?。

Animation界面
效果展示

滑鏟:


??


這里的滑鏟可以理解為閃避,也就是朝一個方向快速移動,并且移動的時候是可以穿過敵人的(與敵人不會發(fā)生碰撞)。當然既然是滑鏟,在空中肯定是不能施放的。基本思路就是使用滑鏟時將玩家的層級放入一個與敵人沒有碰撞的層級中去,開啟一個協(xié)程在一定時間內(nèi)向前方移動(更改剛體速度),時間結(jié)束后再將玩家放回原來層級,進入滑鏟CD。

各個層級之間的碰撞情況

受傷和無敵時間:

受傷就是被攻擊到之后減少血量,并被擊退(給一個朝后方的速度)。無敵狀態(tài)其實也是將玩家放入一個與敵人不會產(chǎn)生碰撞的層級中去,但為了視覺上體現(xiàn)出玩家處于無敵時間,可以使用一個計時器,將玩家的圖片顯示關(guān)閉再打開制作出閃爍效果。

  • PlayerCharacter腳本

控制腳本中就只需要進行按鍵輸入讀取就好啦。

工程鏈接:

https://pan.baidu.com/share/init?surl=czDhXjecYDR1hzbEwtbpYg

提取碼: im9u

皮皮關(guān)與網(wǎng)易聯(lián)合開發(fā)了完備的游戲開發(fā)線上課程,第一期班本周五即會開班。想要進軍游戲開發(fā)領(lǐng)域的童鞋,可戳下面鏈接了解課程詳情:

https://ke.study.163.com/course/detail/100103487

如果有任何問題,還可以通過以下入口與網(wǎng)易小伙伴取得聯(lián)系,有什么問題直接正面懟他(戰(zhàn)術(shù)后退)

同時,歡迎加入游戲開發(fā)群歡樂攪基:1082025059


我們來用Unity做個2D像素boss戰(zhàn)(2)角色篇的評論 (共 條)

分享到微博請遵守國家法律
华安县| 建昌县| 略阳县| 松阳县| 临高县| 呼图壁县| 监利县| 错那县| 图木舒克市| 盐池县| 长宁区| 蓬莱市| 宣恩县| 垦利县| 新泰市| 余江县| 庐江县| 大宁县| 承德市| 天祝| 沂源县| 江永县| 无棣县| 望奎县| 博野县| 马公市| 聂荣县| 灵山县| 都昌县| 南皮县| 宜君县| 桃江县| 南陵县| 漾濞| 象州县| 新昌县| 屯门区| 英山县| 游戏| 广宁县| 博客|