3D遊戲中物件間常見的互動方式

2022-05-02 23:21:14 字數 893 閱讀 6299

遊戲中經常需要玩家與環境互動,比如開門動作、射擊動作等。常用的互動方式有三種,碰撞檢測、光線投射和碰撞檢測觸發器。以開門這個簡單動作為例,

當玩家與門的碰撞體發生物理碰撞時觸發開門動畫。若門的碰撞體與門一樣大,這會導致玩家貼著門時門才會開啟,感覺門是被撞開的。若門的碰撞體比門大,使得玩家與看不見的碰撞體發生物理碰撞,就像撞到了透明的箱子。

在玩家面朝的方向繪製乙個透明的投射線,當這個投射線與門交錯時觸發開門動畫。但這樣必須玩家面向門的時候門才會開啟。

在門外額外增加乙個矩形碰撞體並設定為觸發器,這樣當玩家在門外觸發(並非發生物理碰撞)到該碰撞體時觸發開門動畫。但這樣還需要乙個與門一樣大的碰撞體來處理飛行物體等實際碰撞到門上的**效果。

玩家物件(character controller)使用void oncontrollercolliderhit(controllercolliderhit hit)檢測與其它物體的碰撞;在玩家物件的update()中使用physics.raycast(transform.position, transform.forward, out hit, 3)來以玩家為起點、玩家朝向為方向投射乙個3公尺長的線,線與任何碰撞體的碰撞結果存放在hit中;碰撞檢測觸發器使用void ontriggerenter(collider col)來檢測碰撞體的碰撞或交錯。普通物體碰撞檢測使用void oncollisionenter(collision col)

3D遊戲中顯示網頁

在遊戲中顯示網頁?為什麼要這麼做呢?其實可以做不少的應用 嵌入幫助文件,比如技能介紹,可以做得很漂亮,各種排版方式用傳統ui做起來很費勁 活動公告頁面直接在遊戲中檢視 遊戲內的bbs 社群 玩家的個性展示 資料 等等最重要的是,所有的這些內容都可以扔到web伺服器上,不用打包進客戶端 最早是用llm...

在3D遊戲中顯示網頁

在遊戲中顯示網頁?為什麼要這麼做呢?其實可以做不少的應用 嵌入幫助文件,比如技能介紹,可以做得很漂亮,各種排版方式用傳統ui做起來很費勁 活動公告頁面直接在遊戲中檢視 遊戲內的bbs 社群 玩家的個性展示 資料 等等最重要的是,所有的這些內容都可以扔到web伺服器上,不用打包進客戶端 最早是用llm...

遊戲中的造型師 3D美術

3d美術在遊戲製作中,相當於遊戲的造型師,遊戲的建築 人物 坐騎 怪物 山水等等,都需要3d美術師來建模,構建整個遊戲的世界。對於熱愛遊戲的朋友來說,肯定對遊戲內的美術有很多自己的想法。那我們先來了解一下3d美術設計師!主美 原畫組長 模型組長 角色原畫師 場景原畫師 角色模型師 手繪 方向 貼圖方...