2015-08-18 4 views
8

Если я делаю игру в SpriteKit с большим «миром», и мне нужно, чтобы у пользователя была возможность масштабирования и выключения из SKScene, как бы я это сделал? Или, чтобы сделать вещи проще, в функции didMoveToView, как я могу представить больше мира на экране устройства пользователя (без использования world.runAction(SKAction.scaleTo(0.5)) или что-то в этом роде)?SpriteKit- Как увеличить масштаб и уменьшить масштаб SKScene?

+1

Что случилось с установкой в ​​мире 'scale' недвижимость? Если вы настроите iOS 9, вы можете добавить [SKCameraNode] (https://developer.apple.com/library/prerelease/ios/documentation/SpriteKit/Reference/SKCameraNode/). – 0x141E

ответ

-2

Итак, лучшее решение, которое я мог найти, это что-то вроде этого. В функции didMoveToView создайте SKSpriteNode под названием World и сделайте его любым размером, который вы хотите, чтобы ваш мир был. Затем напишите world.setScale(0.5), если вы хотите уменьшить 50%. Однако, если у вас есть узел игрока, который всегда должен быть центрирован на экране, вам нужно добавить следующее к вашей функции update.

override func update(currentTime: CFTimeInterval) { 
    world.position.x = -player.position.x * (0.5) 
    world.position.y = -player.position.y * (0.5) 
} 
24

Существует SKCameraNode, который специально создан для этого. SKCameraNode определяет область просмотра в вашей сцене. Вы создаете узел камеры и назначаете его свойству камеры для своей сцены.

let cameraNode = SKCameraNode() 
cameraNode.position = CGPoint(x: scene.size.width/2, scene.size.height/2) 
scene.addChild(cameraNode) 
scene.camera = cameraNode 

Затем вы можете создавать действия и выполнять эти действия на камере. Чтобы увеличить масштаб сцены, вы сделаете это.

let zoomInAction = SKAction.scaleTo(0.5, duration: 1) 
    cameraNode.runAction(zoomInAction) 

cameraNode в основном представляет собой квадратный узел в сцене, что я думаю, что имеет пропорции зрения по умолчанию? Потому что нет инициализатора размера. Поэтому, когда вы делаете его меньше, сцена выглядит так, будто он увеличивается. Чтобы уменьшить масштаб, вы делаете действие, которое увеличивает масштаб. В принципе, представьте себе прямоугольник на всей вашей сцене, и все, что находится в прямоугольнике cameraNode, отображается прямо на экране вашего iPhone. Вы также можете добавить действия moveTo и действия последовательности и установить timModes для таких же действий, как если бы это был ваш обычный spriteNode.

Вот WWDC, где парень-яблоко показывает то, что я только что сказал. Бит CameraNode составляет около 3 минут до конца.

https://developer.apple.com/videos/play/wwdc2015-604/

+2

Это действительно должен быть принятый ответ –

Смежные вопросы