ios - box2d边框不边框

标签 ios cocos2d-iphone box2d

我正在为我的游戏创建一个 box2d 边框,并注意到我实际上可以将我的 body 滑过边框。

如果我把它们扔到边界上,它们就会反弹回来。但当我慢慢地让他们朝这个目标迈进时,他们就简单地通过了。有时,当我有多个实体通过 RevoluteJoint 连接时,关节实际上会缠在边界中并停止滑动。但是当没有加入时,边界不会阻止主体/ Sprite 。

现在,我只在模拟器上进行测试,还没有 iPad 进行测试。那么这个问题与模拟器有关吗?我的运行速度约为 30 fps。

如果不是模拟器问题,有解决办法吗?

我使用的代码是随处可见的代码(稍作修改以满足我的需要:)

b2BodyDef groundBodyDef;
groundBodyDef.position.Set(0,0);   
_groundBody = _world->CreateBody(&groundBodyDef);
_groundBody->SetType(b2_staticBody);


b2EdgeShape groundEdge;
b2FixtureDef boxShapeDef;
boxShapeDef.shape = &groundEdge;

//wall definitions
groundEdge.Set(b2Vec2(-winSize.width/PTM_RATIO, (float)20/PTM_RATIO), b2Vec2((winSize.width)/PTM_RATIO, (float)20/PTM_RATIO)); // bottom wall
_groundBody->CreateFixture(&boxShapeDef);

groundEdge.Set(b2Vec2(-winSize.width/PTM_RATIO, (winSize.height-50)/PTM_RATIO), b2Vec2(winSize.width/PTM_RATIO, (winSize.height-50)/PTM_RATIO)); // top wall
_groundBody->CreateFixture(&boxShapeDef);

groundEdge.Set(b2Vec2(-(winSize.width-20)/PTM_RATIO,0), b2Vec2(-(winSize.width-20)/PTM_RATIO, winSize.height/PTM_RATIO)); // left wall
_groundBody->CreateFixture(&boxShapeDef);

groundEdge.Set(b2Vec2((winSize.width-20)/PTM_RATIO, winSize.height/PTM_RATIO), b2Vec2((winSize.width-20)/PTM_RATIO, 0)); // right wall
_groundBody->CreateFixture(&boxShapeDef); 

}

最佳答案

如果您使用鼠标关节来移动物体,请尝试将鼠标关节的 collideConnected 设置为 true(默认为 false)。

关于ios - box2d边框不边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16919119/

相关文章:

iphone - 用户事件是否在 Cocos2d/Objective C 中的单独线程上生成

javascript - Box2dWeb 动态与静态物体恢复

ios - 在 Cocos2d V1 中更新 Box2d 到 2.2.1

html - 上传多个文件并访问相机

ios - cocos2d 3.x 如何处理 Sprite 外部的触摸

ios - 如何在 *.framework 包中省略或签署未签名的文件

iphone - cocos2d-x如何将plist读入数组

java - 如何让RevoluteJoint移动到一定角度

iphone - 手动 segue 时导航栏不可见

iphone - 如何打印存储在 iphone 上的所有 sqlite 数据库