Как создать систему коллизий в C# visual studio
Поэтому я делал такую игру, как flappy bird, однако я не могу создать правильную систему Коллисона. Птица представляет собой круглый эллипс, а стены-прямоугольники.
В моей нынешней системе столкновение работает беспорядочно и бессмысленно. В основном он сломан.
Визуальное представление
https://youtu.be/1RElwfCVNZg
Gametimer является частью моей функции обновления кадра в основном каждый .1 сек появляется новый кадр
Что я уже пробовал:
Как я сделал птицу и прямоугольную стену
//Bird new Settings(); //Bird //Set Colour Bird SolidBrush Yellow = new SolidBrush(Color.Yellow); Graphics Canvas = e.Graphics; //Make Bird Canvas.FillEllipse(Yellow, Bird.X, Bird.Y, Settings.WidthBird, Settings.HeightBird); SolidBrush Black = new SolidBrush(Color.Black); //Max Height int MAxHeight = PbCanvas.Size.Height; MH = MAxHeight - 80; if (i == 0 || i % j == 1) { HeightD = random.Next(10, MAxHeight - 80); } HeightU = MH - HeightD; Bottom = PbCanvas.Bottom; //Walls Canvas.FillRectangle(Black, X, 0, 50, HeightU); Canvas.FillRectangle(Black, X, Bottom - HeightD, 50, HeightD);
I и J означают 2 вещи. Я означает, сколько раз в стену породил, а j-количество secodns между каждой стены, которую породил
Моя идея для столкновения такова
if (Bird.X == X && Bird.Y > HeightD && Bird.Y < HeightU - 80) { GameOver = true; label2.Visible = true; MessageBox.Show("You Died"); X = 300; //Defauly X value of wall GameTimer.Stop(); }
Здесь же присутствуют 2 стены. Если его высота больше высоты верхней стены, то он пройдет, а если высота нижней стены меньше, то он пройдет. Проблемы, с которыми я сталкиваюсь, заключаются в том, что значения птиц находятся в координатах X и Y, а значения стен-в высоте. Какие могут быть возможные варианты решения этой проблемы
Richard MacCutchan
Вы должны использовать одну и ту же систему координат для птиц и стен.