本文整理汇总了C++中Entity::GetClassName方法的典型用法代码示例。如果您正苦于以下问题:C++ Entity::GetClassName方法的具体用法?C++ Entity::GetClassName怎么用?C++ Entity::GetClassName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Entity
的用法示例。
在下文中一共展示了Entity::GetClassName方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Touch
void EntTriggerPush::Touch(Entity &other)
{
// Player *player;
float height, time, dist;
std::stringstream sstr;
if(!target)
return;
Vector3f v = target->GetOrigin() - other.GetOrigin();
height = v[1];
time = (float)sqrt(height / (G_GRAVITY * 0.5));
v[1] = 0;
dist = v.length();
v.normalize();
v *= dist / time;
v[1] = time * G_GRAVITY;
sstr << "push" << " " << v[0] << " " << v[1] << " " << v[2];
if(other.GetClassName() == "player")
{
// logstream() << "TOUCH: " << other.GetOrigin()[0] << " " << other.GetOrigin()[1] << " " << other.GetOrigin()[2] << "\n";
EE.ThrowEvent_i(&other, sstr.str(), 0);
//play sound
EE.C_ExecCommand("s_play basehaste/sound/world/jumppad.wav");
}
}
示例2: OnCollision
void PlayerEntity::OnCollision(const CollisionEvent &event)
{
if (event.GetType() == CollisionEventType::OnEnter)
{
Entity *other = event.GetOtherEntity();
if (other != nullptr && other->GetClassName() == "Trigger")
{
gGameScene->UseKey(this->GiveKey());
}
}
}
示例3: OnCollision
void StaminaPotionEntity::OnCollision(const CollisionEvent &event)
{
if (event.GetType() == CollisionEventType::OnEnter)
{
Log("On collided with health potion");
Entity *other = event.GetOtherEntity();
if ((other != nullptr && other->GetClassName() == "OptimistPlayer") ||
(other != nullptr && other->GetClassName() == "RealistPlayer") ||
(other != nullptr && other->GetClassName() == "PessimistPlayer"))
{
PlayerEntity *player = static_cast<PlayerEntity *>(other);
// Disable item
this->pSprite->SetVisible(false);
this->clSensor.Disable();
//Collect Item
player->OnCollect(ItemTypes::StaminaPotion, this->iAmount);
}
}
}
示例4: OnCollision
void TriggerEntity::OnCollision(const CollisionEvent &event)
{
Entity *other = event.GetOtherEntity();
if(event.GetType() == CollisionEventType::OnEnter)
{
if(other != NULL && other->GetClassName().compare("Ball") == 0)
{
if(this->GetTarget() == "PlayerLeft")
gGui->SetRightPlayerPoints(gGui->GetRightPlayerPoints() + 1);
else
gGui->SetLeftPlayerPoints(gGui->GetLeftPlayerPoints() + 1);
}
}
if(event.GetType() == CollisionEventType::OnLeave)
{
if(other != NULL && other->GetClassName().compare("Ball") == 0)
{
BallEntity *ball = static_cast<BallEntity*>(other);
ball->Restart();
}
}
}
示例5: OnCollision
void EnemyEntity::OnCollision(const CollisionEvent &event)
{
if (event.GetType() == CollisionEventType::OnEnter && !bIsDead)
{
Log("ENEMY colidiu");
Entity *other = event.GetOtherEntity();
if ((other != nullptr && other->GetClassName() == "OptimistPlayer") ||
(other != nullptr && other->GetClassName() == "RealistPlayer") ||
(other != nullptr && other->GetClassName() == "PessimistPlayer"))
{
PlayerEntity *player = static_cast<PlayerEntity *>(other);
// Stop player movement
player->StopPlayerMovement();
player->SetIsInputEnabled(false);
// Define a vector to push the player
b2Vec2 vecToPush = b2Vec2(0, 0);
// Find where the player comes
if (gPhysics->RayCast(pBody, b2Vec2(0, -0.32f)) ||
gPhysics->RayCast(pBody, b2Vec2(0.16f, -0.32f)) ||
gPhysics->RayCast(pBody, b2Vec2(-0.16f, -0.32f)))
{
Log("Push player up");
vecToPush = b2Vec2(0.0f, -1.0f);
}
else if (gPhysics->RayCast(pBody, b2Vec2(0, 0.32f)) ||
gPhysics->RayCast(pBody, b2Vec2(0.16f, 0.32f)) ||
gPhysics->RayCast(pBody, b2Vec2(-0.16f, 0.32f)))
{
Log("Push player down");
vecToPush = b2Vec2(0.0f, 1.0f);
}
else if (gPhysics->RayCast(pBody, b2Vec2(-0.32f, 0.0f)) ||
gPhysics->RayCast(pBody, b2Vec2(-0.32f, 0.16f)) ||
gPhysics->RayCast(pBody, b2Vec2(-0.32f, -0.16f)))
{
Log("Push player left");
vecToPush = b2Vec2(-1.0f, 0.0f);
}
else if (gPhysics->RayCast(pBody, b2Vec2(0.32f, 0.0f)) ||
gPhysics->RayCast(pBody, b2Vec2(0.32f, 0.16f)) ||
gPhysics->RayCast(pBody, b2Vec2(0.32f, -0.16f)))
{
Log("Push player right");
vecToPush = b2Vec2(1.0f, 0.0f);
}
s32 damageToPlayer = (player->GetDefensePower() - sEnemy.iAttackPower) + (rand() % 3 + 1);
if (damageToPlayer < 0)
damageToPlayer = 0;
//Do damage to the player
player->OnDamage(vecToPush, u32(damageToPlayer));
s32 damageEnemyBase = player->GetAttackPower() - sEnemy.iDefensePower + (rand() % 3 + 1);
if (damageEnemyBase < 0)
damageEnemyBase = 0;
//Receive damage
this->OnDamage(u32(damageEnemyBase));
}
}
}