次の関数を完成させました。 update で 26 if else ブロックが含まれています。したがって、FPS の低下はほとんどありません。
動的キャストを使用して 26 オブジェクトを確認しました。形状に依存して、私はロジックをチェックしました。
これがコーディングです。
void WagonNode::update(float dt)
{
int found = 0;
for (int32 i = 0; i < kMaxContactPoints100 && found < contactPointCount100_; i++)
{
ContactPoint100* point = contactPoints100_ + i;
b2Fixture *otherFix = point->otherFixture;
if( otherFix )
{
found++;
b2Body *otherBody = otherFix->GetBody();
BodyNode *otherNode = (BodyNode*) otherBody->GetUserData();
if (dynamic_cast<ShapeA*>(otherNode) != NULL)
{
tagWord(CCString::create("A"));
}
else if (dynamic_cast<ShapeB*>(otherNode) != NULL)
{
tagWord(CCString::create("B"));
}
else if (dynamic_cast<ShapeC*>(otherNode) != NULL)
{
tagWord(CCString::create("C"));
}
else if (dynamic_cast<ShapeD*>(otherNode) != NULL)
{
tagWord(CCString::create("D"));
}
else if (dynamic_cast<ShapeE*>(otherNode) != NULL)
{
tagWord(CCString::create("E"));
}
else if (dynamic_cast<ShapeF*>(otherNode) != NULL)
{
tagWord(CCString::create("F"));
}
else if (dynamic_cast<ShapeG*>(otherNode) != NULL)
{
tagWord(CCString::create("G"));
}
else if (dynamic_cast<ShapeH*>(otherNode) != NULL)
{
tagWord(CCString::create("H"));
}
else if (dynamic_cast<ShapeI*>(otherNode) != NULL)
{
tagWord(CCString::create("I"));
}
else if (dynamic_cast<ShapeJ*>(otherNode) != NULL)
{
tagWord(CCString::create("J"));
}
else if (dynamic_cast<ShapeK*>(otherNode) != NULL)
{
tagWord(CCString::create("K"));
}
else if (dynamic_cast<ShapeL*>(otherNode) != NULL)
{
tagWord(CCString::create("L"));
}
else if (dynamic_cast<ShapeM*>(otherNode) != NULL)
{
tagWord(CCString::create("M"));
}
etc...
}
}
}
上記のコーディングに変更があれば、大いに役立ちます。
FPS の処理または安定化を支援してくれる人はいますか?