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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

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

如果只設置物體的Layer,無法實現正確的遮擋關系,會產生這種情況:

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

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

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

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

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

?之后找到游戲物體對應的圖片,將軸心點設置在物體的最底端Bottom或自定義Custom。

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

【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;} } //通過“游戲對象.transform.GetComponent<SpriteRenderer>().sortingOrder”可以直接修改層級

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。