Exemplo n.º 1
0
void MainScene::setViewpointCenter(const Point &position)
{
	Size winSize = Director::getInstance()->getWinSize();
	int x = MAX(position.x, winSize.width / 2);
	int y = MAX(position.y, winSize.height / 2);
	x = MIN(x, (_tileMap->getMapSize().width * _tileMap->getTileSize().width) - winSize.width / 2);
	y = MIN(y, (_tileMap->getMapSize().height * _tileMap->getTileSize().height) - winSize.height / 2);
	Point actualPosition(x, y);
	Point centerOfView(winSize.width / 2, winSize.height / 2);
	Point viewPoint = centerOfView - actualPosition;
	_tileMap->setPosition(viewPoint);
}
Exemplo n.º 2
0
void Player::updatePosition(){
    
    // 先更新地图位置,再更新角色的位置
    float x = MAX(_mx,WINDOW_WIDTH/2);
    float y = MAX(_my,WINDOW_HEIGHT/2);
    
    x = MIN(x,Game->sMapWidth-WINDOW_WIDTH/2);
    y = MIN(y,Game->sMapHeight-WINDOW_HEIGHT/2);
    
    Point actualPoint(x,y);
    Point centerOfView(WINDOW_WIDTH/2,WINDOW_HEIGHT/2);
    Point viewpoint = centerOfView - actualPoint;
    
    // 设置 tmx 地图位置
    Game->getGameMap()->getTMXMap()->setPosition(viewpoint);
    
    // 设置 player 位置
    setPosition(viewpoint + Point(_mx,_my));
}