【问题标题】:Building pong in Monogame, but balls won't interact with player 1 paddle在 Monogame 中构建乒乓球,但球不会与玩家 1 桨交互
【发布时间】:2016-01-07 05:00:58
【问题描述】:

我对编程很陌生。基本上刚刚完成了一些教程和准系统说明。我想编写 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;
 }

我知道可能有一种更有效的方法可以做到这一点,但就像我说的那样,我对此仍然很陌生,想了解更多信息,因此欢迎任何建设性的批评。

【问题讨论】:

  • 你的ballPos是在球的中心还是左上角?
  • ballPos 是球的中心

标签: c# detection monogame pong


【解决方案1】:

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

现在它会检测球是否“越过”球拍。

【讨论】:

  • 谢谢,这解决了我的问题。它现在可以正常工作。现在让它根据它击中的桨向不同的方向反弹。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多