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

Poruszanie

Ostatnio zmodyfikowano 2016-03-02 21:17
Autor Wiadomość
snajperek130
Temat założony przez niniejszego użytkownika
Poruszanie
» 2015-12-30 19:46:25
Witam, mam problem odnośnie poruszania się statku. Otoz chce zrobic poruszanie sie za pomoca klawiszy W A S D w kierunku myszki. Szukalem pomocy i napisalem taki kod, ale nie dziala poprawnie:
C/C++
void Player::accelerate( sf::Vector2f mysz, String key )
{
   
    Vector2f norm = mysz - spaceship.getPosition(); //Counting the vector between the mouse and sprite
    float rot = atan2( norm.y, norm.x ); // counting the rotation
    rot = rot * 180.f / M_PI; //conversion to degrees
    rot += 90; // adding to work normally
    spaceship.setRotation( rot );
    float xN = static_cast < float >( speed * sin( M_PI *( rot / 360 ) ) );
    float yN = static_cast < float >( speed * cos( M_PI *( rot / 360 ) ) );
   
    if( key == "W" )
    {
        vx += xN * 0.02f;
        vy -= yN * 0.02f;
    }
    else if( key == "S" )
    {
        vx -= xN * 0.02f;
        vy += yN * 0.02f;
    }
   
   
}




void Player::update( sf::Vector2f mysz ) //5
{
    //rotation in the direction of the mouse
    Vector2f norm = mysz - spaceship.getPosition(); //Counting the vector between the mouse and sprite
    float rot = atan2( norm.y, norm.x ); // counting the rotation
    rot = rot * 180.f / M_PI; //conversion to degrees
    rot += 90; // adding to work normally
    spaceship.setRotation( rot );
   
    vx = vx - vx * 0.002f; //slowing down
    vy = vy - vy * 0.002f;
    spaceship.move( vx, vy );
   
}
Postac nie porusza sie dobrze, gdy myszka jest pionowo skierowana do statku to dobrze sie porusza,a le jak myszka bedzie z boku to porusza sie tak jakby lukiem.

P-142604
snajperek130
Temat założony przez niniejszego użytkownika
Xd
» 2015-12-30 20:11:23
Dobra, czesciowo rozwiazalem problem:
C/C++
float xN = static_cast < float >( speed * sin(( rot * M_PI ) / 180.0 ) );
float yN = static_cast < float >( speed * cos(( rot * M_PI ) / 180.0 ) );

ale teraz nie dzialaja poprawnie klawisze A i D
C/C++
else if( key == "A" )
{
    vx -= xN * 0.02f;
    vy += yN * 0.02f;
}
else if( key == "D" )
{
    vx += xN * 0.02f;
    vy -= yN * 0.02f;
}
Prosze o pomoc w tej sprawie :)
P-142605
pekfos
» 2015-12-31 11:16:34
A i D mają poruszać postać o +-90 stopni względem kierunku W. Przelicz przesunięcia dla każdego klawisza osobno.
P-142622
snajperek130
Temat założony przez niniejszego użytkownika
» 2016-01-04 23:33:02
Rozumiem, tylko teraz po nacisnieciu klawiszy A lub D statek porusza sie wogol myszki w coraz to wiekszej odleglosci od niej. Nie wiem, musze dodac warunek w tych klawiszach na poruszanie sie ruchem po okregu czy jakos inaczej??
C/C++
Vector2f norm = mysz - spaceship.getPosition(); //Counting the vector between the mouse and sprite
float rot = atan2( norm.y, norm.x ); // counting the rotation
rot = rot * 180.f / M_PI; //conversion to degrees
rot += 90; // adding to work normally
spaceship.setRotation( rot );
...

else if( key == "A" )
{
    rot -= 90;
    float xN = static_cast < float >( speed * sin(( rot * M_PI ) / 180.0 ) );
    float yN = static_cast < float >( speed * cos(( rot * M_PI ) / 180.0 ) );
    vx += xN * 0.02f;
    vy -= yN * 0.02f;
}
P-142889
DejaVu
» 2016-01-05 10:59:14
jezeli obracasz teksture sfml to musisz uzyc setOrigin do okreslenia punktu wokol ktorego ma byc wykonany obrot. domyslnie jest to 0,0 a Ty zapewne chcesz obracac wokol srodka obrazka.
P-142901
snajperek130
Temat założony przez niniejszego użytkownika
» 2016-01-05 15:28:08
Rozumiem, tylko ja mam obracac sie wokolo myszki i niezaleznie, gdzie ustawie ten srodek na statku to statek porusza sie w coraz to wiekszej odleglosci od myszki. 
P-142906
pekfos
» 2016-01-05 17:27:17
Bo to nie jest ruch po okręgu. Ruchu po okręgu tak nie zrobisz. Musisz cały kod ruchu przerobić.
P-142910
snajperek130
Temat założony przez niniejszego użytkownika
» 2016-01-06 21:38:27
Ok, bede sie bawil, jak cos to jeszcze napisze.
P-143029
« 1 » 2 3
  Strona 1 z 3 Następna strona