在单人游戏中建立乒乓球,但球赢了';t与玩家1划桨互动

本文关键字:玩家 1划 建立 游戏 单人 乒乓球 | 更新日期: 2023-09-27 18:29:22

我对编程很陌生。基本上刚刚完成了几个教程和基本说明。我想给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;
 }

我知道可能有一种更有效的方法可以做到这一点,但正如我所说,我对这一点还很陌生,想了解更多,所以任何建设性的批评都是受欢迎的。

在单人游戏中建立乒乓球,但球赢了';t与玩家1划桨互动

根据TotalGameSeconds的精度,球可能永远不会"击中"球拍(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;
 }

现在,它将检测球是否"超过"球拍。