Powerup::Powerup(PowerupTipo _tipo, Mundo *mundo) : GameObject(mundo) { CL_GraphicContext gc = mundo->get_gc(); tipo = _tipo; switch(_tipo) { case MEDIKIT: sprite = new CL_Sprite(gc,"Medikit",mundo->recursos); collisionPowerup = new CL_CollisionOutline("data/Outlines/powerup.out"); setAngulo(0); collisionPowerup->set_alignment(origin_center); break; case ESCUDO: sprite =new CL_Sprite(gc,"Escudo",mundo->recursos); collisionPowerup = new CL_CollisionOutline("data/Outlines/powerup.out"); setAngulo(0); collisionPowerup->set_alignment(origin_center); break; case RAPIDEZ_TANQUE: sprite =new CL_Sprite(gc,"RapidezTanque",mundo->recursos); collisionPowerup = new CL_CollisionOutline("data/Outlines/powerup.out"); setAngulo(0); collisionPowerup->set_alignment(origin_center); break; case DISPARO_360: sprite =new CL_Sprite(gc,"RapidezMisil",mundo->recursos); collisionPowerup = new CL_CollisionOutline("data/Outlines/powerup.out"); setAngulo(0); collisionPowerup->set_alignment(origin_center); break; } explotando = false; }
int main(int argc, char **argv) { pivo_type pivo; pivo.nrSetores = 4; pivo.anguloOperacao = 100; trataNrSetores(&pivo); mostraPivo(&pivo); setAngulo(&pivo, 1, 10); testaPivo(corrigeAngulos(&pivo), &pivo); setAngulo(&pivo, 2, 700); testaPivo(corrigeAngulos(&pivo), &pivo); return 0; }
void Misil::mover(float dt) { if(perseguidor) { int tiempdodesdedisparo= CL_System::get_time() - tiempodisparo; if(tiempdodesdedisparo >= 10) { CL_Vec2f vector = Posicion - TargetTanque->getPos(); float distancia = vector.length(); mundo->AgregarCadenaChat(cl_format("%1",distancia)); CL_Vec2f up(0.0f, 1.0f); float angulodest = up.angle(vector).to_degrees(); /*if(TargetTanque->getPos().x < Posicion.x) angulodest = 360.0f - angulo;*/ /* else angulodest = 360.0f angulo;*/ angulodelta = angulodest - angulo; if(distancia < 150) { if(angulodelta > 0) angulodelta +=5; } if(angulodelta > 180.0f) { angulodelta -= 360.0f; angulo += 360.0f; } if(angulodelta < -180.0f) { angulodelta += 360.0f; angulo -= 360.0f; } angulo +=angulodelta*dt/velocidad; setAngulo(angulo); } } Posicion.x += dt* float(sin(angulo* CL_PI / 180.0f)); Posicion.y += dt* float(-cos(angulo * CL_PI / 180.0f)); collisionMisil->set_translation(Posicion.x, Posicion.y); }