Prosta kolizja 2D w XNA

0

Witajcie! Jak zrobić idealną kolizję dwóch kwadratów? Zrobiłem to na ten sposób ale czasami są lekkie problemy.

if (poruszany.Intersects(stojacy))
     {
     if (poruszany.Y + poruszany.Height < stojacy.Y + stojacy.Height / 2) YSpeed = Math.Abs(YSpeed) * -1;
     else if (poruszany.X + poruszany.Width < stojacy.X + stojacy.Width / 2) XSpeed = Math.Abs(XSpeed) * -1
     else if (poruszany.X > stojacy.X + stojacy.Width / 2) XSpeed = Math.Abs(XSpeed);
     else if (poruszany.Y > stojacy.Y + stojacy.Height / 2) YSpeed = Math.Abs(YSpeed); 
     }

Poproszę o pomysł, a ja już postaram się go wsadzić do klasy. Pozdrawiam i proszę o pomoc ! ; )

0

Nie wiem co tu naklepałeś, ale wydaje się to co najmniej dziwne. Co masz na myśli pisząc idealna kolizja? Jeżeli są w tym samym punkcie??

0

Jeden kwadrat jest obiektem poruszającym się z v = 4 i odbija się od ścian ekranu. Chce zrobić teraz, aby odbijał się on od przeszkody, w tym wypadku prostokąta w zależności z której strony w niego uderza.

0

To dosyć trudniejsze zagadnienie, musiałbyś się zagłębić i przeczytać uważnie np. to http://go.colorize.net/xna/2d_collision_response_xna/
Tutaj trzeba już uwzględniać poszczególne kąty zderzeń itd., nie ma króciutkiego kodu, który by za ciebie to załatwił. Ewentualnie poczytaj samą teorię o "collision response" i spróbuj sam napisać taką obsługę.

0

Ok dzięki bardzo, a mam takie pytania. Masz może jeszcze jakieś ciekawe artykuły np. o dodawaniu i kolizji modeli 3D i czy wiesz może, na jakiej zasadzie są pisane poważniejsze gry indie oraz wielkie produkcje? Chodzi głownie o programy ; )

0

na jakiej zasadzie są pisane poważniejsze gry indie oraz wielkie produkcje?

Korzystają z już napisanych, gotowych silników do grafiki, dźwięku, fizyki etc.
(chyba, że masz z kolei na myśli, jak tam to działa ;P)

0

Tzn. Np. Korzystają z UDK itp ? ; p

0

Dokładnie; np.gra Antichamber.

0

Popularnym silnikiem fizycznym jest np. Havoc.

0

A jakie macie pomysły na udostępnienie komuś stworzonej gry? Nie chodzi o tworzenie instalatora, ale dołączenie bibliotek żeby działało u kogoś na pc

0

XNA Framework posiada opcję Publish, która jest w Properties projektu. Tam tworzy się mini instalator i wszystkie potrzebne rzeczy lądują jako assety do folderów itd. oraz masz execa do instalacji, potem sobie to instalujesz i voila.

0
krystiant94 napisał(a):

A jakie macie pomysły na udostępnienie komuś stworzonej gry? Nie chodzi o tworzenie instalatora, ale dołączenie bibliotek żeby działało u kogoś na pc

Jak chcesz stworzyć niezależną binarkę z niezależnymi bibliotekami, to pisz bez XNA i bez .NET Framework'a. Pisz w C++ albo w Pythonie. Wtedy będziesz mógł się obejść bez instalatora.

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