- void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
- {
- CCPoint touchLocation = this->convertTouchToNodeSpace(pTouch);
- CCPoint playerPos = _player->getPosition();
- CCPoint diff = ccpSub(touchLocation, playerPos);
- if (abs(diff.x) > abs(diff.y))
- {
- if (diff.x > 0)
- {
- playerPos.x += _tileMap->getTileSize().width;
- }
- else
- {
- playerPos.x -= _tileMap->getTileSize().width;
- }
- }
- else
- {
- if (diff.y > 0)
- {
- playerPos.y += _tileMap->getTileSize().height;
- }
- else
- {
- playerPos.y -= _tileMap->getTileSize().height;
- }
- }
- if (playerPos.x <= (_tileMap->getMapSize().width * _tileMap->getTileSize().width) &&
- playerPos.y <= (_tileMap->getMapSize().height * _tileMap->getTileSize().height) &&
- playerPos.y >= 0 && playerPos.x >= 0)
- {
- setPlayerPosition(playerPos);
- }
- setViewpointCenter(_player->getPosition());
- }
来源: http://www.bubuko.com/infodetail-2973345.html