国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Egret-Box2d (二) 碰撞

2020-11-02 13:44 作者:抑制住a  | 我要投稿

當(dāng)物體在物理場(chǎng)景中發(fā)生碰撞時(shí),會(huì)發(fā)生一些事情,比如主角碰到怪物死了,所以我們需要獲取到碰撞時(shí)的一些信息。

首先創(chuàng)建一個(gè)碰撞的監(jiān)聽(tīng)器,并把它添加到世界上。

this.contact?=?new?b2ContactListener();

this.world.SetContactListener(this.contact)

然后添加上碰撞回調(diào),BeginContact就是剛開(kāi)始接觸的時(shí)候,EndContact是最后離開(kāi)的時(shí)候。

this.contact.BeginContact?=?(contact:?b2Contact<b2Shape,?b2Shape>)?=>?{

? ?????console.log('碰撞開(kāi)始');

}

this.contact.EndContact=(contact:?b2Contact<b2Shape,?b2Shape>)?=>?{

???????console.log('碰撞結(jié)束');

}

?contact.GetFixtureA().GetBody().GetUserData();

?contact.GetFixtureB().GetBody().GetUserData();

同時(shí),夾具(Fixture)中含有過(guò)濾(Filter)屬性,我們可以使用碰撞過(guò)濾來(lái)更好的控制碰撞,F(xiàn)ilter中有categoryBits和maskBits兩個(gè)屬性,categoryBits的意思是“我是。。。”,maskBits的意思是“我能和。。。碰”。

此時(shí)我們把地板設(shè)置為2,他能和1碰,把掉落的物體設(shè)置為1,他能和2碰(這些數(shù)字必須是2的N次方倍)

//地板的

groundFixDef.filter.categoryBits?=2;

groundFixDef.filter.maskBits?=?1;

//掉落物體的

fixDef.filter.categoryBits?=?1;

?fixDef.filter.maskBits?=?2;

然后他們就發(fā)生碰撞了,但如果其中一個(gè)不想碰,比如?fixDef.filter.maskBits修改為4,那么他們就無(wú)法發(fā)生碰撞

碰撞的時(shí)候
無(wú)法碰撞的時(shí)候

我們除了可以用categoryBits和maskBits進(jìn)行過(guò)濾,還可以使用groupIndex,且一旦使用groupIndex,之前的categoryBits和maskBits就無(wú)效了,也就是說(shuō)groupIndex的優(yōu)先級(jí)要高于categoryBits和maskBits。

發(fā)生碰撞的條件:兩個(gè)物體的groupIndex屬性值必須相同且不為0,為正發(fā)生碰撞,為負(fù)不發(fā)生碰撞。





Egret-Box2d (二) 碰撞的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
陵水| 河源市| 沂水县| 岱山县| 会理县| 隆德县| 固原市| 车险| 黄骅市| 策勒县| 江门市| 陇南市| 临安市| 淮滨县| 十堰市| 灵川县| 田林县| 平武县| 利川市| 瑞金市| 衢州市| 青浦区| SHOW| 乳源| 万州区| 竹溪县| 寿光市| 麻城市| 水富县| 巩留县| 恩平市| 区。| 潢川县| 景洪市| 上杭县| 荣昌县| 静乐县| 康乐县| 平利县| 景德镇市| 乌恰县|