unreal 卡牌游戲--1、準(zhǔn)備界面
前言:我喜歡把游戲分兩類(lèi),一類(lèi)是角色扮演游戲,另一類(lèi)則是資源管理游戲。
前者會(huì)選擇一個(gè)具體角色的視角,所以他的界面會(huì)以角色為主。
后者是一種上帝視角,他的視角是獨(dú)立的。
我們會(huì)創(chuàng)建一個(gè)character(人物)然后綁定視角,后者我們只需要任意一個(gè)actor(物體)綁定視角即可。
所以今天的重點(diǎn)是如何使用camera。
一、理論介紹
????在計(jì)算機(jī)顯示的時(shí)候,我們首先會(huì)讓pc創(chuàng)建一個(gè)顯示界面,然后繪制三角網(wǎng),然后插入顏色。這個(gè)顯示的界面是有大小的,超過(guò)界面的三角網(wǎng)會(huì)被剪切掉,降低計(jì)算性能,這個(gè)顯示界面叫做rendertarget。在opengl中也叫rendertarget。
????unreal中的rendertarget是非常自動(dòng)化的,很多東西unreal已經(jīng)替我們做了,大部分情況我就就簡(jiǎn)單的設(shè)置一下就好了。
????然而rendertarget只是一個(gè)界面口,負(fù)責(zé)繪制圖像,在面向?qū)ο缶幊讨凶罴芍M讓這個(gè)已經(jīng)有專項(xiàng)能力的人加入其他功能,否則后期維護(hù)極其困難,所以u(píng)nreal把它打包到了一個(gè)叫camera的類(lèi)中了。camera這個(gè)取得很蠢,因?yàn)閏amera可以導(dǎo)出跑,還可以旋轉(zhuǎn),這不是攝像師的干活嘛。
????所以unreal中的rendertarget實(shí)際上是現(xiàn)實(shí)生活中的攝像機(jī),camera實(shí)際上是帶著攝影機(jī)的攝像師。
? ? 這可不僅僅是unreal中是這樣,從opengl到direct,unity,godot都是這吊樣。所以要理解書(shū)呆子沒(méi)有現(xiàn)實(shí)生活的的內(nèi)心世界,才能更好的理解計(jì)算機(jī)領(lǐng)域。
二、游戲立項(xiàng)
? 1、創(chuàng)建Game Mode Base 和 Game controller

因?yàn)檫@個(gè)卡牌游戲可能有多種游戲模式,所以我創(chuàng)建一個(gè)一個(gè)教humancontroller,用來(lái)控制人類(lèi)種族。
2、設(shè)置mode base

設(shè)置后就是我的card game mode base了,而不是unreal默認(rèn)展示的game mode base了。
3、設(shè)置controller
進(jìn)入cardgamemodebase的藍(lán)圖

4、打開(kāi)human card game controller
接下來(lái)介紹下這誤導(dǎo)性十足的破玩意。

????可以看到中間有個(gè)攝像機(jī),哈哈這是假的,unreal開(kāi)發(fā)人員生怕使用者界面空空的吧自己嚇到,所以放了這個(gè)攝像機(jī)在里面,實(shí)際上只有安慰和誤導(dǎo)作用。
????而且誤導(dǎo)性十足。
????比如星際爭(zhēng)霸2是RTS游戲,爐石傳說(shuō)是一種卡牌游戲,守望先鋒是一種第一人稱設(shè)計(jì)游戲,有的游戲需要鼠標(biāo),有的需要隱藏。游戲用什么控制,用什么游戲,鼠標(biāo)是否隱藏,是否有大量UI,才是game conrtoller控制的核心。
5、設(shè)置game conroller?
????001、游戲模式

這個(gè)游戲是game+UI,選第一個(gè)。

player controller:角色的控制器。
????控制器分兩種,player controller和AI controller。
in widget to focus:顯示菜單。
????如果是開(kāi)始界面,那就設(shè)置一個(gè),游戲模式會(huì)有其他的方式設(shè)置菜單。
in mouse lock mode:把鼠標(biāo)鎖定在游戲里面
????如果玩過(guò)lol那必須鎖定,如果是爐石,打打牌,聽(tīng)聽(tīng)課,看看片,就不用鎖定了。
hid cursor during capture:隱藏就對(duì)了。
?????002、設(shè)置鼠標(biāo)輸入模式

顯示鼠標(biāo),開(kāi)始點(diǎn)擊事件,如果這里沒(méi)開(kāi),那就是聾子。
總結(jié)一下:controller就是用來(lái)控制鼠標(biāo)鍵盤(pán)和事件的,全局的這些都在這里設(shè)置。除非喜歡過(guò)程編程。如果不設(shè)置這一步也可以,那可能就找不到鼠標(biāo)了,點(diǎn)鼠標(biāo)也沒(méi)反應(yīng)。
三、創(chuàng)建camera
如果我一個(gè)程序顯示界面都沒(méi)有,連文本都沒(méi)地方顯示,那還搞毛啊。
所以我需要設(shè)置游戲是否需要隱藏鼠標(biāo)后,再創(chuàng)建一個(gè)camera,鼠標(biāo)能夠移動(dòng)界面,就到結(jié)束好了。
001、創(chuàng)建actor,取名camera。
如果看過(guò)我前面你的文章就知道unreal中的actor包括游戲的所有需要空間位置和不需要空間位置的所有物體,這tm就是廢話啊,他就是用來(lái)分配一個(gè)內(nèi)存,然后保存一些玩意的。程序員和工程師的表達(dá)能力非常堪憂,也有可能是我對(duì)actor的理解不夠深刻。

002、進(jìn)去創(chuàng)建camera

unreal這里就是管理如何繼承空間位置的,因?yàn)橛螒蛑饕强臻g位置的變換,這里分配的資源都會(huì)在unreal中注冊(cè),這里的繼承和編程的繼承完全不同,如果喜歡c++的都懂,自己去學(xué)。

003、添加spring arm
?添加一個(gè)彈簧臂,如果直接管理他的空間坐標(biāo)也是可以的,但是彈簧臂可以進(jìn)行一些碰撞判斷,不會(huì)嵌入墻里,不會(huì)穿模,是個(gè)好東西啊。個(gè)人非常推薦使用。

界面變了,那個(gè)球球連個(gè)根紅線,接上了攝像機(jī)。

這里可以調(diào)整手臂的長(zhǎng)度,我就設(shè)置為1000。

調(diào)整角度

也可以在transform中設(shè)置

關(guān)閉spring arm的碰撞,如果不管會(huì)看天花板。

004、高速player controller我換攝像師了
????右鍵屏幕,get player controller

連連看

保存完成。
四、實(shí)例化camera
把camera拖進(jìn)屏幕里面

這玩意就是游戲關(guān)卡初始化需要默認(rèn)加載的東西,如果不拖進(jìn)去,是不會(huì)使用的。
運(yùn)行

總結(jié):沒(méi)啥好說(shuō)的,unreal入門(mén)篇都說(shuō)完了。