问题描述
|
我是一个很聪明的人,但是当我看到某种数学时,我也可能会变成一个笨蛋。我真的可以在这里使用一些帮助。
在学习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;
所有对象均以这种方式预加载并保留。实体设置为不活动,精灵设置为不可见。粒子系统停止运行。再次使用弹丸则相反。
非常感谢您可能提供的帮助。我希望我没有忘记任何事情。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)