case LEVEL_START:
defer([this]{
uniform_real_distribution<float> sdist(-1, 1);
+ uniform_real_distribution<float> udist(0, 1);
for(unsigned i=0; i<level+2; ++i)
{
asteroids.emplace_back(stage.get_root(), asteroid_setup);
asteroids.back()->get_transform()->set_position({ sdist(rng)*32, sdist(rng)*18, 0.0f });
- asteroids.back()->get_body()->set_velocity(asteroids.back()->get_transform()->get_position().slice<2>(0)*-0.1f);
+ Geometry::Angle<float> angle = Geometry::Angle<float>::from_turns(udist(rng));
+ float speed = udist(rng)*7;
+ asteroids.back()->get_body()->set_velocity({ cos(angle)*speed, sin(angle)*speed });
}
state = PLAYING;
});