Prosta kolizja 2D w XNA

Prosta kolizja 2D w XNA
K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

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

Kopiuj
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 ! ; )

xeo545x39
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kosmos
  • Postów: 1571
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??

K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
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.

xeo545x39
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kosmos
  • Postów: 1571
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ę.

K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
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 ; )

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
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)

K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

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

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Dokładnie; np.gra Antichamber.

xeo545x39
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kosmos
  • Postów: 1571
0

Popularnym silnikiem fizycznym jest np. Havoc.

K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
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

xeo545x39
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kosmos
  • Postów: 1571
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.

Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6968
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.