UE5.2《傳送門(mén)-Creating Portal To Another Reality》教程

開(kāi)篇先導(dǎo):
本教程為,UE5.2 商城每月免費(fèi)資產(chǎn)《Creating Portal To Another Reality》所作的中文技術(shù)指導(dǎo)簡(jiǎn)單教程。
因?yàn)槿鄙僦形牡慕坛?,所以順手做了一期,需要配合up的視頻教程一期使用效果更加。
已經(jīng)和作者本人聯(lián)系授權(quán),下面是傳送門(mén)作者本人的youtube地址和資產(chǎn)鏈接,大家如果喜歡可以直接去支持關(guān)注他。
作者的YouTube賬號(hào):https://www.youtube.com/@Zegi/featured

Update: https://www.youtube.com/watch?v=-d4uzt4YSvI
Documentation: https://docs.google.com/document/d/1dr241IMqIYZj3I0w0Q4lYjo-_wm8Lvnk47xL7YEgSLI/edit?usp=sharing
0.? ? ? ? 該資產(chǎn)的特征
1.??????? 快速入門(mén) quick start
2.? ? ? ? 材質(zhì)演示 demo material
3.??????? 添加大于3個(gè)unique portal
4.??????? See事件
5.? ? ? ? 傳送門(mén)的激活方法
6.??????? 如果角色移動(dòng)過(guò)快或FPS過(guò)低
7.? ? ? ? 多個(gè)復(fù)雜的actor碰撞處理
8.? ? ? ? 光源或則其他類型的actor
9.??????? 后期處理volume
10.???? Grab objects
11.???? 植被碰撞?Foliage Collision
12.???? 第三人稱視角
13.???? 生成portal
14.???? 更改portal的形狀
15.???? Portal的有效距離(以及可能在距離上出現(xiàn)的問(wèn)題的解決方案)
16.???? 將Portal附加到相機(jī)上
17.???? VR(不演示和教程制作,無(wú)VR設(shè)備)
18.???? Oculus Quest
19.???? 聯(lián)系我們
20.???? 已知的漏洞和未來(lái)的更新
21.???? 不需要文檔的補(bǔ)丁說(shuō)明
22,? ? 觀眾提出的問(wèn)題

還沒(méi)更新完,先上傳存檔下
0.? 該資產(chǎn)的特征
????0.1?不使用RenderTarget和PostProcess,只使用材質(zhì)函數(shù)和藍(lán)圖。
????0.2?如果玩家看到一個(gè)物體,就會(huì)產(chǎn)生碰撞。如果玩家看不見(jiàn),就沒(méi)有碰撞。
????0.3 可以自定義通過(guò)Portal的物體,?StaticMesh SkeletalMesh, Foliage Simply put, ????????????????????everything you can apply the material to。
????0.4?Actors can also use the portal themselves without your participation.

????0.5 多個(gè)傳送門(mén)可以鏈接同一個(gè)世界,一個(gè)傳送門(mén)內(nèi)也可以包含另一個(gè)傳送門(mén),不同的傳送門(mén)可以鏈接到不同的世界。


1.??快速入門(mén) quick start
第一步就是添加我們的一個(gè)可以響應(yīng)傳送門(mén)效果的actor
我們?nèi)绾翁砑右粋€(gè)新的static actor。該actor 用來(lái)供我們的portal使用呢?
1.1 我們先來(lái)到我們的bp文件內(nèi)







提示,portal的標(biāo)簽必須與actor的標(biāo)簽匹配(portal+數(shù)字),以便正確地進(jìn)行碰撞操作。如果你不需要修改碰撞,那么就不必在actor上設(shè)置標(biāo)簽。




細(xì)節(jié):
反向(Inversion)復(fù)選框:
????決定了物體最初在傳送門(mén)Porta的哪一位面。如果你想要在傳送門(mén)Porta的不同位面 觀測(cè)?整個(gè)場(chǎng)景,那么MPC中的可見(jiàn)性選項(xiàng)將會(huì)很有幫助。
靜態(tài)(static)? ? ?復(fù)選框:
????只會(huì)影響抓取Grab事件,該事件位于第一人稱角色FirstPersonCharacter中,創(chuàng)建它只是為了演示物體通過(guò)傳送門(mén)時(shí),該物體的變化狀態(tài)。


2.?Demo Material
在demo materials 的文件夾中,你能夠發(fā)現(xiàn)static actor的模板材質(zhì)實(shí)例。
對(duì)于dynamic actor 他也能穿過(guò)傳送門(mén)portal,(與static?actor相同,但是具有“穿過(guò)portal瞬間Transition”的塊),以及用于環(huán)境的模板。
使用環(huán)境模板,您可以創(chuàng)建2個(gè)完全不同的material,它們將根據(jù)您相對(duì)于portal的位置顯示。

,我們能看見(jiàn)3個(gè)材質(zhì)模板

1:用于static actors 的模板
2:用于可以穿過(guò)傳送門(mén)Porta的 動(dòng)態(tài)actor的模板(與靜態(tài)actor相同,但包含“在穿越傳送門(mén)Porta時(shí)”的代碼塊)
3:用于environment的模板。
使用environment模板,我們可以創(chuàng)建出2個(gè)完全不同的材質(zhì),這些材質(zhì)將根據(jù)你相對(duì)于傳送門(mén)Porta的位置而顯示。

?

如果我們要設(shè)置material分配給另一個(gè)傳送門(mén)Porta,則必須修改Basic part中的“材質(zhì)參數(shù)集”合。只需更改集合本身即可。參數(shù)名稱將自動(dòng)分配。

如果我們要分配material材質(zhì)給別的傳送門(mén),那就必須要先修改basic part中的材質(zhì)參數(shù)集合。 只需要更改集合本身就足夠了,參數(shù)名稱他自動(dòng)會(huì)分配。?

3.?添加大于3個(gè)各自獨(dú)立的portal
如果我們想要添加大于3個(gè)unique portal,每個(gè)傳送門(mén)都通往不同的世界,那我們需要進(jìn)行以下幾個(gè)步驟:
復(fù)制文件夾DemoMaterials中的,”材質(zhì)參數(shù)集合“文件(無(wú)需更改內(nèi)容)。直接CV
在BP_Portal中,編輯PortalTag變量的范圍。

????3.在BP_Portal文件的三個(gè)位置復(fù)制代碼(需要復(fù)制的位置已用綠色區(qū)域標(biāo)記)。?

只需復(fù)制BP_Portal中已有的內(nèi)容,并將MPC更改為你在第一步中創(chuàng)建的內(nèi)容。 例如,在編號(hào)為1的塊中添加第4個(gè)傳送門(mén)將如下所示。
5. 創(chuàng)建material并在需要時(shí)標(biāo)記角色。
4.? ?See事件
關(guān)于"See event"。?
它允許你決定玩家通過(guò)傳送門(mén)時(shí),看見(jiàn)物體時(shí)觸發(fā)的事件。但是這個(gè)事件可能會(huì)對(duì)性能產(chǎn)生負(fù)面影響。
See event是在持續(xù)工作的,當(dāng)subject狀態(tài)發(fā)生變化時(shí)就會(huì)被subject自身所調(diào)用。這是通過(guò)射線追蹤完成的。當(dāng)玩家通過(guò)傳送門(mén)時(shí)便會(huì)觸發(fā)過(guò)渡。
"Transition event"在玩家穿過(guò)Portal時(shí)觸發(fā)。

????在99.9%的情況下,你不需要考慮"Transition event",因?yàn)?#34;see event"可以做相同的事情,但更高效。但是,如果你想進(jìn)行性能上的優(yōu)化,那可以放棄使用"see event"。 這些接口是在BP_Portal內(nèi)調(diào)用的。
具體請(qǐng)看 :“Player Transition”和“Changes in visibility through the portal. Shutdown can greatly improve productivity”這兩個(gè)代碼塊





相反,我們可以使用Transition事件。 當(dāng)可見(jiàn)性改變時(shí),See事件會(huì)觸發(fā)。你可以在子類actor中擴(kuò)展它。?

默認(rèn)情況下,僅觸發(fā)碰撞切換。
您可以使用RealVisibility(真實(shí)可見(jiàn)性)變量來(lái)確定actor的狀態(tài)。
如果在您的游戲中玩家可以拾取物品并通過(guò)傳送門(mén)攜帶它們,我建議在RealVisibility變量變?yōu)镕alse時(shí)添加自動(dòng)解除附著的物體。
我沒(méi)有將它添加到demo level中,因?yàn)槲蚁矚g將物品管理在門(mén)戶的隱形側(cè)面。但這可能導(dǎo)致非常奇怪的結(jié)果,而且很難讓所有玩家理解發(fā)生了什么
5.?active portal
你可以同時(shí)激活具有不同標(biāo)簽的無(wú)限數(shù)量的傳送門(mén)。



為了優(yōu)化性能,我建議禁用遠(yuǎn)離玩家的portal。要做到這一點(diǎn),只需將“Enable”變量更改為False。
6.?如果角色移動(dòng)過(guò)快或FPS過(guò)低
????6.1 但是,如果有多個(gè)具有相同標(biāo)簽的傳送門(mén),則同一時(shí)間只能激活其中1個(gè)。?
????????????激活此類傳送門(mén)的最簡(jiǎn)單方法是通過(guò)EnablePortal(啟用傳送門(mén))事件。
????6.2 如果幀率過(guò)低,門(mén)戶可能無(wú)法正常工作。
你可以通過(guò)增加BP_Portal中Box的寬度來(lái)解決這個(gè)問(wèn)題。但最可靠的選擇是連接BP_Portal中的2個(gè)紅色塊。


請(qǐng)注意,截圖中的位置使用了角色的cast操作。不要忘記在那里放置你的角色。這是唯一一個(gè)在特定角色中使用cast的地方。
7.??組合的復(fù)雜actor碰撞處理
如果在你的actor類中有多個(gè)mesh,則你需要編輯構(gòu)造腳本并添加一個(gè)通用碰撞體。?

你可以使用ShapeComponent、BoxComponent或復(fù)雜的StaticMesh作為通用碰撞體。負(fù)責(zé)此功能的函數(shù)位于BP_Actor->CustomOverlap中。

1. 關(guān)于actor的靜態(tài),動(dòng)態(tài)




8.?光源或則其他類型的actor
????燈光和其他類型的角色 最簡(jiǎn)單的方法是更改已準(zhǔn)備好的actor之一。

1,單選static,只在綠色的世界的發(fā)光


2,inversion與之同理
3,雙選則是兩邊都存在


實(shí)現(xiàn)過(guò)程,




9 Volume(體積)
如果涉及到體積對(duì)象,可能會(huì)遇到困難,因?yàn)樗鼈儾荒苷W鳛榻M件工作。解決方法可以是創(chuàng)建一個(gè)控制體積的角色。觀看PostProcess的示例。




抓取物體
演示關(guān)卡使用了一種基本的抓取物體的方式。你可以在以下文件中查看其實(shí)現(xiàn): PortalsAR\DemoCharacter\FirstPersonBP\Blueprints\Blueprints\FirstPersonCharacter 但你可以根據(jù)自己的喜好編寫(xiě)任何關(guān)于抓取物體的邏輯。
植被碰撞?
如果想要更改植被的碰撞,需要為植被類分配一個(gè)組件,并激活portal。
然而,值得注意的是,只有當(dāng)玩家穿越門(mén)戶時(shí),植被的碰撞才會(huì)生效。最簡(jiǎn)單的方法是觀看一個(gè)短視頻,了解工作原理。


第三人稱視角
該資源未設(shè)計(jì)用于第三人稱視角,但仍可以做一些修改。最簡(jiǎn)單的方法是在門(mén)戶上啟用相機(jī)鎖定。第二個(gè)選項(xiàng)較為困難,視頻展示了需要做的事情。結(jié)果可能看起來(lái)奇怪,但效果良好。觀看角色從白色世界到綠色世界再返回的移動(dòng)過(guò)程,沒(méi)有錯(cuò)誤。
SpawnPortal?
在地圖上放置第一個(gè)門(mén)戶之前,應(yīng)該已經(jīng)放置了具有相同標(biāo)簽的門(mén)戶,并且它應(yīng)該是激活狀態(tài)。放置門(mén)戶后,必須使用EnablePortal事件。只有在具有相同標(biāo)簽的門(mén)戶中最后放置的門(mén)戶才能工作(視頻末尾展示了解決此問(wèn)題的方法)。



14.??更改portal的形狀
我們可以將Portal制作成三角形或梯形,但需要稍微修改BP_Portal的代碼。需要考慮socket的向量,而不是整個(gè)對(duì)象。



作者還建議在3D編輯器中為StaticMesh Plane_Portal更改為你的新形狀,并對(duì)BP_Portal進(jìn)行一些小的修改。
傳送門(mén)工作的距離
在通過(guò)傳送門(mén)觀察物體時(shí),你可能希望增加或減小物體產(chǎn)生反應(yīng)的距離。
為此,你需要編輯傳送門(mén)的每一側(cè)。例如,
讓我們看到"Up Side"這個(gè)代碼塊處(已添加:現(xiàn)在只需更改線寬!)
你必須要在兩個(gè)地方上更改所選值。在BP_Portal和MF_Portal中進(jìn)行修改。
如果您在原理傳送門(mén)遠(yuǎn)時(shí)看到錯(cuò)誤,請(qǐng)嘗試增加"BP_Portal"和"MF_Portal"中的線寬(默認(rèn)值為30000)。


Blueprints: 3 basic ones and 7 demonstration childBP.
Material function: 2.
Material parameter collection: 3.
1 basic material and many varieties of it for demonstration.
Interface: 1.
22 觀眾提出的問(wèn)題:
????
