矩形与正方形上的球相交
本文关键字:正方形 | 更新日期: 2023-09-27 18:20:44
我正在制作一款类似Peggle Deluxe的游戏,使用C#
和XNA
进行学习。
我有两个长方形,一个球和一个正方形的场地。球从大炮里射出,如果球击中正方形,正方形就会消失,球就会飞走,但球并没有真实地弹出来;它有时会朝着不同的方向飞去,或者卡在边缘。
这是我目前的代码:
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轴,但并不总是如此。
是什么原因导致了这个问题?
您正在检查
if (distanceX < distanceY)
以检测你的方块的哪一边被击中,如果我得到的话。
所以,我认为你的问题是,当球击中角落附近的正方形时,当你的distanceX
和distanceY
完全相同,碰撞检测失败时。在这种情况下,您需要一种更准确的方法来检查碰撞。