Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Poruszanie się postaci pod dowolnym kątem

Ostatnio zmodyfikowano 2013-02-26 18:41
Autor Wiadomość
aimo6
Temat założony przez niniejszego użytkownika
Poruszanie się postaci pod dowolnym kątem
» 2013-02-23 21:17:22
witam

ostatnio kombinuje trochę i natrafiłem na pewną trudność.
Próbuję stworzyć grę 2d z widokiem z góry.

mój problem polega na tym, że chciałbym zrobić sterowanie troszkę bardziej dynamiczne niż coś takiego:

C/C++
if( sf::keyboard::isKeyPressed( sf::keyboard::W ) )
     pozycja.x++;

if( sf::keyboard::isKeyPressed( sf::keyboard::S ) )
     pozycja.x--;

if( sf::keyboard::isKeyPressed( sf::keyboard::A ) )
     pozycja.y++;

if( sf::keyboard::isKeyPressed( sf::keyboard::D ) )
     pozycja.y--;


wolałbym aby A oraz D obracało się postać. Niby nic trudnego,
ale pozostaje wtedy problem że postać nadal chodzi w tedy
tylko do góry i dołu. Potrzebny mi jest jakiś przelicznik:

C/C++
if( sf::keyboard::isKeyPressed( sf::keyboard::W ) )
     pozycja += przelicznik;

if( sf::keyboard::isKeyPressed( sf::keyboard::S ) )
     pozycja += przelicznik;


Na pewno przelicznik jest zależny od kąta o jaki obrócony jest sprite.

moje pytanie jest takie: jak zrobić aby postać chodziła w stronę w którą jest obrócona?
P-76853
pekfos
» 2013-02-23 21:23:49
Frazy, które należy wpisać w wyszukiwarkę google:
P-76854
RazzorFlame
» 2013-02-24 12:31:22
Pekfos, to nie takie łatwe, same sinus, cosinus nie da mu nic jeśli nie będzie potrafił tego wykorzystać. aimo6 tak jak napisał pekfos użyj trygonometrii do obliczania przesunięcia obiektu pod danym kątem. EasyKoder na swojej stronie ma artykuł o obrotach. Co prawda to pod Allegro, ale to chodzi ogólnie o obliczenia (wyświetlanie łatwo).
Czyli tak:
Sinus/Cosinus - na googlach jest pełno tego (wymaga troche dużej chęci ;P)
EasyKoder.vot.pl - Artykuł o obrotach
sfml-dev.org - w Dokumentacji, jak obrócić w daną stronę obrazek (sf::Sprite::SetRotation())
Korzystając z tych informacji, na pewno dasz rade. Jeśli masz jeszcze jakieś pytania lub coś nie wypaliło to pisz, naprowadzimy cię :)
P-76876
pekfos
» 2013-02-24 12:49:42
Pekfos, to nie takie łatwe, same sinus, cosinus nie da mu nic jeśli nie będzie potrafił tego wykorzystać.
Jak wie, co to sinus i cosinus, to reszta przyjdzie sama. (Chyba, że nie rozumie dzielenia i mnożenia..)
P-76879
Kopczak1995
» 2013-02-24 12:58:54
@Pekfos
Ja też muszę się zgodzić z @RazzorFlame'em.
Zauważ, że aimo6 zapewne podobnie jak i ja :P jest jeszcze początkujący i nawet jeżeli ogarnie prostą choćby trygonometrię to jeszcze kwestia przełożenia wszystkiego na C++, a to dla takiego delikwenta nie mały kłopot - ja też jakbym miał nad tym posiedzieć to mnie głowa boli :D
Jednak wiadomo - dla chcącego nic trudnego tyle, że zawsze lepiej jak ktoś ciebie naprowadzi na właściwy tor niż gdybyś męczył się bez żadnej świadomości od czego zacząć - to tylko zniechęca :/
P-76880
aimo6
Temat założony przez niniejszego użytkownika
» 2013-02-26 18:41:47
Dziękuje wszystkim za pomoc.

okazało się, że jedyne co wcześniej robiłem źle, to to,
że podawałem kąt w zwykłych stopniach, zamiast w radianach (swoją drogą nie mam pojęcia do czego to jest, ale to szczegół)

C/C++
v.x =- speed * sin(( kat * M_PI ) / 180.0f );
v.y = speed * cos(( kat * M_PI ) / 180.0f );

tyle wystarczyło aby wszystko ładnie działało.
P-77090
« 1 »
  Strona 1 z 1