C# XNA:试图让玩家飞船开火

本文关键字:玩家 飞船 开火 XNA | 更新日期: 2023-09-27 17:56:04

我正在创建一个小行星游戏,并且在尝试让我的玩家飞船开火时遇到问题。以下是我认为应该让玩家飞船开火的代码

 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;
 }

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

C# XNA:试图让玩家飞船开火

我还无法在评论中回答。

可能出现的问题:

  • 确保您使用的是"基础"。更新()"代码和"基础。您已完成的 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;