本文整理汇总了C++中Tile::Box方法的典型用法代码示例。如果您正苦于以下问题:C++ Tile::Box方法的具体用法?C++ Tile::Box怎么用?C++ Tile::Box使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tile
的用法示例。
在下文中一共展示了Tile::Box方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: touchesStairs
bool Player::touchesStairs(SDL_Rect box, Tile* tiles[], bool goDown)
{
if (!goDown)
{
for (int i = 0; i < totalTiles; ++i)
{
if (tiles[i]->Type() == 'R')
{
if (checkCollision(box, tiles[i]->Box()))
{
rightStair = true;
leftStair = false;
return true;
}
}
if (tiles[i]->Type() == 'L')
{
if (checkCollision(box, tiles[i]->Box()))
{
rightStair = false;
leftStair = true;
return true;
}
}
}
}
else if (goDown)
{
for (int i = 0; i < totalTiles; ++i)
{
if (tiles[i]->Type() == 'R')
{
Tile* tempTile = new Tile(tiles[i]->Box().x + 32, tiles[i]->Box().y - 16, 'R');
if (tiles[i]->Box().y >= (box.y + box.h))
{
if (checkCollision(box, tempTile->Box()))
{
rightStair = true;
leftStair = false;
return true;
}
}
}
if (tiles[i]->Type() == 'L')
{
Tile* tempTile = new Tile(tiles[i]->Box().x - 32, tiles[i]->Box().y - 16, 'R');
if (tiles[i]->Box().y >= (box.y + box.h))
{
if (checkCollision(box, tempTile->Box()))
{
leftStair = true;
rightStair = false;
return true;
}
}
}
}
}
return false;
}
示例2: moveToStairsDown
void Player::moveToStairsDown(SDL_Rect box, Tile* tiles[])
{
int playerRight = box.x + box.w;
int playerLeft = box.x;
for (int i = 0; i < totalTiles; ++i)
{
if (tiles[i]->Type() == 'R')
{
Tile* tempTile = new Tile(tiles[i]->Box().x + 32, tiles[i]->Box().y - 16, 'R');
if (playerRight > tempTile->Box().x && playerRight < (tempTile->Box().x + tempTile->Box().w))
{
//Not exactly sure why this works, I assume it needs to override a movement the other way
playerBox.x += 2;
}
if (playerLeft > tempTile->Box().x && playerLeft < (tempTile->Box().x + tempTile->Box().w))
{
playerBox.x -= 1;
}
if (playerLeft == tempTile->Box().x)
{
onStairs = true;
rightStair = true;
leftStair = false;
secondStep = 8;
stepUp = false;
takeStep(false, false);
crouching = false;
stepFrame = 1;
cameraStart = playerBox.x;
cameraStep = 0;
}
}
if (tiles[i]->Type() == 'L')
{
Tile* tempTile = new Tile(tiles[i]->Box().x - 32, tiles[i]->Box().y - 16, 'L');
if (playerRight > tempTile->Box().x && playerRight < (tempTile->Box().x + tempTile->Box().w))
{
playerBox.x += 1;
}
if (playerLeft > tempTile->Box().x && playerLeft < (tempTile->Box().x + tempTile->Box().w))
{
playerBox.x -= 2;
}
if (playerLeft == tempTile->Box().x)
{
onStairs = true;
leftStair = true;
rightStair = false;
secondStep = 8;
stepUp = false;
takeStep(false, true);
crouching = false;
stepFrame = 1;
cameraStart = playerBox.x;
cameraStep = 0;
}
}
}
}