我需要实现一点 Ai,它可以向刚体施加脉冲以击中目标。就像从大炮发射的炮弹一样。我正在使用 Chipmunk Dynamics 作为物理引擎。
我的数学很糟糕,我的物理也很糟糕,但我一直在阅读,在 SO 的帮助下,以及来自这个维基百科条目的以下内容,我得到了这个
float x = target.x = launchPos.x;
float y = target.y = launchPos.y;
float g = 9.8;
float v = 100;
float angle1, angle2;
float tmp = pow(v, 4) - g * (g * pow(x, 2) + 2 * y * pow(v, 2));
if(tmp < 0){
NSLog(@"No Firing Solution");
}else{
angle1 = atan2(pow(v, 2) + sqrt(tmp), g * x);
angle2 = atan2(pow(v, 2) - sqrt(tmp), g * x);
}
// Split the velocities
float vVel = v * sin(angle2);
//NSLog(@"Vertical Velocity: %f", vVel);
float hVel = v / cos(angle2);
//NSLog(@"Horizontal Velocity: %f", hVel);
CGPoint force = cpv(hVel, vVel);
这应该给我一个角度,我可以从中计算发射弹丸所需的水平和垂直速度。
但是,它不起作用,这并不让我感到惊讶,原因有很多。首先是因为我的数学和物理很差,但也因为我对其他几件事感到困惑。
这种方法似乎没有考虑质量。应该是?我会认为这很重要吗?但是后来,我在大学学习艺术,所以我可能错了。
Box2d 有 PTM_RATIO,但我在花栗鼠中找不到类似的东西,那么我的值如何与花栗鼠中的空间坐标对应?
我知道弧度以及它们在度数上的差异,以及如何在两者之间进行转换。但是我应该在这里使用哪个?我应该将角度 1 和角度 2 转换为度数吗?即使我这样做了,它仍然不起作用。
总之,关于物理和花栗鼠的知识有很多我不明白的。所以我在这里,寻求帮助。
花栗鼠中有什么东西可以用来解决这个问题,或者如果有人不得不自己解决这个问题,我真的很感激一些帮助。