我正试图制作一个坦克游戏,玩家必须摧毁由AI驾驶的敌方坦克。因为AI必须能够攻击玩家的坦克。两次射击都是受空气影响的抛物线。到目前为止,我已经能够计算出的功率和最小倾斜角度,以击中射击,而不受风影响的弹丸。
var Dx = target.position.x - transform.position.x;
var Dy = target.position.y - transform.position.y;
var P1 = Mathf.Sqrt(9.81f * (Dy + Mathf.Sqrt(Dx * Dx + Dy * Dy)));
var InclinationAngle = Mathf.Atan((Dy + Mathf.Sqrt(Dx * Dx + Dy * Dy)) / Dx) * Mathf.Rad2Deg;
transform.localRotation = Quaternion.Euler(new Vector3(-InclinationAngle,0, 0));
var fz = transform.forward.normalized * P1;
rig.AddForce(fz, ForceMode.Impulse);问题是当弹丸受到风的影响。风可以朝四个方向之一,向前、向后、向右或向左。我试过几种方法,但我没有很好的机会。人工智能的目标如何考虑到起始位置、目标位置以及风向和强度?
发布于 2016-02-02 14:39:33
我找到了一个解决办法:一旦计算出初始速度和最小倾角来进行旅行。
var Dx = target.position.x - transform.position.x;
var Dy = target.position.y - transform.position.y;
var Vmin = Mathf.Sqrt(9.81f * (Dy + Mathf.Sqrt(Dx * Dx + Dy * Dy)));
var InclinationAngle = Mathf.Atan((Dy + Mathf.Sqrt(Dx * Dx + Dy * Dy)) / Dx) * Mathf.Rad2Deg;必须与风成反比,在弹丸的飞行时间除以2,因为我们只需要一半的时间,因为有两个力相等的地方。
var t = Dx/(Vmin * Mathf.Cos(InclinationAngle*Mathf.Deg2Rad));
var fyx = transform.forward.normalized * P1;
var fxz = wind.force*-t/2;
rig.AddForce((fyx+fxz), ForceMode.Impulse);https://stackoverflow.com/questions/35140047
复制相似问题