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;
}
我认为这应该让我的玩家飞船开火,但到目前为止,我还没有能够让飞船开火。对我的代码中的任何问题的任何建议将不胜感激。干杯
我还无法在评论中回答。
可能出现的问题:
-
确保您使用的是"基础"。更新()"代码和"基础。您已完成的 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;