我正在XNA打乒乓球比赛,我遇到了球拍碰撞的问题。 桨的一侧工作正常,但顶部和底部是很奇怪的。我尝试了很多东西,但它仍然无效。 这是我目前的代码:
protected override void Update(GameTime gameTime)
{
//Intersection
if (bPos.Intersects(p1Pos))
{
//top
//bottom
//middle
if (bPos.X <= p1Pos.X + p1Pos.Width)
bSpd.X = -bSpd.X;
}
if (bPos.Intersects(p2Pos))
{
//top
//bottom
//middle
if (bPos.X + bPos.Width >= p2Pos.X)
bSpd.X = -bSpd.X;
}
bPos.X = bPos.X + (int)bSpd.X;
bPos.Y = bPos.Y + (int)bSpd.Y;
if (bPos.Intersects(p1Pos))
{
//top
//bottom
//middle
if (bPos.X <= p1Pos.X + p1Pos.Width)
bSpd.X = -bSpd.X;
}
if (bPos.Intersects(p2Pos))
{
//top
//bottom
//middle
if (bPos.X + bPos.Width >= p2Pos.X)
bSpd.X = -bSpd.X;
}
base.Update(gameTime);
}
答案 0 :(得分:0)
我可以假设一些关于你的程序的属性。 当你打电话:
bPos.X <= p1Pos.X + p1Pos.Width
这会检查你的球的中心。这不会反映球的表面,而是球的中心点。
如果这不是您试图解决的奇怪行为,请您清楚一下您遇到的行为?