Unity的范例里是如何處理物理碰撞事件的

通過閱讀Unity ECS Samples 里的物理碰撞的范例谓媒,發(fā)現(xiàn)里面的好玩的實現(xiàn)方式。

首先Unity 的 DOTS Physic 本身的碰撞事件 只提供了 某兩個Entity 碰撞類似回調的接口寸痢。
并不像原來是直接在GameObject 上掛接的腳本上返回停士。
這就造成了提供的功能與易用性存在一定的差距舅柜。

直觀的方式應該是在Entity 的組件內自動填充碰撞事件迟隅,邏輯系統(tǒng) 甚至是碰撞特效等System
可以直接在Component 里讀取碰撞的事件即可

為了簡化問題但骨,這里可以拆分成兩個問題

  1. 如何在ECS里面處理事件
  2. 如何在兩個列表中將

如何在ECS里面處理事件 方法如下:

  1. 產生的事件使用鏈表或數組先保存在System中
  2. 給需要接受事件的Entity 添加 特定的 BufferComponent 類型 用于接受事件
  3. 在System 處理數據的時候, 將之前所有 Buffer Component 內容清空智袭,
    然后將符合條件的事件 放入 上面的Buffer Component 中
  4. 其他System 查詢 該Buffer Component 并進行處理

根據項目需求奔缠,上面的方案很容易做成通用的代碼

在兩個列表中 將 進入,保持吼野,離開 的狀態(tài)計算出來的算法如下:
該問題可以再簡化成校哎,把數據分成兩個整形數組,一個表示過去B瞳步,一個表示現(xiàn)在A
如何 知道數組A 相對于 數組B闷哆, 如何區(qū)分哪個數字是 新加的,已有的单起,刪除的 這3個狀態(tài)抱怔。

具體算法如下:

  1. 將A , B 兩個數組 都按小到大排序
  2. 給A馏臭, B 分配兩個 游標 ia野蝇, ib 分別代表A 讼稚,B 兩個數組的當前下標
  3. 對 ia 于 ib 指向的數組內容進行比較括儒, 如果 A[ia] == B[ib] 表示已有的,并且ia锐想,ib兩個游標同時累加1
  4. 如果A[ia] < B[ib] 就是說A[ia] 指向的 數字是新加的帮寻, ia 游標 +1, ib 游標不變
  5. 如果A[ia] > B[ib] 就說明B[ib] 指向的 數字是被刪除的赠摇,ia 游標不變固逗, ib 游標加1
  6. 如果ib 游標 先到頂浅蚪, 那么ia 后面所有的數字都是新加的
  7. 如果ia 游標 先到頂, 那么ib 后面素有的數字都是要被刪除的
  8. 反復執(zhí)行 步驟3 - 5烫罩, 知道所有數字都 有一個狀態(tài)

下面分析上面算法為什么有效:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末惜傲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子贝攒,更是在濱河造成了極大的恐慌盗誊,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隘弊,死亡現(xiàn)場離奇詭異哈踱,居然都是意外死亡,警方通過查閱死者的電腦和手機梨熙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門开镣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咽扇,你說我怎么就攤上這事邪财。” “怎么了质欲?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵卧蜓,是天一觀的道長。 經常有香客問我把敞,道長弥奸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任奋早,我火速辦了婚禮盛霎,結果婚禮上,老公的妹妹穿的比我還像新娘耽装。我一直安慰自己愤炸,他們只是感情好,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布掉奄。 她就那樣靜靜地躺著规个,像睡著了一般。 火紅的嫁衣襯著肌膚如雪姓建。 梳的紋絲不亂的頭發(fā)上诞仓,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機與錄音速兔,去河邊找鬼墅拭。 笑死,一個胖子當著我的面吹牛涣狗,可吹牛的內容都是我干的谍婉。 我是一名探鬼主播舒憾,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼穗熬!你這毒婦竟也來了镀迂?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤唤蔗,失蹤者是張志新(化名)和其女友劉穎招拙,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體措译,經...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡别凤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了领虹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片规哪。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖塌衰,靈堂內的尸體忽然破棺而出诉稍,到底是詐尸還是另有隱情,我是刑警寧澤最疆,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布杯巨,位于F島的核電站,受9級特大地震影響努酸,放射性物質發(fā)生泄漏服爷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一获诈、第九天 我趴在偏房一處隱蔽的房頂上張望仍源。 院中可真熱鬧,春花似錦舔涎、人聲如沸笼踩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嚎于。三九已至,卻和暖如春挟冠,著一層夾襖步出監(jiān)牢的瞬間于购,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工圃郊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留价涝,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓持舆,卻偏偏與公主長得像色瘩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子逸寓,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355