本文整理汇总了C++中sf::FloatRect::GetWidth方法的典型用法代码示例。如果您正苦于以下问题:C++ FloatRect::GetWidth方法的具体用法?C++ FloatRect::GetWidth怎么用?C++ FloatRect::GetWidth使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sf::FloatRect
的用法示例。
在下文中一共展示了FloatRect::GetWidth方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnCollide
void Unit::OnCollide(Entity& entity, const sf::FloatRect& overlap)
{
if (IsDying() || entity.IsDying())
{
return;
}
switch (entity.GetCollideEffect())
{
case FX_REJECTION:
// repoussement horizontal ?
if (overlap.GetHeight() < overlap.GetWidth())
{
// vers le haut ou le bas
knocked_dir_ = entity.GetPosition().y > GetPosition().y ? UP : DOWN;
}
else // vertical
{
// vers la gauche ou la droite
knocked_dir_ = entity.GetPosition().x > GetPosition().x ? LEFT : RIGHT;
}
knocked_start_ = Game::GetInstance().GetElapsedTime();
knocked_speed_ = KNOCK_INITIAL_SPEED;
is_knocked_ = true;
break;
case FX_STOP:
{
Direction dir;
float dist;
if (overlap.GetHeight() < overlap.GetWidth())
{
dir = entity.GetPosition().y > GetPosition().y ? UP : DOWN;
dist = overlap.GetHeight();
}
else
{
dir = entity.GetPosition().x > GetPosition().x ? LEFT : RIGHT;
dist = overlap.GetWidth();
}
Move(dir, dist);
}
break;
case FX_NOTING:
break;
}
}
示例2:
sf::Vector2f CollisionResolver::resolve_inside_bounds(const sf::FloatRect& within, const sf::FloatRect& bounds)
{
sf::Vector2f resolved_position(within.Left,within.Top);
if(within.Left < bounds.Left)
{
resolved_position.x = bounds.Left;
}
if(within.Left + within.GetWidth() > bounds.Left + bounds.GetWidth())
{
resolved_position.x = bounds.Left + bounds.GetWidth() - within.GetWidth();
}
if(within.Top < bounds.Top)
{
resolved_position.y = bounds.Top;
}
if(within.Top + within.GetHeight() > bounds.Top + bounds.GetHeight())
{
resolved_position.y = bounds.Top + bounds.GetHeight() - within.GetHeight();
}
return resolved_position;
}