Autor Wątek: Platformówka XNA  (Przeczytany 3250 razy)

Offline Rybopiotr

  • Użytkownik

# Grudzień 29, 2012, 21:17:43
W skrócie, dwie sprawy:
  • Jak zaprogramować animację gracza mając stworzoną taką grafikę?
  • Jak przesuwać kamerę? W sensie podpiąć jakoś pod gracza by przesuwała się razem z nim, dałbym też jakieś ograniczenia aby nie przechodziła przez początek i koniec mapy

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Kos

  • Użytkownik
    • kos.gd

  • +3
# Grudzień 29, 2012, 21:31:02

   
  • Jak zaprogramować animację gracza mając stworzoną taką grafikę?

Potrzebujesz:
- górny lewy róg każdej klatki oraz jej rozmiar (grafik powinien Ci dać tę informację). Spritesheety często są regularne, tj każda klatka ma ten sam rozmiar i znając go możesz wyznaczyć prostokąt z klatką nr N.
- opis poszczególnych sekwencji animacji - typu "atak to klatki 1,2,3,4 w kółko, 20ms między każdą, a bieganie to klatki 5,6,7,8 zapętlone w ping-pong". Najczęściej czas między klatkami animacji jest stały.

Potem w kodzie gry musisz pamiętać, która sekwencja jest 'aktywna' i jak długo (w ms) jest aktywna, na podstawie timingu animacji wyznaczać 'aktualną' klatkę i rysować odpowiadający jej prostokąt ze sprite sheeta w odpowiednim miejscu.

Cytuj
   
  • Jak przesuwać kamerę? W sensie podpiąć jakoś pod gracza by przesuwała się razem z nim, dałbym też jakieś ograniczenia aby nie przechodziła przez początek i koniec mapy
Odejmujesz pozycję kamery od pozycji każdego obiektu na ekranie.

Samą kamery możesz przesuwać na sztywno (ustawiać ją tam gdzie jest gracz) lub płynnie (przesuwać z daną prędkością w stronę pozycji gracza, zapewne tym szybciej im dalej jest).

Offline Rybopiotr

  • Użytkownik

# Grudzień 29, 2012, 22:09:21
Cytuj
- górny lewy róg każdej klatki oraz jej rozmiar (grafik powinien Ci dać tę informację). Spritesheety często są regularne, tj każda klatka ma ten sam rozmiar i znając go możesz wyznaczyć prostokąt z klatką nr N.
To ja jestem grafikiem :F
Cytuj
- opis poszczególnych sekwencji animacji - typu "atak to klatki 1,2,3,4 w kółko, 20ms między każdą, a bieganie to klatki 5,6,7,8 zapętlone w ping-pong". Najczęściej czas między klatkami animacji jest stały.
To wiem, tylko nie wiem jak zaprogramować zmianę klatek.
Cytuj
Potem w kodzie gry musisz pamiętać, która sekwencja jest 'aktywna' i jak długo (w ms) jest aktywna, na podstawie timingu animacji wyznaczać 'aktualną' klatkę i rysować odpowiadający jej prostokąt ze sprite sheeta w odpowiednim miejscu.
Ok

Cytuj
Odejmujesz pozycję kamery od pozycji każdego obiektu na ekranie.

Samą kamery możesz przesuwać na sztywno (ustawiać ją tam gdzie jest gracz) lub płynnie (przesuwać z daną prędkością w stronę pozycji gracza, zapewne tym szybciej im dalej jest).
Z tym że ja nie znam komend związanych z kamerą, co chce zrobić wiem. :F

Offline Veldrin

  • Użytkownik

  • +5
# Grudzień 29, 2012, 22:23:24
@up: To może czas zajrzeć do dokumentacji i się "komend" nauczyć?

Offline Kebab_u_Turka

  • Użytkownik

# Grudzień 29, 2012, 22:34:20
W XNA kamerę robi się w dość fajny sposób - poprzez przekształcenie macierzy wyświetlania.

Tutaj przykład http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/

Offline .Dexter.

  • Użytkownik

# Grudzień 30, 2012, 10:28:17
http://msdn.microsoft.com/en-us/library/dd254918%28v=xnagamestudio.31%29.aspx

Masz gotowe Solution w XNA do tworzenia gierek platformowych. Na MSDN znajdziesz artykuł o tym jak dopisać krok po kroku przesuwanie planszy tak jak chcesz. Swoje grafiki możesz też bez problemu wsadzić zamiast tych co tam już są.

Offline Chimerian

  • Użytkownik
    • Profil na Warsztat.GD

# Styczeń 02, 2013, 21:04:31
W XNA kamerę robi się w dość fajny sposób - poprzez przekształcenie macierzy wyświetlania.

Tutaj przykład http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/

Korzystałem swego czasu z rozwiązania zaproponowanego przez Davida - ogólnie to co opisał to rzecz bardzo przydatna, ale niestety zawiera błąd. W jednym z komentarzy pod artykułem został ten błąd opisany (jest tam chyba nawet poprawiona wersja kodu programu). Taka gratisowa rada ;) Pamiętam ile się męczyłem aby ów błąd znaleźć :P