C#XNA:试图让玩家发射火力

时间:2014-04-02 12:15:52

标签: c# xna

我正在创建一个小行星游戏,我遇到了一个问题,试图让我的玩家发射。 以下是我认为应该让玩家发射的代码

 public void Fire()
    {
     if (RocketshotDelay >= 0)
            RocketshotDelay--;
        if (RocketshotDelay <= 0)
        {
            rocketshotPosition = new Vector2(rocketshotPosition.X + 32 - rocketshotTexture.Width / 2, rocketshotPosition.Y + 30);

            isVisible = true;

             if (RocketshotDelay == 0)
            RocketshotDelay = 15;

  public void UpdateRocketshot()
 {
  rocketshotPosition.Y = rocketshotPosition.Y - speed;

            if (rocketshotPosition.Y <= 0)
                isVisible = false;
 }

我认为这应该会让我的玩家发射火,但到目前为止,我还没有能够让这艘船开火。对我的代码中的任何问题的任何建议将不胜感激。干杯

1 个答案:

答案 0 :(得分:0)

我还没有在评论中回答。

可能的问题:

  • 确保您使用的是“base.Update()”代码和“base.Draw()”函数“Components.Add( RocketShot Instance Name )“或”Components.Add(this)“

  • 发射代码是否位于实际的火箭或火箭射击类中?

    • 如果它在火箭射击类中(看起来像是这样),那么问问自己,看看最初的火箭射击位置在哪里。好像你只是简单地抵消了它,但它在哪里被抵消了?是火箭队可能在x:0 y:0开始?或者你确定它在船旁边跟踪吗?
  • 您的火箭延迟可能也无法正常工作。如果它是等于0,你只能将火箭重置为15.如果它小于,则不重置。但是你可以触发该代码,即使它是-1或其他任何负面的。这意味着也许你会得到你的第一枪,但如果延迟超过0(-1到其他任何负面),你的子弹将不会重置。如果发生这种情况,您的火箭可能会继续重置。

  • 确保您的速度合理。也许首先用少量数字进行测试。

  • 确保您的触发器和消防代码认为按钮已释放而不仅仅是按下并按住。含义使用previousKeyState和currentKeyState。否则它可能会继续触发。 (由于延迟问题,这可能会导致它始终一直重置。)

        if (RocketshotDelay <= 0) //This will trigger and reset all the time
            RocketshotDelay = 15;