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 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ę ;)) |
|
Mrovqa |
» 2012-09-15 18:54:21 * 2 * M_PI / 360 Wiesz, że SFML operuje na stopniach, a nie radianach, nie? |
|
pekfos |
» 2012-09-15 18:55:09 x += sin( alfa ); y += cos( alfa ); To sa dobre wzory. Alfa w radianach. |
|
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? |
|
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ć... |
|
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?: 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 ); 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ę 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 ); }
|
|
anonim Temat założony przez niniejszego użytkownika |
» 2012-09-15 20:07:33 I Gitara!!!!!!!!!!!!!!!!!!!!!!!!!! panie Paździoch!!!!!!!!!!!!!! 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 ;) |
|
hincu |
» 2012-09-20 17:48:47 skoro problem rozwiazales to zamknij temat i nastepnym razem edytuj bo robisz niepotrzebny cholerny spam... |
|
« 1 » |