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

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

你的生命是人類的貨幣——用Unity實現(xiàn)《Seed》(一)

2019-10-31 18:13 作者:皮皮關(guān)做游戲  | 我要投稿

作者:Yumir


嗨,大家好,我又回來啦。

這次復刻的游戲是Ludum Dare第44屆72小時多人組的“Seed”,比賽主題是:“你的生命是貨幣”,而“Seed”說:“‘你’的生命,是‘人類’的貨幣“。

下面是原作的試玩頁面,資源較多可能加載時間有點長,但:

強烈強烈強烈推薦大家都先去玩一下!一周目只需要幾分鐘,但玩了之后你就能再直接不過地體會到游戲想要傳遞出的東西。

游戲想要表達的思想,正可謂是典型的獨立游戲精神:https://avavt.itch.io/seed


知道屏幕前的你有沒有對到電波,我覺得這個想法簡直酷斃了,和每一個喜歡這個游戲的人一樣著了魔似的想要讓植物“獲得勝利”,在一次又一次的嘗試中覺得這個游戲越來越有趣,我覺得這一切都是有意設(shè)計的。比如:

1、除了第一顆樹其他樹都必須在綠地上種植,并且樹的變異是漸進的,不能隨便變異。這讓我想起了沙漠綠化,還帶著一點蜜汁生物科學。

為了讓你能理解我在說什么,我用思維導圖簡單表示了一下游戲中樹的變異邏輯和基本屬性。

樹的變異邏輯

2、樹被砍伐之后會留下一個木樁。當全部的樹都被人類的推土機推掉的時候畫面上可以看到密密麻麻的樹樁。

3、種的樹越多,人類更多。但人類是有壽命的,并且可以被食人花殺掉。

當然還有更多的地方,不然怎么值得我這么心動呢,只是再說下去就失去玩這個游戲的興趣啦!感興趣的同學可以點擊開頭的鏈接去玩玩看,因為我的游戲還沒有做完噠!


這么有趣的游戲怎么能不試著動手做(shouku)一下,慣例第一步是一邊思考怎么做(我的目標是盡可能使用簡單的少量代碼的制作過程),一邊準備素材。

有嘗試過像素的同學應該知道,像素圖都是一個像素一個像素畫的,和實際游戲的比例是不一樣的,如果要按照游戲畫面比例畫的話就會導致你扣N*N像素為一個像素這種無法形容的行為(我一開始還真是這樣干的)。

我現(xiàn)在畫面比例是16:9,在PS里面繪制素材的時候畫布是1024*576,最后還是需要3*3為一個像素去修圖,實際上根本不需要擔心物體的比例,因為在unity里面是可以設(shè)置縮放的,所以如果萬一同學們需要自己畫素材就不要像我一樣踩雷了。

在Unity中調(diào)整修改這兩個數(shù)值

于是我扣像素圖扣到做噩夢了,我覺得主要是因為我想要把游戲里第一顆種子種下的動畫復原出來,但是這實在是太難了,所以后來我還是自己畫了一個12幀的動畫(但這是后來才完成的,中間我又去做了其他的素材)。

第一顆種子的動畫

在unity中制作動畫的方法在上一篇文章中提到過,而且還制作了一個很可愛的游戲哦W,傳送門:https://zhuanlan.zhihu.com/p/86551338


你可以看到動圖中除了12幀大樹生長的圖片之外還有一些其他的東西,這里用到了遮罩。

遮罩是個好東西,我的上一篇文章復刻的游戲的原作者也很喜歡這個功能,很簡單又很有趣。

只需要將綠色土地的Mask Interaction設(shè)置為“Visible Inside Mask”,新建一個Sprite Mask,選擇一個圓形的圖片作為遮罩的Sprite,并設(shè)置Order in Layer的值,使其與綠色土地的值一致,將游戲物體保存為預制體就可以一直使用他啦。

UI按鈕也用到了遮罩(為了不多畫素材?。︰I中的遮罩使用就簡單很多了,只要在被遮擋的UI物體的父物體上添加一個mask組件就可以了,但是相對來說也沒有前面的Sprite Mask靈活。

I have a FaFa, I have a Mask, En! FaFaButton !

樹的預制體是我這段時間除了畫素材之外花費時間最多的地方,我想了很多方案,遇到了很多問題,到現(xiàn)在其實也沒有完全確定實施哪一個。

-------------------廢話不看分割線Began-----------------------

開始制作前首先要了解清楚需求,我需要一個通用的樹的預制體,一開始是一個樹苗,后來是一顆大樹,小樹苗不會被砍不需要碰撞體,大樹會被砍所以需要碰撞體,大樹長成后會滋養(yǎng)土地,也就是將Mask遮罩一點點放大。

方案一:動畫控制碰撞體的啟用


方案二:通過兩個圖片的顯示和隱藏卻換有無碰撞體的狀態(tài)。

因為樹被攻擊的時候是會抖動的,所以我加了一個狀態(tài),然后我遇到了這樣的問題:

雖然明顯是因為我傻但是我...

好吧就是我傻。

解決方法:加一個樹的游戲物體,在動畫結(jié)束之后顯示,在樹上加一個狀態(tài)機,idle狀態(tài)什么都不做,被攻擊的時候抖兩下。

動畫中圖片切換:


還有很多問題,比如部分被攻擊的時候的動畫是不同的,人類的動畫只有裝飾物有差別,那么可不可以做到只用一個預制體去制作呢,通過查閱資料找到一個替換動畫的方法:https://docs.unity3d.com/ScriptReference/AnimatorOverrideController.html

但重寫動畫狀態(tài)機的消耗很大,而且所有的同類型游戲物體都用同一個狀態(tài)機意味著一旦更改就是全部都改了。于是我又白干了,但是我學到了新的知識,所以我還是開(ku)心(zhe)的分享給大家。

通過一番測試實驗最終答案只有一個——我確實需要逐個植物和人類做不同的預制體。

-------------------廢話不看分割線End--------------------------

由于我打算導出APK文件,所以操作上不能繼續(xù)沿用鼠標左右鍵的方法,于是我想到了使用拖拽,后來發(fā)現(xiàn)拖拽的用戶體驗不行,又推翻,改為點擊選擇種子,再點一次取消選擇。為此畫了一個用于標志選中的框框,順手做了個動圖,也是全新體驗。

public?void?SetTreeSeed(SeedType?seedType,?Transform?transform)

????{

????????if?(index.transform.position?==?transform.position?&&?index.activeInHierarchy)

????????{

????????????//如果同一位置點擊兩次????????????index.SetActive(false);

????????}

????????else

????????{

????????????index.SetActive(true);

????????????index.transform.position?=?transform.position;

????????}

????}

?

這里通過標志圖片的位置和是否顯示來判斷當前是否已經(jīng)選中種子,如果位置一致并且是顯示狀態(tài),說明上一個選中的就是這個位置。因為這個方法是在點擊種子按鈕的時候才觸發(fā)的,所以并不會讓標志出現(xiàn)在其他位置。

至于種子的CD則是在預制體中添加一個灰色的image,將其作為遮罩的子物體,放在樹種圖的前面,將“Image Type”設(shè)置為“Filled”通過協(xié)程控制“Fill Amount”實現(xiàn)CD效果。

IEnumerator CD()

????{

????????isCDOver = false;

????????CDImage.fillAmount = 1;

????????while (CDImage.fillAmount > 0)

????????{

????????????yield return new WaitForSeconds(0.1f);

????????????CDImage.fillAmount -= 1/(CDTime / 0.1f);

????????}

????????isCDOver = true;

????}

?

樹種UI按鈕的CD效果

由于游戲內(nèi)容太多,這里會將教程分割一下,以上是第一部分的內(nèi)容。還有很多未知的問題和未知的坑在后面等著大家。

怕了沒?

所以我決定看看有多少同學想看我做完,如果你也對這個游戲的制作分享感興趣就給我點個贊吧,如果沒有很多人想看,那我分享下幾個我覺得比較有趣的功能就結(jié)束啦~

我已經(jīng)把目前的進度上傳到GitHub,并且會定時更新,因為這次的素材做的不太好就不單獨弄網(wǎng)盤咯。

https://github.com/peiyl/Seed

——分割線離遠點——


歡迎加入游戲開發(fā)群歡樂攪基:869551769

有意向參與線下游戲開發(fā)學習的讀者可戳這里:http://www.levelpp.com/


——再來個分割線——

最后有人對我自己原創(chuàng)制作的環(huán)保游戲感興趣嗎,可以在評論區(qū)留言哦w


你的生命是人類的貨幣——用Unity實現(xiàn)《Seed》(一)的評論 (共 條)

分享到微博請遵守國家法律
民县| 日喀则市| 汉寿县| 连云港市| 静宁县| 西畴县| 庄河市| 肃北| 堆龙德庆县| 河源市| 普宁市| 云霄县| 宜良县| 浙江省| 西乌珠穆沁旗| 平乐县| 宁阳县| 夏河县| 翁源县| 长汀县| 凤冈县| 伊春市| 宜黄县| 南澳县| 乐亭县| 修武县| 通辽市| 平南县| 荃湾区| 民乐县| 本溪市| 从化市| 芮城县| 大邑县| 托里县| 江都市| 开鲁县| 大丰市| 安新县| 乐山市| 南溪县|