精灵定位

时间:2012-03-05 01:49:14

标签: c# xna sprite

所以,我一直在做一个游戏,我遇到了麻烦。我不知道该怎么做。这是我的问题:

我有船,有前向导轨和两枚导弹。火炮只能在船前面直线射击,但如果船在船前锥形区域内的任何地方,导弹都会发射。问题是,船在旋转并在屏幕上移动。对于轨道炮,我需要检查屏幕上船的任何地方是否有船。对于导弹,我需要检查船前250px内是否有一艘船,但任何一侧的船都不超过45度。

你们给予的任何帮助都将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:2)

对于轨道炮你可以做这样的事情:

 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轴很容易,但我还建议您检查您所面向的方向,然后为每个方向放置一个事件并聆听您所面对的方向。这可能是最简单的方法。

然后,您所要做的就是倾听该事件,并在事件发生时做您需要做的事情。导弹的情况也一样,但也要检查角度。

此外,如果你有一些示例代码,我可能会为你提供一个更好的例子。