我正在使用C#
和XNA
学习制作像 Peggle Deluxe 这样的游戏。
我有两个矩形、一个球和一个正方形区域。球从大炮中射出,如果球击中方格,方格消失,球飞走,但球并没有实际弹起;它有时会朝不同的方向飞走或卡在边缘。
这是我目前的代码:
public void Update(Ball b, Deadline dl)
{
ArrayList listToDelete = new ArrayList();
foreach (Field aField in allFields)
{
if (aField.square.Intersects(b.ballhere))
{
listToDelete.Add(aField);
Punkte = Punkte + 100;
float distanceX = Math.Abs(b.ballhere.X - aField.square.X);
float distanceY = Math.Abs(b.ballhere.Y - aField.square.Y);
if (distanceX < distanceY)
{
b.myMovement.X = -b.myMovement.X;
}
else
{
b.myMovement.Y = -b.myMovement.Y;
}
}
}
它会根据球撞击正方形的方式改变 X 或 Y 轴,但并非总是如此。
什么可能导致这个问题?