Я создаю небольшую платформерную игру и хочу сравнить границы прямоугольника одного игрока со многими элементами прямоугольника, которые являются моими платформами. Я знаю, что в WinForms я могу просто использовать метод PictureBox .bounds.intersectswith()
.
в моем xaml я определяю свои элементы управления вот так в сетке, называемой программой.
<Rectangle Name="player" Tag="player" HorizontalAlignment="Left" Height="61" Stroke="Black" VerticalAlignment="Top" Width="75" Canvas.Top="332" Canvas.Left="25">
<Rectangle.Fill>
<ImageBrush ImageSource="player.png"/>
</Rectangle.Fill>
</Rectangle>
<Rectangle Tag="platform" HorizontalAlignment="Left" Height="82" Stroke="Black" VerticalAlignment="Top" Width="100" Canvas.Top="398">
<Rectangle.Fill>
<ImageBrush ImageSource="purplebrick.png"/>
</Rectangle.Fill>
</Rectangle>
и затем я хочу сравнить границы игрока с примерно 50 платформами.
foreach (Rectangle x in LogicalTreeHelper.GetChildren(program))
{
if (x is Rectangle && x.Tag.ToString() == "platform")
{
if(player.intersectswiht(x) // problem area
я использовал этот вопрос Bounds.Intersect для WPF в качестве ссылки, но мне нужно назвать каждый элемент прямоугольника и создать фактическую ссылку, чтобы иметь возможность использовать его пересечение с функцией?
или я должен просто сравнить размеры каждого элемента (canvas.top и т. Д.), Но это даст мне только значение ребер, а не диапазон, если они перекрываются правильно?