gpt4 book ai didi

xcode - 如何知道哪个物体碰撞?

转载 作者:行者123 更新时间:2023-12-04 06:20:58 25 4
gpt4 key购买 nike

我正在使用 cocos2d 和 box2d,以及接触监听器,假设我有一个可以击中许多其他主体的主体,但它们中的每一个都打开了接触监听器。
那我怎么知道谁打了谁?

我的勾中有这个:

for(pos = _contactListener->_contacts.begin(); pos != _contactListener->_contacts.end(); ++pos) 
{
MyContact contact = *pos;
b2Body *bodyA=contact.fixtureA->GetBody();
b2Body *bodyB=contact.fixtureB->GetBody();

//check if collision between to bodies
if( bodyA->GetUserData() !=NULL && bodyB->GetUserData() !=NULL) //if ((contact.fixtureA == _bottomFixture && contact.fixtureB == _ballFixture) ||(contact.fixtureA == _ballFixture && contact.fixtureB == _bottomFixture))
{
NSLog(@"Ball hit bottom!");
}

多谢 。

最佳答案

在像这样创建主体集 userdata 时

CCSprite *red=[CCSprite spriteWithFile:@"red.png"];

red.tag=3;

[self addChild:red];

b2BodyDef bd;
bd.type=b2_dynamicBody;

bd.position.Set(w/PTM_RATIO,h/PTM_RATIO);

bd.userData=red;


for(pos = _contactListener->_contacts.begin(); pos != _contactListener->_contacts.end(); ++pos)
{
MyContact contact = *pos;
b2Body *bodyA=contact.fixtureA->GetBody();
b2Body *bodyB=contact.fixtureB->GetBody();

//check if collision between to bodies
if( bodyA->GetUserData() !=NULL && bodyB->GetUserData() !=NULL) //if ((contact.fixtureA == _bottomFixture && contact.fixtureB == _ballFixture) ||(contact.fixtureA == _ballFixture && contact.fixtureB == _bottomFixture))
{
so here


CCSprite *actor = (CCSprite*)bodyA->GetUserData();


if ([actor tag] == 3) {
//red box

}


}

关于xcode - 如何知道哪个物体碰撞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6573330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com