#c# #uwp #2d #collision-detection
#c# #uwp #2d #обнаружение столкновения
Вопрос:
У меня перемещаются 2 изображения (элемент пользовательского интерфейса), пастух и волк. Я хочу, чтобы, если они находятся в одной и той же области каждого из изображений (если они касаются друг друга), что-то произойдет (пастух умрет).
Я новичок, и я думал о цикле for, но это работает только после того, как я изо всех сил пытался умереть … lol…
private void GameOver(Image enemy, Image actualToMove)
{
for (int i = 0; i < 200; i )
{
if (Canvas.GetLeft(actualToMove) == (Canvas.GetLeft(enemy) - i) amp;amp; Canvas.GetTop(actualToMove) == (Canvas.GetTop(enemy) - i)
|| Canvas.GetLeft(actualToMove) == (Canvas.GetLeft(enemy) i) amp;amp; Canvas.GetTop(actualToMove) == (Canvas.GetTop(enemy) i))
{
gameOver = true;
break;
}
}
}
Я подумал об этом цикле, чтобы захватить овцу, и это работает… но овца статична.
я почти уверен, что цикл for в этой ситуации — действительно плохая идея…
Мне очень сложно выполнить обнаружение коллизий в UWP… Пожалуйста, помогите!
Ответ №1:
Вы могли бы использовать событие манипуляции для перемещения ваших изображений. Например, вы могли бы переместить изображение в ManipulationDelta
событии, и в ManipulationCompleted
случае вы могли бы выполнить обнаружение столкновения. Вам не нужно было использовать цикл.