【发布时间】:2020-02-17 17:28:30
【问题描述】:
我正在尝试为具有高度的矩形创建碰撞检测。下面是我如何在画布上绘制矩形。
public void DrawVerticalWalls()
{
for (int i = 0; i < 3; i++) { heightMultiplier.Add(rnd.Next(3, 15)); }
var verticalYValues = heightPoints.OrderBy(x => rnd.Next()).Take(3).ToList();
verticalWall = new Rectangle()
{
Width = SnakeSquareSize,
Height = SnakeSquareSize * heightMultiplier[0],
Fill = wallBrush
};
GamePanel.Children.Add(verticalWall);
Canvas.SetTop(verticalWall, verticalYValues[0]);
Canvas.SetLeft(verticalWall, widthPoints[0]);
}
所以我首先生成一个随机高度乘数并将每个高度乘数存储在一个列表中以用于所有矩形。然后我还从预先编写的列表中为矩形的所有可能的 y 值生成随机数。 然后我使用这些随机生成的数字绘制矩形并将其添加到画布中。
这是我如何进行碰撞检测
if ((snakeHead.Position.X == Canvas.GetLeft(verticalWall)) && (snakeHead.Position.Y == Canvas.GetTop(verticalWall)))
{
EndGame();
}
这样做的问题是它没有考虑矩形的高度,相反,碰撞只发生在矩形的尖端,即矩形的初始 x 和 y 坐标。那么如何让它在碰撞中也包含随机高度呢?
【问题讨论】:
-
请不要将代码发布为图片
-
我很抱歉,我是新手,我已经相应地编辑了我的问题!