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

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

BlockOS開發(fā)日志(番外一)實(shí)現(xiàn)準(zhǔn)星

2023-03-03 00:45 作者:Zerous  | 我要投稿

做地形生成算法好累哦,來(lái)點(diǎn)休閑的UI時(shí)間233。

作為一款開放世界沙盒游戲,玩家所處的環(huán)境必然是多種多樣的??赡芮耙幻朐谘┑?,后一秒就到洞穴里去了。準(zhǔn)星也是有顏色的,如果是白準(zhǔn)星,可能在雪地里看不清;黑準(zhǔn)星到洞穴里又看不清。要如何保證玩家何時(shí)何地都能看清準(zhǔn)星之類的UI呢?(當(dāng)然是摸著別的游戲過(guò)河

于是我找了找手頭上幾款有準(zhǔn)星的游戲,看看它們是如何實(shí)現(xiàn)準(zhǔn)星的。

原神
Apex?Legends
Minecraft

可以看到原神和Apex都是給對(duì)應(yīng)的準(zhǔn)星加上一個(gè)輪廓,而Minecraft則是用到了一個(gè)似乎是反色的效果。

那就,做兩個(gè)版本好了(

嗯,準(zhǔn)星首先要有十字準(zhǔn)星。為了表示挖掘方塊或者是為物品充能,還可以加個(gè)進(jìn)度條。然后我覺(jué)得fps游戲里能看方向很酷,所以加了方向指示器。。。emmm最后做出來(lái)是這個(gè)樣子的:

是不是很酷(描邊法的最簡(jiǎn)單就先用描邊的做了)

這邊方向指示器的實(shí)現(xiàn)是把方向向量的x,z分量映射到'N'圖片位置的-x,y上,y映射到'N'圖片的alpha值和縮放值實(shí)現(xiàn)的。所以有這樣的情況:

朝上看
朝下看

感覺(jué)做的還是很有趣的hhh,至少我自己很滿意。硬要說(shuō)問(wèn)題的話,就是很有可能讓玩家把注意力都集中到準(zhǔn)星上了吧。說(shuō)完了自定義控件,下面說(shuō)說(shuō)它們這些特效的實(shí)現(xiàn)。

首先明確實(shí)現(xiàn)特效的需求:讓準(zhǔn)星能夠在任何環(huán)境下被玩家看清。在先前的參考中,已經(jīng)知道了有兩種方案可行。一種是加描邊的方案,一種是讓顯示的內(nèi)容反色的方案。

第一種方案在Unity上實(shí)現(xiàn)很簡(jiǎn)單,直接加上Outline組件就好了。實(shí)現(xiàn)方法一個(gè)是在片段著色器上做上下左右采樣判斷當(dāng)前片段是否處在邊緣外圍,如果是就輸出描邊顏色。而Unity的Outline的組件應(yīng)該是創(chuàng)建了4份網(wǎng)格涂黑然后做一定方向的偏移實(shí)現(xiàn)的。

在Wireframe模式下看得很清楚(左:加了Outline組件,右:沒(méi)加Outline組件)

用著色器實(shí)現(xiàn)描邊好處是三角數(shù)少,但是會(huì)遇到描邊可能超出面的范圍的問(wèn)題。Outline的實(shí)現(xiàn)直接讓三角面的數(shù)量翻了4倍,但是視覺(jué)效果還是很不錯(cuò)的。

第二種方案就必須得上著色器了。對(duì)于我這個(gè)只能說(shuō)了解TA的人來(lái)說(shuō),我第一個(gè)瞬間想到的是用后處理+模版緩沖來(lái)做= =。

后面找了好久資料才意識(shí)到可以用顏色混合來(lái)做,除了用顏色混合來(lái)做透明外,它是可以自定義計(jì)算公式的,因此可以讓輸出的顏色減去顏色緩沖的顏色來(lái)實(shí)現(xiàn)反色。

然后簡(jiǎn)單丟掉alpha過(guò)小的像素,就實(shí)現(xiàn)了下面的效果:

反色!

但是另一個(gè)問(wèn)題出現(xiàn)了:因?yàn)檎加昧送该餍枰念伾旌希酝该鞑黄鹦Я?。不過(guò)我的游戲經(jīng)驗(yàn)告訴我可以把模型的一部分片段丟掉變成一個(gè)個(gè)散開的點(diǎn)來(lái)實(shí)現(xiàn)透明。查了一下這個(gè)技術(shù)叫做Screen Door Transparency。然后簡(jiǎn)單復(fù)制了下實(shí)現(xiàn),把透明用這種方式解決了。

Screen Door?Transparency

所以我一天就做了個(gè)準(zhǔn)星??。?/p>

參考

https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/03%20Blending/

https://www.jianshu.com/p/c68a730e9a8b

https://digitalrune.github.io/DigitalRune-Documentation/html/fa431d48-b457-4c70-a590-d44b0840ab1e.htm

BlockOS開發(fā)日志(番外一)實(shí)現(xiàn)準(zhǔn)星的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
疏勒县| 潼南县| 泽州县| 镇巴县| 延寿县| 廉江市| 平顶山市| 漠河县| 威海市| 高青县| 惠州市| 淳安县| 赣榆县| 讷河市| 周口市| 阜平县| 隆昌县| 贺州市| 四平市| 梁河县| 灵川县| 汾西县| 临澧县| 和林格尔县| 东兰县| 玉田县| 花垣县| 麦盖提县| 临清市| 宁强县| 文化| 资兴市| 黄大仙区| 汝州市| 靖远县| 梅州市| 邵阳县| 达州市| 嘉荫县| 遵义市| 湘阴县|