本文整理汇总了C++中CModule::TakeDamage方法的典型用法代码示例。如果您正苦于以下问题:C++ CModule::TakeDamage方法的具体用法?C++ CModule::TakeDamage怎么用?C++ CModule::TakeDamage使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CModule
的用法示例。
在下文中一共展示了CModule::TakeDamage方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandleCollision
void CWell::HandleCollision(IEntity* other)
{
SGD::Vector dir;
if ( tier >= 3 && (duration - timer) < 0.1f)
{
dir = other->GetPosition() - position;
dir.Normalize();
other->AddGravity(dir * strength * 2);
EntityType type = (EntityType)other->GetType();
if (type == EntityType::Asteroid)
{
CAsteroid* ast = dynamic_cast<CAsteroid*>(other);
ast->TakeDamage(int(strength * 0.075f));
}
else if (type >= EntityType::Player && type <= EntityType::Coordinator)
{
CShip* ship = dynamic_cast<CShip*>(other);
ship->TakeDamage(int(strength * 0.075f));
}
else if (type >= EntityType::BaseModule && type <= EntityType::WarpModule)
{
CModule* mod = dynamic_cast<CModule*>(other);
mod->TakeDamage(int(strength * 0.075f));
}
return;
}
dir = position - other->GetPosition();
if (dir.ComputeLength() < 1)
dir.y += 1;
dir.Normalize();
//float mass = other->GetSize().width * other->GetSize().height;
other->AddGravity(dir * strength);
}