私はかなり頭のいい人ですが、ある種の数学を見ると、巨大なモロンになるかもしれません。私は本当にここでいくつかの助けを使うことができました。
iOSゲームの開発を学びながら、たくさんのことを研究してきました。検索をしているときに数式に出くわしました。式は次のとおりです。
x(t)= x(0)+ v(0)* t + .5(F / m)* t ^ 2
また、xとyを解くことも述べられています。
Fx =(x(t)-x(0)-vx(0)* t)* 2m / t ^ 2
Fy =(y(t)-y(0)-vy(0)* t)* 2m / t ^ 2
出典: Box2D.orgフォーラム
さて、私の実際の質問ですが、それはどういう意味ですか?この状況では私はばかだということを覚えておいてください。誰かが変数を簡単な言葉で説明し、それらがbox2dとどのように関連しているかを説明できれば素晴らしいと思います。この式をどのように適用しますか?これが私のコードの例です(発射物を発射します):
- (void)spawnProjectile:(CGPoint)from direction:(CGPoint)direction inParent:(CCNode*)parentNode
{
double curTime = CACurrentMediaTime();
double timeTillShotDies = curTime + SHOT_TYPE1_EXIST_TIME;
b2Body *shotBody = projectileBodyTracker[nextShot];
b2Vec2 moveToPosition = b2Vec2(from.x/PTM_RATIO, from.y/PTM_RATIO);
shotBody->SetTransform(moveToPosition, 0.0);
shotBody->SetActive(true);
CCSprite *shot = [projectiles objectAtIndex:nextShot];
shot.position = ccp(from.x/PTM_RATIO, from.y/PTM_RATIO);
shot.visible = YES;
[projectilesTracker replaceObjectAtIndex:nextShot withObject:[NSNumber numberWithDouble:timeTillShotDies]];
CCParticleSystemQuad *particle = [projectileParticleTracker objectAtIndex:nextShot];
[particle resetSystem];
nextShot++;
if(nextShot >= projectiles.count) nextShot = 0;
// dx2 and dy2 are analog stick values (see below code)
b2Vec2 force = b2Vec2(dx2, dy2);
shotBody->SetLinearVelocity(force);
[AudioController playLaserShot];
}
この特定のコードのチャンクでは、アナログが向いている角度でプレーヤーから発砲しています。また、敵からプレイヤーに向かって発砲するために式を使用する必要があります。これはトップダウンのスペースシューティングゲームです。
要約すると、box2dコードの観点から、xとyの一定の力を経時的に解決するにはどうすればよいですか?
追加情報:
dx2 = (float)joypadBG2.position.x - (float)convertedPoint.x;
dy2 = (float)joypadBG2.position.y - (float)convertedPoint.y;
すべてのオブジェクトはプリロードされ、そのように保持されます。ボディは非アクティブに設定され、スプライトは非表示に設定されます。パーティクルシステムが停止します。発射物を再び使用する場合は、逆になります。
あなたが提供することができるかもしれないどんな助けにも感謝します。私は何も忘れていないことを願っています。