处理炮弹未命中和弹道
本文关键字:弹道 处理 | 更新日期: 2023-09-27 18:26:07
我有几个公式可以用来向目标发射子弹,但当玩家从原来的位置移动,子弹按预期到达玩家的旧位置时,所有公式都会崩溃。
当PlayerPosition==BulletPosition时,如果子弹未命中,我如何使其保持正确的方向?我的问题是,一旦子弹到达它应该去的地方,它就会停止,我需要一个新的公式来保持它的运动。
如果它击中了玩家,那很容易,移除物品,但我似乎找不到一个好的解决方案。下面是一些代码,现在非常简单。
var movement = PlayerPosition - Position;
if (movement != Vector2.Zero)
movement.Normalize();
//var angle = Math.Atan2(movement.Y, movement.X);
Position += movement*_projectileMoveSpeed;
您是否打算让子弹的速度受到玩家距离的影响?
我只想保存速度,然后在未来的帧中使用它。在伪代码中:
to shoot a bullet:
direction is sign(PlayerPosition - Position)
in each frame:
for each bullet:
modify position by direction * projectileMoveSpeed
handle collision (player or screen edge)