使“;object"删除“距离”,当“创建”?c#编程

本文关键字:创建 编程 距离 object quot 删除 | 更新日期: 2023-09-27 18:10:58

我是一个完全的新手,正在制作一款2D RTS游戏。到目前为止,我已经创建了一个对象"步兵",并可以让它在指定的方向射击"子弹",并且只能在房间外找到删除子弹的代码。我想让子弹在距离步兵300像素的相对距离内消失。并且需要代码非常干净,因此最终会有很多子弹。我的问题是:我是否应该在步兵周围制作一个矩形,以指定射程和视线,当子弹碰撞时射程=删除?或者子弹类应该写"一次创建+移动距离= 300像素=删除"?如果您能提供任何代码或提示,我们将不胜感激。

使“;object"删除“距离”,当“创建”?c#编程

简单方法:

  • 存储原点,炮弹产生的地方(枪管处)
  • 每一帧,用距离公式计算弹丸是否超过了运动半径。
  • 可以通过比较半径的平方来避免距离公式中的Math.Sqrt调用。

    var dx = xbullet - xorigin;
    var dy = ybullet - yorigin;
    if (dx*dx + dy*dy > range*range) delete bullet
    
我认为你的第二个建议更好。如果你做了一个方框或者检查了到士兵的距离,那么如果士兵追着子弹跑(也就是说,如果子弹不是瞬间移动的),子弹可以飞得更远。