コード例 #1
0
ファイル: Vampire.cpp プロジェクト: imerr/LD32
void Vampire::OnUpdate(sf::Time interval) {
	Damagable::OnUpdate(interval);
	Level* level = static_cast<Level*>(m_scene);
	Slayer* slayer = level->GetSlayer();
	m_targetTime-=interval.asSeconds();
	engine::util::RandomFloat r(0, 1);
	if (m_targetTime <= 0) {
		m_targetTime = static_cast<float>(0.4f * (r()+1));
		m_targetPoint = (slayer->GetGlobalPosition());
	}
	auto delta = m_targetPoint-GetGlobalPosition();
	if (abs(delta.y) < 300 && abs(delta.x) < 500 && abs(delta.x) > 10) {
		const float v = 2 * interval.asSeconds() ;
		m_body->ApplyLinearImpulse(b2Vec2(v * (delta.x > 0?1:-1), r() < 0.005?-5:0), m_body->GetWorldCenter(), true);
	}
}