我是编程新手。基本上只是完成了一些教程和准系统指导。我想对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的精度,球可能永远不会“击中”桨(ballPos.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;
 }


现在它将检测球是否超出了球拍。

10-07 19:29