Tag: box2d

何时使用CC_CONTENT_SCALE_FACTOR()?

我有点困惑什么时候在我的应用程序中使用CC_CONTENT_SCALE_FACTOR()。 我使用Box2D进行碰撞检测,并创build一个b2Body的顶点。 现在我应该只用PTM_Ratio还是用PTM_Ratio乘以CC_CONTENT_SCALE_FACTOR()来划分每个点? 我应该在我的应用程序中的任何地方使用CC_CONTENT_SCALE_FACTOR(),如果我不处理像素? 我应该只使用CC_CONTENT_SCALE_FACTOR()GLESDebugDraw像这样? _debugDraw = new GLESDebugDraw( ptmRatio * CC_CONTENT_SCALE_FACTOR()); ? 谢谢!

碰撞后如何恢复b2Body状态?

我有2个机构。 碰撞后,第二个物体消失 , 第一个物体必须继续前进 ,就像碰撞前一样。 现在看起来如何: 1)我在contactListener :: BeginContact(..){}中检测到碰撞。 2)保存第二个物体删除,第一个恢复它的速度和angular度。 3) -(void) update: (ccTime) dt { int32 velocityIterations = 8; int32 positionIterations = 1; _world->Step(dt, velocityIterations, positionIterations); … world->DestroyBody(secondBody); firstBody->SetLinearVelocity(linearVelocityBeforeTouching); firstBody->SetTransform(firstBody->GetPosition(), angleBeforeTouching ); … } 结果,第一个物体在同一个方向上移动,但是它在碰撞之后旋转

b2Bodyanimation?

我在我的游戏中使用了Box2D和Cocos2D。 我知道Cocos2D有一个名为CCMoveTo的animationAPI。 我想用b2Body在Box2D中做同样的事情。 我希望能够从最初的位置设置目的地点和animation时间。 有谁知道这是否可能? 我只是尽量保持这个尽可能简单。 我很乐意提供意见和build议! 谢谢! 编辑1 :好,所以我想让我的b2Bodys永久跟随我的CCSprite。 您向我展示的代码存在问题。 在我的.h我这样做: b2World *world; b2Body *body; 然后我修改了一下这个方法,现在看起来像这样: for (body = world->GetBodyList(); body != nil; body = body->GetNext()) { CCSprite *bodyNode = body->GetUserData(); if (bodyNode != nil) { // this transfers the body's position and rotation to the sprite bodyNode.position = [Helper toPixels:body->GetPosition()]; float angle = […]

box2d圆形身体卡在angular落里

美好的一天,我有一个圆形的身体,朝某个方向滚动。 我的游戏中的一些平台是相互垂直的,形成一个像_ |一样的90度angular (没有差距:))我的问题是,如果它与angular落相撞,圆形机身卡在两个平台之间。 只有暗示一个冲动的身体释放,但重力似乎不再影响它。 我已经看到了解决scheme的post,但他们都是指方angular色的身体。 有没有人有这个问题的build议? 谢谢

在使用Box2D,cocos2d和物理编辑器的视网膜显示PTM_RATIO

我有很多问题试图在我的精灵身上绘制身体形状。 我尝试了很多的组合,但我无法使其在视网膜显示器上工作。 我只支持iPhone视网膜和iPad(视网膜而不是视网膜)。 A. PTM_RATIO 第一个问题是,如果我想在所有设备中使用相同的物理,每个设备使用哪个PTM_RATIO。 我读了几个post,我不知道PTM代表“ Point To Meter ”还是“ Pixel To Meter ”。 ¿哪一列是正确的? B.物理学 我想要使​​用不同形状的不同图像来绘制地面,但为此我使用了两个最简单的types。 一个200x200px的图像,但身体只需要较低的200x80px矩形。 为了保持精灵方面,我使用200x200px的艺术为iPhone和iPad SD和400×400为iPad HD。 然后,我尝试为红色区域定义一个身体。 我尝试了所有可能的组合使用Physcs编辑器,我试图做手动也与顶点助手。 我做了iPad SD的工作,但不是视网膜显示(总是X2)。 我的verts: int num = 4; b2Vec2 verts[] = { b2Vec2(-100.0f / 100.0, -20.0f / 100.0), //A b2Vec2(100.0f / 100.0, -20.0f / 100.0), //B b2Vec2(100.0f / 100.0, -100.0f / 100.0), […]

如何优化mach_msg_trap

我知道这个问题之前已经被问过了,但没有人给出如何解决的有用答案。 我有一个使用box2d物理引擎的cocos2d ios应用程序。 我对它进行了性能testing,cpu花费了mach_msg_trap的5.6%的时间。 从我从其他问题收集的信息来看,好像mach_msg_trap只是因为应用程序处于闲置状态而减less了主线程的时间。 我的应用程序不是闲置。 它有不稳定的performance,盘旋在50 fps的区域。 有什么办法来configuration这个来获得额外的性能? 或者这只是我写的一些不好的代码的结果,如果是的话,我该如何优化它? 我正在testing第二代iPod touch上的debugging版本的性能。 这可能是问题的一部分。 我正在精灵群组中分组某些东西。 但有些小精灵的孩子不是聪明人,所以我不能把所有的东西都分成一组。 我确实创造了一批子弹,而不是经常分配和释放它们。 但这是我得到不稳定的performance。 当枪开始发射时,帧率下降10-15 fps。 我试图追踪使用仪器这么久的情况,但是最重要的两个时间是waValidateState,其中包括ccsprite绘制和ccnode访问。 第二次请求的时候,waister是mach_msg_trap。 有没有其他的方法来找出子弹的代码中是什么,这会降低性能? 顺便说一下,你的书是真正有用的学习cocos2d 🙂

更改Box2D锚点?

在Cocos2D中,我正在创build我的CCSprites,其定位点(0,1)类似于UIKit的方式。 无论如何,我正试图改变Box2D的定位点,这是可能的吗? 如果是的话,我将如何做(0,1)的锚点? 谢谢!

IOS Box2D – 主体遵循一个特定的path,基于一个波动的速度点arrays

我有一个关于身体的问题,它遵循一个特定的path。 首先在这里将身体移动到目标点的方法: const float destinationControl = 0.3f; b2Vec2 targetPosition = path[counter]; b2Vec2 missilePosition = _physicalBody->GetPosition(); b2Vec2 diff = targetPosition – missilePosition; float dist = diff.Length(); if (dist > 0) { if(dist < destinationControl){ ++counter; return; } // compute the aiming direction b2Vec2 direction = b2Vec2(diff.x / dist, diff.y / dist); // get the current missile […]

如何在Sprite Kit中实现鼠标连接?

我正在使用Cocos2d + Box2d for iOS编写的拖放function的实现。 我需要将它移植到Sprite Kit。 逻辑是非常基本的: 当用户触摸屏幕时,在手指下find精灵 在find的精灵和场景的物理体之间创build鼠标关节,将关节的目标设置为触摸的位置 当触摸移动时,更新联合的目标到新的位置 当触摸结束时,移除关节 一切工作都很好。 我喜欢触摸结束时模拟物理的方式 – 拖动的形状的速度取决于拖动的速度和方向,所以当我移动精灵的时候,我的手指离开屏幕,它将继续沿相同的方向移动,但是现在受到影响重力和阻尼。 不幸的是,我无法使用Sprite Kit重现相同的效果。 没有像鼠标关节这样的关节,但我尝试过使用其他关节types。 我几乎成功与SKPhysicsJointFixed – 我创build新的精灵和它之间的联合和拖动精灵,当触摸移动我移动新创build的精灵。 不幸的是,它不能像Cocos2d + Box2d中的鼠标关节那样工作 – 拖动精灵时,其速度总是等于零。 所以,每当我把手指从屏幕上移开时,被拖动的精灵就会立即停下来,并受重力影响而开始下坠。 无论拖动手指时移动的速度有多快,释放拖动的形状后,其行为方式都完全相同。 我的问题是如何在Sprite Kit中实现鼠标连接,或者如何实现如上所述的拖放function? 更新:这是一个box2d鼠标联合的例子,可以给你更清晰的视图,我想要使用Sprite Kit实现: http : //blog.allanbishop.com/wp-content/uploads/2010/09/Box2DJointTutorial1.swf

简单的枪在cocos2d + box2d游戏

我是box2d的新手。 你可以帮我吗? 我想制作枪(触摸,移动,停止,飞行)。 我做枪的检测和旋转,但是我不能使球突然出现。 我如何计算速度,我需要设置到球? 非常感谢你