在騎砍嘗試“如何在3d游戲里玩一個(gè)2d拳皇人物”的感想

(首先本文半月前在我的知乎和中文站發(fā)過(guò)一次,不過(guò)感覺(jué)bilibili的小伙伴們對(duì)我的騎砍拳皇視頻某些概念不是很理解,就發(fā)一遍b站,解釋一下相關(guān)機(jī)理和想法)
前段時(shí)間做了下騎砍版的蔡徐坤后

,想到之前本來(lái)一直有個(gè)想法想試試在騎砍里操作一下2d拳皇人物,但看了下拳皇一個(gè)動(dòng)作分解出來(lái)二三十幀圖片就沒(méi)心情做了。這段時(shí)間突然有了一兩天空閑就把這個(gè)想法做著玩了。
初步效果見(jiàn)下視頻,做的很隨意,效果一般般
bilibili視頻:

下文將對(duì)上面這個(gè)拳皇視頻的設(shè)定做出粗略解釋:
如何在一個(gè)3d游戲里玩一個(gè)2d的人物。首先要相信這個(gè)操作可以實(shí)現(xiàn),其次要相信騎砍也可以實(shí)現(xiàn)這個(gè)操作。想要做出首先要從這幾點(diǎn)考慮:
1.模型設(shè)定:游戲里2d的圖片有的游戲里可以認(rèn)為他是一張位圖,有的可以看作或就是一個(gè)帶了一面貼圖的片面模型而已(比如紅警里一切事物看著都像圖片一樣,其實(shí)紅警里面的人物戰(zhàn)車房子有的是動(dòng)態(tài)位圖效果有的是3d模型,所以3d模型也能表現(xiàn)出2d的視覺(jué)效果)。所以與正常的3d游戲的模型相比,前者我們?cè)谟螒蚶镏荒芸茨P偷囊粋€(gè)面并且正視這個(gè)面,而后者我們可以從各種角度看模型的不同的許多面的組合。所以顯而易見(jiàn),2d人物模型必須保證僅有的有貼圖的面在正常的3d人物行為操作時(shí)始終保持與游戲攝像機(jī)垂直(即玩家視角),才能始終在3d游戲世界里看到且正視2d人物的全貌,否則老看見(jiàn)紙片縫隙狀或就像把書頁(yè)側(cè)著看一樣,在3d世界里操作2d人物體驗(yàn)就不會(huì)太好,就像你把fps游戲鏡頭轉(zhuǎn)個(gè)幾十度并保持這個(gè)角度操作一樣,就會(huì)受操作習(xí)慣影響不適應(yīng)。
2.移動(dòng)等行為(animation/material/PROP):保證第1點(diǎn)2d人物模型始終與鏡頭垂直后,移動(dòng)等人物行為可以按照正常的基于3d模型游戲人物來(lái)編寫,空間任意角度拐彎均可。其中,由于2d游戲里一般默認(rèn)人物左移為后退,右移為前進(jìn),而上下移動(dòng)(比如閃客快打)與左右移動(dòng)的動(dòng)畫是一致的,所以也可以這么改正常設(shè)定,將wasd重新定義為d前進(jìn),a后退,ws在鏡頭法線法線側(cè)移(只需操作說(shuō)明里說(shuō)明一番,讓玩家接受這個(gè)說(shuō)法形成新的操作習(xí)慣即可,很多游戲的通用做法讓我們習(xí)慣了正常游戲的鏡頭設(shè)置,其實(shí)如果把玩家鏡頭架設(shè)在人物側(cè)面,也不是不行,比如日本很多模擬器3d格斗游戲鏡頭就不是像fps一樣針對(duì)人物后腦勺或側(cè)偏一點(diǎn),差不多在偏離了45度,為什么這么做,因?yàn)槭歉穸酚螒蛞攸c(diǎn)給玩家展示人物的酷炫動(dòng)作和面前的打擊,但又是3d人物3d格斗,要保證通暢視角和玩家操作習(xí)慣,所以剛開(kāi)始你會(huì)覺(jué)得這種游戲按w像是斜著前進(jìn),但習(xí)慣了那就是前進(jìn)。所以我現(xiàn)在只是調(diào)整wasd的方向概念以適應(yīng)2d人物只能一張側(cè)身圖片出現(xiàn)3d世界的情況,這時(shí)候我們就要改變游戲心理習(xí)慣去人物此時(shí)的順鏡頭人物右移實(shí)為前移,鼠標(biāo)旋轉(zhuǎn)晃動(dòng)改變?nèi)宋镛D(zhuǎn)向設(shè)置不變,因?yàn)橥ǔgR頭/人眼的空間轉(zhuǎn)動(dòng),對(duì)身體其他的點(diǎn)是會(huì)同步相對(duì)轉(zhuǎn)動(dòng)的,這就是3d騎砍玩2d人物要適應(yīng)的新的操作習(xí)慣)
3.人物動(dòng)畫(animation/material/PROP):雖然騎砍不直接支持動(dòng)態(tài)位圖,但是2d還是3d的動(dòng)畫都可以看作模型(貼圖)隨時(shí)間幀的變化,所以可以用代碼強(qiáng)行表達(dá)這個(gè)模型(貼圖)隨時(shí)間幀的變化這個(gè)事件,然后就像正常的游戲引擎一樣如何用代碼將動(dòng)畫與動(dòng)作事件聯(lián)系起來(lái)去編寫,只不過(guò)多了需要不時(shí)調(diào)用“模型(貼圖)隨時(shí)間幀的變化事件”的步驟而已。(相關(guān)效果還可以類比我以前的騎砍手機(jī)看短片或電視機(jī)功能

)
4.被打擊區(qū)域(hitbox):就拿拳皇來(lái)說(shuō),如果用一個(gè)與人物輪廓相切的矩形把人物套住,其實(shí)矩形余不出多少空隙,所以可以把打擊面設(shè)定成一個(gè)立方體,人物平面法線方向的寬度放小一點(diǎn),避免看上去明顯劈到空氣也判定傷害。(上面視頻打擊區(qū)域控制的就比較僵,以后有時(shí)間改改)
5.打擊區(qū)域(hitbox):3d的人物如果引擎不支持骨骼點(diǎn)的坐標(biāo)獲取,肢體在空間隨意角度扭轉(zhuǎn)沒(méi)有一個(gè)合適的參考系是很難強(qiáng)行算出大致的軌跡的,但2d的人物就不一樣了,因?yàn)槟P椭挥幸粋€(gè)面,所以這個(gè)面上選定了一個(gè)模型位置點(diǎn)(一般是該矩形面的底邊中點(diǎn))后,一個(gè)相對(duì)的二維坐標(biāo)系就可以確定了,然后每個(gè)動(dòng)作較少的幀數(shù),不難估算出手的打擊區(qū)域,哪怕擬合個(gè)過(guò)肩摔的軌跡。
6.為什么不采用3d模型制作2d人物:因?yàn)?d游戲鏡頭各種角度轉(zhuǎn)動(dòng),所以3d的多面模型無(wú)法保證每個(gè)角度看到的都是一個(gè)沒(méi)有瑕疵的2d人物全貌,比如我往期視頻做了一個(gè)馬里奧,

表面是2d風(fēng)格的馬里奧的3d模型,但很多角度看過(guò)去就會(huì)看到模型上有很多從紙片縫看一樣的效果,因?yàn)檫@個(gè)馬里奧3d模型有多個(gè)紙片面構(gòu)成,那這樣就不好看了。
7.為什么不利用騎砍的界面系統(tǒng)(presentation):界面圖片由于距離游戲鏡頭位置恒定,體現(xiàn)3d空間移動(dòng)比較突兀,空間轉(zhuǎn)彎角度處理不精細(xì),空間打擊區(qū)域難以計(jì)算,最重要的是難以體現(xiàn)與其他物體或人物的在相對(duì)位移時(shí)的局部或全部遮擋(比如游戲里老婦人在八神庵面前經(jīng)過(guò)對(duì)八神庵圖片產(chǎn)生的遮擋變化,就是騎砍的presentation系統(tǒng)做不到的)。
-------分割線-------
就這個(gè)我談?wù)勔恍╊愃频默F(xiàn)象,比如b站上很多up會(huì)將一些動(dòng)漫或其他真實(shí)人物的表情p到某個(gè)時(shí)期的熱點(diǎn)人物(如回家的誘惑的李云龍臉ai換臉),還有也會(huì)將其他游戲的元素嫁接到其他游戲(mugen承包的六承恩蔡徐坤的格斗),其中,2d的元素放到3d世界中很多up采用的是P圖或視頻剪輯特效。其實(shí)以游戲程序也能達(dá)到這個(gè)效果。優(yōu)劣區(qū)別是前者可以很方便快捷的合成圖像(此處快捷方便是相比于引擎不直接支持動(dòng)圖的游戲來(lái)說(shuō)),但后期修改和效果的自由性就不如后者了,后者以程序操作,很多效果動(dòng)作因?yàn)榭梢宰杂刹僮麟S時(shí)錄制,所以自由度很高,效果不滿意可以重新自己“排練排練劇本”。
再談?wù)?,由于工作?huì)接觸bim,bim這個(gè)工程軟件其實(shí)就像一個(gè)游戲引擎一樣,把工程項(xiàng)目3d場(chǎng)景化,會(huì)利用模型碰撞判定判斷一下施工環(huán)境等等,有些操作在編游戲也會(huì)遇到類似的。所以bim其實(shí)可以當(dāng)游戲玩嘛,只是不太好玩。再舉例execl,最初版本是內(nèi)置了一個(gè)小汽車游戲的,以前好像還有人做了Excel版的英雄聯(lián)盟。
然后談?wù)劰硇?,是bilibili視頻的支柱題材了。其實(shí)游戲程序也可以造成鬼畜效果,在玩一些游戲和自己編寫騎砍的一些東西的時(shí)候,遇到有的游戲動(dòng)作按鍵處理比較僵,多次快速同一個(gè)鍵不等這個(gè)動(dòng)作完成的時(shí)候,人物動(dòng)作和音效就會(huì)呈現(xiàn)鬼畜的效果。
所以有些工具不必糾結(jié)它身上的標(biāo)簽,在乎別人說(shuō)它是什么工具,該用來(lái)做什么,只能用來(lái)做什么,放開(kāi)想象力的枷鎖,玩嗨一點(diǎn)。