在 Monogame 中建造乒乓球,但球不会与玩家 1 的球拍互动

Building pong in Monogame, but balls won't interact with player 1 paddle

我对编程还很陌生。基本上刚刚完成了几个教程和准系统说明。我想编写 pong 代码让自己开始尝试自己做一些事情,但我遇到了一些障碍。出于某种原因,我生成的球根本不会与我的玩家 1 球拍互动,但它会与我的球员 2 球拍完全互动。我似乎无法弄清楚为什么,因为我基本上两次使用完全相同的代码只是为了纠正控件和位置的差异,所以任何帮助将不胜感激。我的小球和球拍交互代码如下:

 ballPos += ballSpd * (float)gameTime.ElapsedGameTime.TotalSeconds;

 if (ballPos.X == plyr1Pos.X && ballPos.Y + 3 > plyr1Pos.Y - 25 && ballPos.Y - 3 < plyr1Pos.Y +25)
 {
     ballSpd.X = 150;
     ballSpd.Y = 0;
 }

 else if (ballPos.X == plyr2Pos.X && ballPos.Y + 3 > plyr2Pos.Y - 25 &&  ballPos.Y - 3 < plyr2Pos.Y + 25)
 {
     ballSpd.X = -150
     ballSpd.Y = 0;
 }

我知道可能有更有效的方法,但就像我说的,我对此仍然很陌生,想了解更多,所以欢迎任何建设性的批评。

根据 TotalGameSeconds 的精度,球可能永远不会 "hit" 球拍 (ballPos.X < plyr1Pos.X)。要解决此问题,请尝试像这样修改 X 检测:

 if (ballPos.X <= plyr1Pos.X && ballPos.Y + 3 > plyr1Pos.Y - 25 && ballPos.Y - 3 < plyr1Pos.Y +25)
 {
     ballSpd.X = 150;
     ballSpd.Y = 0;
 }

 else if (ballPos.X >= plyr2Pos.X && ballPos.Y + 3 > plyr2Pos.Y - 25 &&  ballPos.Y - 3 < plyr2Pos.Y + 25)
 {
     ballSpd.X = -150
     ballSpd.Y = 0;
 }

现在它将检测球是否"beyond" 球拍。