制造;“对象”;删去“;距离;,什么时候;创建“;?C#编程

制造;“对象”;删去“;距离;,什么时候;创建“;?C#编程,c#,C#,我是一个十足的新手,正在做2D RTS游戏。到目前为止,我已经创建了一个对象“步兵”,可以让它朝指定的方向发射“子弹”,并且只能在房间外找到删除子弹的代码。我希望子弹在距离步兵300像素的相对距离处被删除。并且需要非常干净的代码,因此最终会有很多子弹。我的问题是:我是否应该在步兵周围画一个矩形,以指定射程和视线,以及子弹何时与射程=删除碰撞?或者bullet类应该说“一旦创建+行驶距离=300像素=删除”?。。。非常感谢您提供的任何代码或提示。简单方法: 存储创建射弹的原点(枪管处) 在每一帧

我是一个十足的新手,正在做2D RTS游戏。到目前为止,我已经创建了一个对象“步兵”,可以让它朝指定的方向发射“子弹”,并且只能在房间外找到删除子弹的代码。我希望子弹在距离步兵300像素的相对距离处被删除。并且需要非常干净的代码,因此最终会有很多子弹。我的问题是:我是否应该在步兵周围画一个矩形,以指定射程和视线,以及子弹何时与射程=删除碰撞?或者bullet类应该说“一旦创建+行驶距离=300像素=删除”?。。。非常感谢您提供的任何代码或提示。

简单方法:

  • 存储创建射弹的原点(枪管处)
  • 在每一帧中,使用距离公式确定投射物是否超过了移动半径
  • 通过比较半径的平方,可以避免距离公式中的
    Math.Sqrt
    调用

    var dx = xbullet - xorigin;
    var dy = ybullet - yorigin;
    if (dx*dx + dy*dy > range*range) delete bullet
    

    • 我认为你的第二个建议更好。如果你制作一个盒子或检查到士兵的距离,那么如果士兵追着子弹跑,子弹可能会跑得更长(如果子弹不是瞬间移动的话)。

      我强烈建议如果你真的是一个完全的新手,你应该从比RTS游戏更简单的游戏开始。我做过更简单的游戏,看了很多教程,但是没有一个能让我理解我的问题。我们都曾一度处于这种境地,被困在某个地方。有人的帮助,总是比有人的怀疑好。这很有帮助,谢谢(=