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

Ruch pociskow - czy dobre wzory?

Ostatnio zmodyfikowano 2012-09-20 17:48
Autor Wiadomość
anonim
Temat założony przez niniejszego użytkownika
Ruch pociskow - czy dobre wzory?
» 2012-09-15 18:47:50
Cześć
Mam problem z ruchem pocisków, mam strukturę Pocisk(sf::Sprite pocSprite, float speed, float hitpoints)
pociskami poruszam w pętli w ten sposób
C/C++
for( unsigned int i = 0; i < vPociski.size(); i++ )
{
    vPociski[ i ].pocSprite.Move( cos(( vPociski[ i ].pocSprite.GetRotation() * 2 * M_PI / 360 ) ) * vPociski[ i ].speed,
    sin(( vPociski[ i ].pocSprite.GetRotation() * 2 * M_PI / 360 ) ) * vPociski[ i ].speed );
}
Wydaje mi się, że wzory są dobre, jednak pociski latają jak chcą(t.j. nie tak jak ja chcę ;))
P-64985
Mrovqa
» 2012-09-15 18:54:21
* 2 * M_PI / 360

Wiesz, że SFML operuje na stopniach, a nie radianach, nie?
P-64986
pekfos
» 2012-09-15 18:55:09
C/C++
x += sin( alfa );
y += cos( alfa );
To sa dobre wzory. Alfa w radianach.
P-64987
m4tx
» 2012-09-15 18:56:05
Wiesz, że SFML operuje na stopniach, a nie radianach, nie?
Wiesz, że funkcje trygonometryczne operują na radianach, a nie na stopniach, nie?
P-64988
Mrovqa
» 2012-09-15 19:06:45
Wiesz, że funkcje trygonometryczne operują na radianach, a nie na stopniach, nie?
fuck... kiedyś to pamiętałem; teraz mi się pomyliło (w niedawnym projekcie nie dokonałem konwersji, ale efekt osiągnąłem xd). Te konwersje potrafią dobić...
P-64989
anonim
Temat założony przez niniejszego użytkownika
» 2012-09-15 19:15:27
No kurcze próbuje tak jak pisał pekfos i nie idzie...
Może chodzi o to jak tworzę pociski?:
C/C++
if( input.IsMouseButtonDown( sf::Mouse::Left ) )
{
    Pocisk pocpoc;
    sf::Vector2f sprite00 = ktos.MySprite.TransformToGlobal( sf::Vector2f( 0.0, 0.0 ) );
    sf::Vector2f spritePos = app.ConvertCoords( sprite00.x, sprite00.y );
    //sf::Vector2f punkt00 = naszSprajt.TransformToLocal( sf::Vector2f(( float ) sterowanie.GetMouseX(),( float ) sterowanie.GetMouseY() ) );
    pocpoc.pocSprite = sf::Sprite( pocImage, sf::Vector2f( spritePos.x, spritePos.y ), sf::Vector2f( 0.5, 0.5 ), 0.f, sf::Color( 255, 255, 255, 255 ) );
    pocpoc.pocSprite.Rotate( ktos.MySprite.GetRotation() - 45.0 );
    pocpoc.speed = 10.0;
    pocpoc.hitpoints = 1.0;
    vPociski.push_back( pocpoc );
}
//poniżej jak pociski latają, żebyście nie musieli patrzeć na górę
C/C++
for( unsigned int i = 0; i < vPociski.size(); i++ )
{
    vPociski[ i ].pocSprite.Move( cos( vPociski[ i ].pocSprite.GetRotation() * 2 * M_PI / 360 ) * vPociski[ i ].speed,
    sin( vPociski[ i ].pocSprite.GetRotation() * 2 * M_PI / 360 ) * vPociski[ i ].speed );
}
P-64990
anonim
Temat założony przez niniejszego użytkownika
» 2012-09-15 20:07:33
I Gitara!!!!!!!!!!!!!!!!!!!!!!!!!! panie Paździoch!!!!!!!!!!!!!!
C/C++
for( unsigned int i = 0; i < vPociski.size(); i++ )
{
    if( vPociski[ i ].pocSprite.GetPosition().x > app.GetWidth() or vPociski[ i ].pocSprite.GetPosition().x < 0 or
    vPociski[ i ].pocSprite.GetPosition().y > app.GetHeight() or vPociski[ i ].pocSprite.GetPosition().y < 0 )
    {
        vPociski.erase( vPociski.begin() + i );
        continue;
    }
    vPociski[ i ].pocSprite.Move( - cos( vPociski[ i ].pocSprite.GetRotation() * 2 * M_PI / 360 ) * vPociski[ i ].speed,
    sin( vPociski[ i ].pocSprite.GetRotation() * 2 * M_PI / 360 ) * vPociski[ i ].speed );
}

kod umieszczony dla potomnych ;)
P-64997
hincu
» 2012-09-20 17:48:47
skoro problem rozwiazales to zamknij temat i nastepnym razem edytuj bo robisz niepotrzebny cholerny spam...
P-65300
« 1 »
  Strona 1 z 1