亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Matter.js 碰撞過濾器選項消失又重新出現?

Matter.js 碰撞過濾器選項消失又重新出現?

阿晨1998 2023-11-11 21:50:43
我正在構建一個簡單的模擬,我需要超過 32 個類別,因此我實現了建議的解決方案來定義一個Detector.canCollide函數來允許我這樣做。Detector.canCollide = function (filterA, filterB) {    console.log(filterB)    return (filterB["collidesWith"].includes(filterA["group"]) || filterB["group"] == 0)         && (filterA["collidesWith"].includes(filterB["group"]) || filterA["group"] == 0);}  上面給出了錯誤:filterB["collidesWith"]未定義。經過進一步檢查,我使用了一個console.log()語句來找出這個對象(filterB)發生了什么,它返回了這個:{category: 1, mask: 4294967295, group: 3, collidesWith: Array(1)}category: 1collidesWith: [0]group: 3mask: 4294967295__proto__: Object}{category: 1, mask: 4294967295, group: 1}category: 1group: 1mask: 4294967295__proto__: Object}第二個對象似乎是該console.log()功能的延續(因為它在打印后繼續記錄)編輯: 我發現這filterA是相反的,首先它打?。簕category: 1, mask: 4294967295, group: 1}category: 1group: 1mask: 4294967295__proto__: Object}{category: 1, mask: 4294967295, group: 2, collidesWith: Array(1)}category: 1collidesWith: [0]group: 2mask: 4294967295__proto__: Object}filterA注意:當我初始化碰撞體時,碰撞過濾器選項與分別出現 ( ) 和消失 ( filterB)的值相同我的代碼其他地方有錯誤嗎?或者這是我忽略的其他 Matter.js 功能?
查看完整描述

1 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

很抱歉沒有早點更新這個線程,雖然我還沒有發現這個錯誤,但我意識到這對于我的特定模擬來說不是最好的方法,而是創建了一個更好的系統,而無需檢查這些未定義的變量。相反,我創建了一個名為 Layer 的碰撞過濾器,并將每個代理分配到不同的層,可以與 上的所有內容發生碰撞的事物layer: 0,與 上的任何事物都不會發生碰撞的事物layer: -1,并使用以下代碼來實現此目的。我將這個collisionFilter.layer屬性賦予了模擬中的每個對象。


Detector.canCollide = function (filterA, filterB) {

    if (filterA.layer != -1 && filterB.layer != -1){

        return (filterA.layer == filterB.layer || (filterA.layer == 0 || filterB.layer==0));

    } else {

        return false;

    }

}  


查看完整回答
反對 回復 2023-11-11
  • 1 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號