c# - Sprite 定位

标签 c# xna sprite

所以,我开发游戏已经有一段时间了,但遇到了障碍。我不知道该怎么做。这是我的问题:

我有一艘船,配有前向轨道炮和两枚导弹。轨道炮只能在舰船前方的直线上射击,但如果舰船位于舰船前方圆锥体中的任何位置,导弹就可以发射。问题是船在屏幕上旋转和移动。对于轨道炮,我需要检查屏幕上船前面的任何地方是否有船。对于导弹,我需要检查船前方 250 像素内是否有一艘船,但与两侧的夹角不超过 45 度。

如果你们能提供任何帮助,我们将不胜感激。谢谢!

最佳答案

对于轨道炮,你可以这样做:

 public delegate void inRange();
 public event inRange shipInRange;

 public void checkRange() {
     if(enemyShip.position.x < ship.position.x + 250 ||
        enemyShip.position.x > ship.position.x + 250)
     shipInRange();
 }

虽然我还没有测试过,但您应该检查enemyship是否比ship落后或领先250个单位。这假设您仅在 x 轴上移动船只。虽然添加 y 轴很容易,但我还建议检查您面向的方向,然后为每个方向放置一个事件并聆听您面向的方向。这可能是最简单的方法。

然后您所要做的就是监听该事件,并在事件发生时执行您需要执行的操作。导弹也是如此,但也要检查角度。

此外,如果您有一些示例代码,我也许可以为您提供更好的示例。

关于c# - Sprite 定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9560736/

相关文章:

C# Encog 神经网络——尽管神经网络的整体误差很低,但预期输出与实际误差相去甚远

c# - 如何使 Response.Write 显示特殊字符,如 "<",">"

c# - LINQ to XML - 具有父级属性的自定义对象列表

c# - 物理引擎的计算顺序和迭代

xna - 如何动态地将 2 个 xna Sprite 彼此分开?

javascript - Crafty.js 无法识别与其他实体的碰撞

c# - 使用递归过滤树

c# - 如何显示一组索引以在数组中筛选

c - texture2d 矩形 XNA 不会初始化

iOS Swift SpriteKit实现 Sprite "explosion"效果