我正在用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);
}发布于 2013-05-30 16:32:40
我可以假设关于你的程序的一些属性。当你调用时:
bPos.X <= p1Pos.X + p1Pos.Width这将检查您的球的中心。这不会在球的表面上反射,而是在它的中心点上反射。
如果这不是你试图纠正的奇怪行为,你能澄清你遇到的行为吗?
https://stackoverflow.com/questions/16830920
复制相似问题