本文整理汇总了C++中PhysicalProperties::getY方法的典型用法代码示例。如果您正苦于以下问题:C++ PhysicalProperties::getY方法的具体用法?C++ PhysicalProperties::getY怎么用?C++ PhysicalProperties::getY使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PhysicalProperties
的用法示例。
在下文中一共展示了PhysicalProperties::getY方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addSpriteToRenderList
/*
addSpriteToRenderList - This method checks to see if the sprite
parameter is inside the viewport. If it is, a RenderItem is generated
for that sprite and it is added to the render list.
*/
void SpriteManager::addSpriteToRenderList(AnimatedSprite *sprite,
RenderList *renderList,
Viewport *viewport)
{
// GET THE SPRITE TYPE INFO FOR THIS SPRITE
AnimatedSpriteType *spriteType = sprite->getSpriteType();
PhysicalProperties *pp = sprite->getPhysicalProperties();
float rotation = sprite->getRotationInRadians();
// IS THE SPRITE VIEWABLE?
if (viewport->areWorldCoordinatesInViewport(
pp->getX(),
pp->getY(),
spriteType->getTextureWidth(),
spriteType->getTextureHeight()))
{
// SINCE IT'S VIEWABLE, ADD IT TO THE RENDER LIST
RenderItem itemToAdd;
itemToAdd.id = sprite->getFrameIndex();
renderList->addRenderItem( sprite->getCurrentImageID(),
pp->round(pp->getX()-viewport->getViewportX()),
pp->round(pp->getY()-viewport->getViewportY()),
pp->round(pp->getZ()),
sprite->getAlpha(),
spriteType->getTextureWidth(),
spriteType->getTextureHeight(),
rotation);
}
}
示例2: handleMousePressEvent
void WalkaboutMouseEventHandler::handleMousePressEvent(Game *game, int mouseX, int mouseY)
{
if (game->getGSM()->isGameInProgress())
{
Viewport *viewport = game->getGUI()->getViewport();
// DETERMINE WHERE ON THE MAP WE HAVE CLICKED
int worldCoordinateX = mouseX + viewport->getViewportX();
int worldCoordinateY = mouseY + viewport->getViewportY();
SpriteManager *spriteManager = game->getGSM()->getSpriteManager();
Player* player = static_cast<Player*>(spriteManager->getPlayer());
PhysicalProperties* playerPP = spriteManager->getPlayer()->getPhysicalProperties();
if(!player->getIsDead() && !player->getIsDying() && player->getAmmo() != 0)
{
float dx = worldCoordinateX - playerPP->getX();
float dy = worldCoordinateY - playerPP->getY();
float distanceToMouse = sqrtf(dx*dx + dy*dy);
dx /= distanceToMouse;
dy /= distanceToMouse;
float bulletOffset = 60;
float bulletSpeed = 50;
//Fire projectile
spriteManager->createProjectile(playerPP->getX() + bulletOffset*dx, playerPP->getY() + bulletOffset*dy,
bulletSpeed*dx,bulletSpeed*dy);
player->decrementAmmo();
}
}
}
示例3: addSpriteToRenderList
void SpriteManager::addSpriteToRenderList(AnimatedSprite *sprite,
RenderList *renderList,
Viewport *viewport)
{
// GET THE SPRITE TYPE INFO FOR THIS SPRITE
AnimatedSpriteType *spriteType = sprite->getSpriteType();
PhysicalProperties *pp = sprite->getPhysicalProperties();
if (i >= 3) {
b2Body* bods= sprite->getBody();
b2Vec2 position = bods->GetPosition();
pp->setX(position.x);
pp->setY(position.y);
}
i+=1;
// IS THE SPRITE VIEWABLE?
if (viewport->areWorldCoordinatesInViewport(
pp->getX(),
pp->getY(),
spriteType->getTextureWidth(),
spriteType->getTextureHeight()) )
{
// SINCE IT'S VIEWABLE, ADD IT TO THE RENDER LIST
RenderItem itemToAdd;
itemToAdd.id = sprite->getFrameIndex();
if (spriteType->getTextureWidth()==61) {
renderList->addRenderItem( sprite->getCurrentImageID(),
pp->round(X-viewport->getViewportX()),
pp->round(Y-25-viewport->getViewportY()),
pp->round(pp->getZ()),
sprite->getAlpha(),
spriteType->getTextureWidth(),
spriteType->getTextureHeight());
}
else {
renderList->addRenderItem( sprite->getCurrentImageID(),
pp->round(pp->getX()-viewport->getViewportX()),
pp->round(pp->getY()-viewport->getViewportY()),
pp->round(pp->getZ()),
sprite->getAlpha(),
spriteType->getTextureWidth(),
spriteType->getTextureHeight());
}
}
}
示例4: updateViewport
void GameStateManager::updateViewport(Game *game, float time)
{
AnimatedSprite *p = spriteManager->getPlayer();
PhysicalProperties *pp = p->getPhysicalProperties();
float pVelX = pp->getVelocityX()*time;
float pVelY = pp->getVelocityY()*time;
//VIEWPORT SCOPING
Viewport *vp = game->getGUI()->getViewport();
if(pVelX < 0
&& (pp->round(pp->getX() - vp->getViewportX())) < vp->getViewportWidth()/3)
{
vp->setScrollSpeedX(pVelX);
/*if(vp->getViewportX() == 0)
vp->setScrollSpeedX(0);*/
}
else if(pVelX > 0
&& (pp->round(pp->getX() - vp->getViewportX())) > (vp->getViewportWidth()/3*2))
{
vp->setScrollSpeedX(pVelX);
/*if(vp->getViewportX()+vp->getViewportWidth() == world.getWorldWidth())
vp->setScrollSpeedX(0);*/
}
else
{
vp->setScrollSpeedX(0);
}
if(pVelY < 0
&& (pp->round(pp->getY() - vp->getViewportY())) < vp->getViewportHeight()/3)
{
vp->setScrollSpeedY(pVelY);
/*if(vp->getViewportY() == 0)
vp->setScrollSpeedY(0);*/
}
else if(pVelY > 0
&& (pp->round(pp->getY() - vp->getViewportY())) > (vp->getViewportHeight()/3*2))
{
vp->setScrollSpeedY(pVelY);
/*if(vp->getViewportY()+vp->getViewportHeight() == world.getWorldHeight())
vp->setScrollSpeedY(0);*/
}
else
{
vp->setScrollSpeedY(0);
}
vp->moveViewport( vp->getScrollSpeedX(),
vp->getScrollSpeedY(),
world.getWorldWidth(),
world.getWorldHeight());
}
示例5: willObjectsCollide
bool Physics::willObjectsCollide(CollidableObject* coA, CollidableObject* coB)
{
PhysicalProperties* pp = coA->getPhysicalProperties();
BoundingVolume* bv = coA->getBoundingVolume();
float widthA = bv->getWidth();
float heightA = bv->getHeight();
float xA = pp->getX() + bv->getX();
float yA = pp->getY() + bv->getY();
float velXA = pp->getVelocityX();
float velYA = pp->getVelocityY();
float minXA = xA-(widthA/2);
float maxXA = xA+(widthA/2);
float minYA = yA-(heightA/2);
float maxYA = yA+(heightA/2);
if(velXA >= 0)
maxXA += velXA;
if(velXA < 0)
minXA += velXA;
if(velYA >= 0)
maxYA += velYA;
if(velYA < 0)
minYA += velYA;
pp = coB->getPhysicalProperties();
bv = coB->getBoundingVolume();
float widthB = bv->getWidth();
float heightB = bv->getHeight();
float xB = pp->getX() + bv->getX();
float yB = pp->getY() + bv->getY();
float velXB = pp->getVelocityX();
float velYB = pp->getVelocityY();
float minXB = xB-(widthB/2);
float maxXB = xB+(widthB/2);
float minYB = yB-(heightB/2);
float maxYB = yB+(heightB/2);
if(velXB >= 0)
maxXB += velXB;
if(velXB < 0)
minXB += velXB;
if(velYB >= 0)
maxYB += velYB;
if(velYB < 0)
minYB += velYB;
if( !(maxXB < minXA || minXB > maxXA || maxYB < minYA || minYB > maxYA))
return true;
return false;
}
示例6: addCollidableObject
//////////////////////////KEEP/////////////////////////////////////////////
void Physics::addCollidableObject(CollidableObject *collidableObjectToAdd)
{
PhysicalProperties *pp = collidableObjectToAdd->getPhysicalProperties();
float height = pixelsToMeters(collidableObjectToAdd->getBoundingVolume()->getHeight()) / 2;
float width = pixelsToMeters(collidableObjectToAdd->getBoundingVolume()->getWidth()) / 2;
float x = pixelsToMeters(pp->getX());
float y = pixelsToMeters(-pp->getY());
// Define the dynamic body. We set its position and call the body factory.
b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.position.Set(x, y);
b2Body* body = box2DWorld->CreateBody(&bodyDef);
testSubjectBody = body;
// Define another box shape for our dynamic body.
b2PolygonShape dynamicBox;
dynamicBox.SetAsBox(width, height);
// Define the dynamic body fixture.
b2FixtureDef fixtureDef;
fixtureDef.shape = &dynamicBox;
// Set the box density to be non-zero, so it will be dynamic.
fixtureDef.density = 1.0f;
// Override the default friction.
fixtureDef.friction = 0.3f;
// Add the shape to the body.
body->CreateFixture(&fixtureDef);
}
示例7: handleMousePressEvent
void ScienceMouseEventHandler::handleMousePressEvent(Game *game, int mouseX, int mouseY)
{
if (game->getGSM()->isGameInProgress())
{
Viewport *viewport = game->getGUI()->getViewport();
// DETERMINE WHERE ON THE MAP WE HAVE CLICKED
int worldCoordinateX = mouseX + viewport->getViewportX();
int worldCoordinateY = mouseY + viewport->getViewportY();
// NOW LET'S SEE IF THERE IS A SPRITE THERE
GameStateManager *gsm = game->getGSM();
SpriteManager *spriteManager = gsm->getSpriteManager();
// IF THERE IS NO SELECTED SPRITE LOOK FOR ONE
if (!(spriteManager->getIsSpriteSelected()))
{
// IF THIS DOES NOT RETURN NULL THEN YOU FOUND A SPRITE AT THAT LOCATION
if((spriteManager->getSpriteAt(worldCoordinateX, worldCoordinateY) != NULL))
{
AnimatedSprite *selected = spriteManager->getSpriteAt(worldCoordinateX, worldCoordinateY);
spriteManager->setIsSpriteSelected(true);
}
}
else if (spriteManager->getSelectedSprite() != NULL)
{
// MOVE A SPRITE IN A DESIRED DIRECTION
AnimatedSprite *selected = spriteManager->getSelectedSprite();
PhysicalProperties *pp = selected->getPhysicalProperties();
float spriteX = pp->getX();
float spriteY = pp->getY();
//IF A SPRITE IS WHERE YOU WANT IT THEN STOP IT
if (((spriteX > worldCoordinateX - 64) && (spriteX < worldCoordinateX + 64)) && (spriteY > worldCoordinateY - 64) && (spriteY < worldCoordinateY + 64))
{
pp->setVelocity(0, 0);
}
else
{
float deltaX = worldCoordinateX - spriteX;
float deltaY = worldCoordinateY - spriteY;
float hyp = sqrtf((deltaX * deltaX) + (deltaY * deltaY));
pp->setVelocity((deltaX / hyp) * 3, (deltaY / hyp) * 3);
}
spriteManager->setIsSpriteSelected(false);
// GridPathfinder *pathfinder = spriteManager->getPathfinder();
// pathfinder->mapPath(selected, (float)worldCoordinateX, (float)worldCoordinateY);
// gsm->setSpriteSelected(false, selected);
}
else
{
spriteManager->setIsSpriteSelected(false);
}
}
}
示例8: update
//.........这里部分代码省略.........
//HERE, COLLIDE SPRITES WITH OTHER SPRITES
collideTestWithSprites(game, player, &collisions);
botIterator = sm->getBotsIterator();
while (botIterator != sm->getEndOfBotsIterator())
{
Bot *bot = (*botIterator);
if(bot->isCurrentlyCollidable() == true);
collideTestWithSprites(game, bot, &collisions);
botIterator++;
}
//SORT COLLISIONS
collisions.sort(compare_collisionTime);
//RESOLVING ALL THE COLLISIONS
while(collisions.empty() == false)
{
Collision* currentCollision = collisions.front();
collisions.pop_front();
float colTime = currentCollision->getTOC();
CollidableObject* co1 = currentCollision->getCO1();
CollidableObject* co2 = currentCollision->getCO2();
if(colTime >= 0 && colTime <= 1)
{
pp = co1->getPhysicalProperties();
//pp->setVelocity(pp->getVelocityX()*9.99f,pp->getVelocityY()*9.99f);
pp = co2->getPhysicalProperties();
//pp->setVelocity(pp->getVelocityX()*9.99f,pp->getVelocityY()*9.99f);
pp = player->getPhysicalProperties();
pp->setPosition(pp->getX() + (pp->getVelocityX()*(colTime-timer)),pp->getY() + (pp->getVelocityY()*(colTime-timer)));
botIterator = sm->getBotsIterator();
while (botIterator != sm->getEndOfBotsIterator())
{
Bot *bot = (*botIterator);
pp = bot->getPhysicalProperties();
pp->setPosition(pp->getX() + (pp->getVelocityX()*(colTime-timer)), pp->getY() + (pp->getVelocityY()*(colTime-timer)));
botIterator++;
}
gsm->updateViewport(game, colTime-timer);
resolveCollision(game, currentCollision);
gR->gameSpecificResolve(game, currentCollision);
boolean deleteLast = false;
list<Collision*>::iterator cIterator = collisions.begin();
list<Collision*>::iterator lastIterator;
while(cIterator != collisions.end())
{
if(deleteLast == true)
{
collisions.erase(lastIterator);
}
deleteLast = false;
Collision* check = (*cIterator);
if(check->contains(co1) || check->contains(co2))
{
CollidableObject* checkStatic = check->getCO2();
if(checkStatic->isStaticObject())
{
coStackCounter ++;
coStack[coStackCounter] = checkStatic;
示例9: resolveCollision
void Physics::resolveCollision(Game* game, Collision* currentCollision)
{
CollidableObject* co1 = currentCollision->getCO1();
CollidableObject* co2 = currentCollision->getCO2();
PhysicalProperties* pp;
BoundingVolume* bv;
AnimatedSprite* player = game->getGSM()->getSpriteManager()->getPlayer();
if(co2->isStaticObject() == true)
{
pp = co2->getPhysicalProperties();
bv = co2->getBoundingVolume();
float tX = pp->getX();
float tY = pp->getY();
float tXR = tX + bv->getWidth();
float tYB = tY + bv->getHeight();
pp = co1->getPhysicalProperties();
bv = co1->getBoundingVolume();
float x = pp->getX() + bv->getX() - (bv->getWidth()/2);
float y = pp->getY() + bv->getY() - (bv->getHeight()/2);
float xR = x+bv->getWidth();
float yB = y+bv->getHeight();
//pp->setVelocity(0, 0);
/*if(x < tX)
pp->setX(pp->getX() - 0.1);
if(x > tX)
pp->setX(pp->getX() + 0.1);*/
if(x >= tXR)
{
pp->setX(pp->getX() + 0.1);
pp->setVelocity(0, pp->getVelocityY());
}
if(xR <= tX)
{
pp->setX(pp->getX() - 0.1);
pp->setVelocity(0, pp->getVelocityY());
}
if(y >= tYB)
{
pp->setY(pp->getY() + 0.1);
pp->setVelocity(pp->getVelocityX(), 0);
}
if(yB <= tY)
{
pp->setY(pp->getY() - 0.1);
if(co1 == player)
{
pp->setJumped(false);
pp->setDoubleJumped(false);
pp->setStunned(false);
}
pp->setVelocity(pp->getVelocityX(), 0);
}
//if(currentCollision->getTOC() == currentCollision->getSYC())
//{
// /*if(pp->getVelocityY() < 0)
// {
// pp->setY(pp->getY() + 0.1);
// }
// else
// {
// pp->setY(pp->getY() - 0.1);
// if(co1 == player)
// {
// pp->setJumped(false);s
// pp->setDoubleJumped(false);
// if(player->getCurrentState().compare(L"JUMP_STATE") == 0
// || player->getCurrentState().compare(L"JUMPL_STATE") == 0)
// {
// player->setCurrentState(L"IDLE_STATE");
// }
// }
// }*/
// if(y < tY)
// {
// pp->setY(pp->getY() - 0.1);
// if(co1 == player)
// {
// pp->setJumped(false);
// pp->setDoubleJumped(false);
// /*if(player->getCurrentState().compare(L"JUMP_STATE") == 0
// || player->getCurrentState().compare(L"JUMPL_STATE") == 0)
// {
// player->setCurrentState(L"IDLE_STATE");
// }*/
// }
// }
// if(y > tY)
// {
// pp->setY(pp->getY() + 0.1);
//
// }
// pp->setVelocity(pp->getVelocityX(), 0);
//
//
//}
//else if(currentCollision->getTOC() == currentCollision->getSXC())
//.........这里部分代码省略.........
示例10: collideTestWithTiles
void Physics::collideTestWithTiles(CollidableObject *c,TiledLayer *tL, list<Collision*> *collisions)
{
BoundingVolume *bv = c->getBoundingVolume();
float toRight= bv->getWidth()/2;
float toBottom = bv->getHeight()/2;
PhysicalProperties *pp = c->getPhysicalProperties();
float x = pp->getX()+bv->getX();
float y = pp->getY()+bv->getY();
float xVel = pp->getVelocityX();
float yVel = pp->getVelocityY();
float minX = x - toRight;
float maxX = x + toRight;
float minY = y - toBottom;
float maxY = y + toBottom;
if(xVel > 0)
maxX += xVel;
else
minX += xVel;
if(yVel > 0)
maxY += yVel;
else
minY += yVel;
int tW = tL->getTileWidth();
int tH = tL->getTileHeight();
int firstCol = minX/tW;
int lastCol = maxX/tW;
int firstRow = minY/tH;
int lastRow = maxY/tH;
if(firstCol < 0)
firstCol = 0;
if(firstRow < 0)
firstRow = 0;
if(lastCol >= tL->getColumns())
lastCol = tL->getColumns() - 1;
if(lastRow >= tL->getRows())
lastRow = tL->getRows() - 1;
for(int i = firstRow; i <= lastRow; i++)
{
for(int j = firstCol; j <= lastCol; j++)
{
Tile* current = tL->getTile(i,j);
if(current->collidable == true)
{
if( !( (i+1)*tH < minY || i*tH > maxY || (j+1)*tW < minX || j*tW > maxX) )
{
CollidableObject* tileCO = coStack[coStackCounter];
coStackCounter --;
BoundingVolume *bv = tileCO->getBoundingVolume();
bv->setWidth(tW);
bv->setHeight(tH);
bv->setX(tW/2);
bv->setY(tW/2);
pp = tileCO->getPhysicalProperties();
pp->setPosition(j*tW,i*tH);
/*
Collision* currentCollision = collisionStack.top();
collisionStack.pop();*/
Collision* currentCollision = collisionStack[collisionStackCounter];
collisionStackCounter --;
currentCollision->setCO1(c);
currentCollision->setCO2(tileCO);
currentCollision->calculateTimes();
collisions->push_back(currentCollision);
}
}
}
}
}