日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【Unity2D游戏】实现实时的正确的遮挡关系(引擎自带功能)

發(fā)布時(shí)間:2023/12/15 编程问答 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Unity2D游戏】实现实时的正确的遮挡关系(引擎自带功能) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Unity的渲染層級(jí)(layer),決定了2D游戲的渲染順序,值越大的層級(jí)越后渲染,因渲染層級(jí)大的物體會(huì)覆蓋渲染層級(jí)小的物體。在Sprite Renderer中,分為Sorting Layer和Order in Layer,通過這兩個(gè)屬性可以設(shè)置物體的渲染層級(jí)。

然而在2D游戲中,常常會(huì)有角色一會(huì)兒跑到物體前,一會(huì)兒跑到物體后面的情況,如下圖。

如果只設(shè)置物體的Layer,無法實(shí)現(xiàn)正確的遮擋關(guān)系,會(huì)產(chǎn)生這種情況:

這里介紹一種引擎自帶方法,通過在unity中設(shè)置自定義軸向控制精靈的渲染。

在Edit->Project Settings->Graphics中,找到Camera Settings(攝像機(jī)渲染設(shè)置),將Transparency Sort Mode(透明度排序模式)設(shè)置為Custom Axis,即根據(jù)自定義的軸向進(jìn)行渲染。【透明度排序模式是用來決定sprite精靈的繪制順序的】

由于2D的遮擋關(guān)系常常是由y軸確定的,越往上越會(huì)被覆蓋,所以將Transparency Sort Axis中的y設(shè)為1,其余設(shè)置為0。

完成上述設(shè)置后的效果如下,此時(shí)已經(jīng)有初步的遮擋效果,但可以看出現(xiàn)在比較的是游戲物體中心(Center)的y值,而要比較的其實(shí)是物體底部的y值,因此我們要更改物體的軸心。

?在物體的SpriteRanderer中找到Sprite Sort Point(精靈渲染順序點(diǎn)),在默認(rèn)情況下是物體的中心點(diǎn)(Center),這里需要選擇的是軸心點(diǎn),即物體以此為支點(diǎn)旋轉(zhuǎn)的點(diǎn)Pivot。

?之后找到游戲物體對(duì)應(yīng)的圖片,將軸心點(diǎn)設(shè)置在物體的最底端Bottom或自定義Custom。

之后再根據(jù)實(shí)際需要,給物體加上碰撞就大功告成啦~

【ps:還有一種通過代碼直接修改物體的Layer的方式,如下:】

void Update() {if (player.position.y > tree.position.y){player.transform.GetComponent<SpriteRenderer>().sortingOrder = 2;tree.transform.GetComponent<SpriteRenderer>().sortingOrder = 1;}if (player.position.y < tree.position.y){player.transform.GetComponent<SpriteRenderer>().sortingOrder = 1;tree.transform.GetComponent<SpriteRenderer>().sortingOrder = 2;} } //通過“游戲?qū)ο?transform.GetComponent<SpriteRenderer>().sortingOrder”可以直接修改層級(jí)

總結(jié)

以上是生活随笔為你收集整理的【Unity2D游戏】实现实时的正确的遮挡关系(引擎自带功能)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。