C# i XNA, tworzenie pocisku 2D

0

Witam drogich użytkowników :D

Otóż piszemy programy na zaliczenia z programowania, lecz ja w C# XNA.
I mam problem napisałem już prawie wszystko ale nurtuje mnie jak zrobić aby po wciśnięciu np spacji utworzyć obiekt na lufie, bo z proruszaniem się jego skopiuje kod na nadciągające steroidy i tak samo się będzie poruszać.

Czyli to by musiało być coś ala

if
(keyboard.IsKeyDown(Keys.Space))

i tutaj trzebało by jakoś zrobić aby tam gdzie jest lufa czyli jakoś bym napisać musiał że np na teksturze postaci lufa jest na ... pixel do góry utwórz obiekt i z powrotem kod który będzie wysyłał to na góre. Kod na posyłanie mam, aby przedmiot się sam poruszał np z góry na dół, czyli w moim przypadku to asteroidy.
Czy wie ktoś z państwa jak to zrobić z tymi pociskami?

1

i tutaj trzebało by jakoś zrobić aby tam gdzie jest lufa czyli jakoś bym napisać musiał że np na teksturze postaci lufa jest na

A nie prościej wyliczyć z pozycji postaci?

0

No no, wie pan dużo mi to mówi, bo taki dobry to w programowaniu jeszcze nie jestem...

1

wie pan

Jeszcze nie słyszałem żeby na tym forum ktoś przez 'pan' powiedział ;)
//q: to mało słyszałeś.. co kulturalniejsze osoby zwracają się w swoich pierwszych postach do innych per 'państwo'

if (keyboard.IsKeyDown(Keys.Space))

Nie pisałem gier w XNA. W WinForms wystarczy dodać zdarzenie KeyDown do formy.
Aczkolwiek msdn podaje taką konstrukcję:

KeyboardState keyboardState = Keyboard.GetState();       
if (keyboardState.IsKeyDown(Keys.C))
{
    /blah blah blah
} 

taki dobry to w programowaniu jeszcze nie jestem...

To akurat raczej matematyka (Dzisiaj test gimnazjalny z matematyki!!!1).

Tworzysz ("tworzy Pan" jakoś dziwnie brzmi...) grę 2D czy 3D? Bo jeśli 2D to wystarczy kilka działań trygonometrycznych wykonać:
Masz gdzieś na pewno zapisaną pozycję postaci. Gdzieś też pewnie jest zapisane o jaki kąt postać jest obrócona (czyli w którą stronę lufa jest obrócona). To wystarczy do obliczenia pozycji lufy, a następnie kierunku w którym ma zmierzać pocisk. Podaj najwyżej trochę więcej kodu/informacji bo raczej nie będę zgadywać ;)
Jeśli 3D to zdecydowanie trzeba więcej informacji bo to będzie trudniejsze i to znacznie.

0

Jest w temacie że 2D i w pierwszym poście także napisałem zdarzenie dla przycisku Space.
Jest to zwykły obrazek bmp który będzie miał robić za pocisk po wciśnięciu spacji. Mam kod już napisany na to aby meteoryty na mnie leciały od góry, aby się same tworzyły i leciały, tylko nie wiem jak zrobić aby po wciśnięciu spacji wygenerować tą teksture 2D.

0

skoro masz pojawianie się asteroidów, to analogicznie na podstawie tego możesz napisać strzelanie. No chyba że elementu z pojawianiem się i spadaniem asteroidów nie pisałeś sam.
Ja przecież nie mam pojęcia w jaki sposób realizujesz zadania w grze. Jak renderujesz obiekty, jaki jest układ odniesienia itd itp.

Podaj kod to może coś poradzimy ;P

0

Po prostu nie wiem jak określić pozycję lufy, a reszta po jej ustaleniu będzie analogiczna do tworzenia się asteroid.

0

A lufa obraca się czy porusza w lewo i prawo u dołu ekranu?

0

Lufa jest nie zmienna. strzela tylko na wprost. Bo ja dopiero początkujący i nie robię tak zaawansowanych =]

0

To ktoś wie czy nie :D? Nawet mała wskazówka byłaby pomocna.

0

ale przecież skoro lufa stoi w jednym miejscu i jakąś ją rysujesz to:
aby rysować musisz wskazać jakiś punkt,
dalej, skoro wskazujesz punkt to wiesz gdzie jest lufa.
O co chodzi ;P?

0

Chodzi o to że jak poruszam się strzałkami po mapie, to jak przecież wtedy będę musiał jakoś napisać to tak żeby on miał pozycję lufy, a to jak na mój poziom za bardzo skomplikowane [???]

0

"żeby on miał pozycję lufy"
Kto? Ekran?
Chodzi CI o to że działo jest w centrum mapy i poruszając się na boki zmieniasz pozycję okna wyświetlającą świat?

1

Moim zdaniem XNA ma za duży poziom abstrakcji ;)

@Ciekawski - chętnie bym ci pomógł, ale sam nie rozumiem o co ci chodzi. Może daj jakiś kod?

0

Patrz chodzi o to że np.

Jedziesz autem do przodu, na samym przodzie auta masz działko, które się w ogóle nie rusza, jest stałe. I Gdy jedziesz tym autem np do tyłu albo do przodu strzelasz. I chodzi o to żeby, po wciśnięciu klawisza Space, on wiedział gdzie ma stworzyć pocisk, bo to aby pocisk leciał do przodu wiem jak zrobić, ale nie wiem skąd ma program wiedzieć gdzie jest w tej chwili pojazd.

0

A dokładniej lufa pojazdu.

1

skąd ma program wiedzieć gdzie jest w tej chwili pojazd.

Mówiłem że XNA ma stanowczo za wysoki poziom abstrakcji ;). Nie wiesz gdzie jest pojazd który rysujesz?

A dokładniej lufa pojazdu.

Musisz znać:

  • pozycję pojazdu
  • długość lufy
  • kąt obrócenia lufy

Wtedy obliczasz pozycję końca lufy z prostej funkcji trygonometrycznej.

0

Lufa się nie obkręca.

No ta, postać jest całością z lufą, czyli musze wiedzieć gdzie jest pojazd i gdzie jest koniec lufy... Aha [rotfl] :d

1

no to zamiast długości lufy odległość lufy od środka postaci, a zamiast kąta obrócenia lufy- obrócenie postaci. ;)

0

Oprócz tego mozna byłoby prosić o maleńką wskazówkę jak zacząć? :d bo dalej to pójdzie jak z płatka :d

Ale wielkie dzięki! Już mniej więcej ogarniam o co chodzi..!

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