Rysowanie koła

0

Witam. Mam problem z narysowaniem koła w MogoGame.
Udało mi się to wygooglać: http://stackoverflow.com/questions/24559585/how-to-create-a-circle-variable-in-monogame-and-detect-collision-with-other-circ
Według autora odpowiedzi:

Now, if I've got my calculations correct (I wrote this off the top of my head) you should be able to use the new Circle class the same way you can use the XNA / MonoGame Rectangle class.

Jednakże, nie mogę użyć tej klasy analogicznie jak Rectagle, wpisanie takiego kodu:

//konstruktor
circle = new Circle(10, 10, 10);
//metoda draw
spriteBatch.Draw(ball, circle, Color.White);

Wywala mi błąd:

Severity Code Description Project File Line Suppression State
Error CS1503 Argument 2: cannot convert from 'Addons.Circle' to 'Microsoft.Xna.Framework.Vector2?'

Błąd oczywiście rozumiem, tylko nie wiem jak do tego podejść... Teoretycznie mogę sobie stworzyć drugą zmienną, tym razem Rectagle typu:

recCircle = new Rectangle(circle.X, circle.Y, circle.Radius, circle.Radius);

i wtedy rysuję sobie teksturę z przeźroczystym tłem i narysowanym nań kołem:

spriteBatch.Draw(ball, recCircle, Color.White);

odległość od środka kwadratu do jego ściany, będzie równa R koła, więc rozmiar powinien się zgadzać. Jeżeli chodzi o kolizję to teoretycznie będę mógł przemieszczać "kształt" koła za tym prostokątem i je na siebie nakładać, żeby móc wykryć kolizję koła z innym obiektem, a nie kolizję kwadratu.
Jednakże takie rozwiązanie sprawia kilka problemów:

  1. Tekstura koła musi być przeźroczysta, oraz mieć sporą rozdzielczość. W przeciwnym przypadku podczas skalowania się "rozjedzie". Wolałbym zrobić sobie teksturę wielkości 1x1px jednego koloru i sobie ją po prostu skalować, kolorować itd.
  2. takie rozwiązanie będzie podatne na błędy i wymaga dużo klepania, trochę bezsensownego kodu... (niezły syf się zrobi).

W związku z tym proszę Was o pomoc. Jak narysować to koło?

Pozdrawiam ;)

0

Nie wiem czy jeszcze aktualne ale...

Możesz to zrobić na kilka sposobów, na razie opiszę je ogólnikowo, ale jak byś chciał to mogę jeszcze pomóc ;)

  • Silnik fizyczny Farseer Physics posiada generatory tekstur - w tym koła, jest trochę opcji, jak dla mnie najlepsza (choć sam jej nie testowałem)
  • Możesz narysować koło za pomocą prymitywów, podać współrzędne punktów, i wypełnić je jakimś kolorem
  • Monogame ma możliwość generowania tekstur, możesz podać kolor każdego piksela, i w ten sposób utworzyć koło

1 użytkowników online, w tym zalogowanych: 0, gości: 1