嘿,即時編程爲iPhone使用box2d和cocos2d框架。box2d iterations
目前,我有3個類CCSprite的所有子類。
它們是:DynamicBlock1,DynamicBlock2和DynamicEgg1
基本上我的問題是,我想迭代打鉤方法分離,這樣我可以遍歷某些類,而不是別人。
當前Tick(迭代)方法分爲兩個部分,isMoving == YES/NO .. 這將切換b2body(主)-sprite(從屬)和b2body(從屬)-sprite(主)之間的迭代。 。 這樣我可以委派誰控制誰。它工作得很好。
問題是,下面的代碼將再次遍歷GetBodyList()中所有類中的所有我的實體。當我只是想迭代發生在一個類(DynamicBlock1)...
有沒有辦法做到這一點?隔離迭代?
一千如果你想,你必須保持不同類別自己單獨的列表(或陣列)的迭代分開謝謝你的
奧利弗
-(void) tick:(ccTime)dt
{
int32 velocityIterations = 8;
int32 positionIterations = 1;
world->Step(dt, velocityIterations, positionIterations);
for (b2Body* b = world->GetBodyList(); b; b = b->GetNext())
{
DynamicBlock1 *block1 = (DynamicBlock1*)b->GetUserData();
if (block1.isMoving == NO){
block1.position = CGPointMake(b->GetPosition().x * PTM_RATIO, b->GetPosition().y * PTM_RATIO);
block1.rotation = -1 * CC_RADIANS_TO_DEGREES(b->GetAngle());
}
if (block1.isMoving == YES){
b2Vec2 b2Position = b2Vec2(block1.position.x/PTM_RATIO, block1.position.y/PTM_RATIO);
float32 b2Angle = -1 * CC_DEGREES_TO_RADIANS(block1.rotation);
b->SetTransform(b2Position,b2Angle);
}
}
}
謝謝,這幾乎是我決定要做的。 – Ospho 2011-03-24 11:01:21