簡體   English   中英

Unity 3D:游戲對象交互

[英]Unity 3D: Game Object interaction

假設我們有一個第一人稱角色和幾個NPC AI。 第一人稱角色應該能夠與NPC AI交談(通過對話服務)。 我的問題是:我應該如何將兩個游戲對象(FPC和NPC)相互“連接”?

所以他基本上可以四處走動並與他們交談,然后他們回答一些問題,第一個人可能會選擇一個選項。

我在這里看到幾個選項:

  1. 將公共變量添加到“第一人稱角色”。 這個公共變量將持有NPC AI。 所以NPC AI和第一人稱角色可以通過兩個類的功能相互交談。
  2. 添加一個實現觀察者模式的類'DialogService'。 因此會有幾個發布者和訂閱者。 我的問題是如何將NPC和第一人稱角色相互聯系起來
  3. 也許你有更好的選擇?

如果您正在尋找一個簡單的解決方案,我可以提供:

在角色的GameObject里面有另一個GameObject ,比方說,叫做“Dialog Collider”。 將碰撞器組件添加到該游戲對象,使其(碰撞器)成為觸發器。 另外,我建議你讓對撞機成為一個半徑更大的圓柱體,這樣你就可以進入對話框,而不會與另一個角色發生碰撞。

當“Dialog Collider”與另一個同名/標記的GameObject發生沖突時,添加一個腳本,即啟動對話框的玩家角色。 在這一點上我想你將不得不對所有游戲角色相同的設置:他們都應該有一個“對話撞機” GameObject主要游戲對象的內部,如果他們有一個對話框,選擇開始與是。

這樣你就可以將碰撞檢測留給UnityEngine而不是每幀檢查一次。

另外,我建議制作一個通用的Dialog腳本; 使它成為一個抽象類,你可以繼承它來覆蓋一些方法,這樣你就可以從一開始就擁有所有的基本功能,並有足夠的靈活性來改變/擴展NPC的行為。

或者制作一個IDialogCharacter接口,並為每個類手動實現方法和對話框; 如果您更喜歡組合而不是繼承,請使用多態來檢查IDialogCharacter接口。

作為連接部分 - 當碰撞開始時,你的玩家角色將能夠獲取另一個角色的腳本(首先獲得碰撞的GameObject,然后是腳本組件)並請求對話從另一個角色開始或獲取一些數據對象從另一個角色開始對話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM