unity 建乙個傳送門

2021-10-04 04:53:43 字數 1818 閱讀 6543

1、建乙個第一人稱控制器fpscontroller 和一扇門,將它們複製位移(相對位置不能變)

fpscontroller在unity官方資源包匯入,如果你匯入有錯誤可以看我的另一篇文章:unity官方資源包standard assets匯入錯誤

2、建兩個虛擬攝像機:cinemachine -> create virtual camera,分別移到fpscontroller下,並設定transitions -> body、aim 為 do nothing,兩個虛擬攝像機cm vcam1與cm vcam2的位置、方向設定與fps1攝像機、fps2攝像機相同

3、將main camera新增cinemachinebrain,設定default blend為cut(直接場景切換),設定位置與fps1攝像機相同

4、fpscontroller1的tag選擇player

5、在檔案裡create -> render texture ,建兩個,改變size為1920 * 1080(使解析度相同)

6、建乙個quad放到門上,另乙個門也是。將quad1、2的convex和is trigger打勾,新增cinemachine trigger action,with tag選擇player,on object enter -> action選擇activate。將cm vcam2拖到quad1的target下,將cm vcam1拖到quad2的target下。

7、開啟fps1攝像機,將render texture1拖進target texture(fps1攝像機看到的畫面都會渲染到render texture1上)

開啟fps2攝像機,將render texture2拖進target texture

8、將render texture1拖給quad2,將render texture2拖給quad1

9、layer新增door層,將門和quad的layer都選擇door

10、將fps1攝像機和fps1攝像機的culling mask選項去掉door(不渲染門)

11、將screencutoutshader.shader和tagchanger.cs

拖入檔案裡(screencutoutshader.shader檔案不是我寫的,是國外油管上的大神brackeys寫的,隨後我會附在我的資源裡,tagchanger.cs是達哥寫的),將quad -> render texture -> shader都改為screencutoutshader(使視角正常),將fpscontroller 1和fpscontroller 2都加上tagchanger.cs(切換人物時可以改變fpscontroller的tag)

12、,quad1的on object exit -> event() -> +,將fpscontroller1拖入runtime only,function選擇tagchanger -> untaggedtagchanger;再+乙個,將fpscontroller2拖入runtime only,function選擇tagchanger -> playertagchanger(都是tagchanger.cs裡寫的函式)

quad2的on object exit -> event() -> +,將fpscontroller1拖入runtime only,function選擇tagchanger -> playertagchanger;再+乙個,將fpscontroller2拖入runtime only,function選擇tagchanger -> untaggedtagchanger

可以將game視窗改為和你電腦一樣的比例,測試的時候就有傳送門的效果了

這個時候執行應該就有乙個哆啦a夢一樣的傳送門效果了,不過這個方法缺陷還有很多,我現在正在學習另一種幾乎可以媲美遊戲《portal》的傳送門效果的建立方法,有機會寫成另一篇文章發出來(咕咕咕)

給自己建乙個track

最近不太經常登入csdn了,經常混跡在cnblogs上面,cnblogs上的更新很快,經常看到不錯的文章,所以很少來csdn了。看到別人寫了那麼多好文章,不管是自己的作品,還是實驗性的探索,還是關於某類問題的總結,都寫出來,覺得這樣做非常好,不管是對別人,對自己,都是一種提高。開始我也經常會把工作中...

android mtk 建乙個裝置misc

alps mediatek kernel drivers makefile 加一行 obj y emd ctl obj y scandriver obj y hello alps mediatek kernel drivers scandriver makefile 加一行 obj y demo1....

Unity刪除乙個GameObject下的所有子項

結構 root child a child b child c 需求 在 中讓unity刪除乙個gameobject下的所有子項 思路 unity中不能對gameobject物件使用getcomponent 所以可以用transform來代替 解決 transform childs root.get...