我是一个完全的新手,正在制作一款2D RTS游戏。到目前为止,我已经创建了一个对象"步兵",并可以让它在指定的方向射击"子弹",并且只能在房间外找到删除子弹的代码。我想让子弹在距离步兵300像素的相对距离内消失。并且需要代码非常干净,因此最终会有很多子弹。我的问题是:我是否应该在步兵周围制作一个矩形,以指定射程和视线,当子弹碰撞时射程=删除?或者子弹类应该写"一次创建+移动距离= 300像素=删除"?如果您能提供任何代码或提示,我们将不胜感激。
简单方法:
- 存储原点,炮弹产生的地方(枪管处)
- 每一帧,用距离公式计算弹丸是否超过了运动半径。
-
可以通过比较半径的平方来避免距离公式中的
Math.Sqrt
调用。var dx = xbullet - xorigin; var dy = ybullet - yorigin; if (dx*dx + dy*dy > range*range) delete bullet
我认为你的第二个建议更好。如果你做了一个方框或者检查了到士兵的距离,那么如果士兵追着子弹跑(也就是说,如果子弹不是瞬间移动的),子弹可以飞得更远。