Я хочу добавить определенное количество квадратов в сцену. Когда я это делаю, часть квадрата выходит за рамки. Можно ли перемещать всю сцену по оси y?SpriteKit: Move Whole Scene
1
A
ответ
1
Я попытался, и похоже, что сама сцена не может быть перемещена. Альтернативный подход - добавить SKNode к сцене, которая представляет весь мир. Добавьте все остальные элементы в мировой узел. Теперь вы можете переместить этот узел, если хотите переместить всю сцену. Я работаю над небольшим учебником об этом в своем блоге. Вот мой текущий код:
import SpriteKit
class GameScene: SKScene {
// Declare the needed nodes
var worldNode: SKNode?
var spriteNode: SKSpriteNode?
var nodeWidth: CGFloat = 0.0
override func didMoveToView(view: SKView) {
// Setup world
worldNode = SKNode()
self.addChild(worldNode!)
// Setup sprite
spriteNode = SKSpriteNode(imageNamed: "Spaceship")
spriteNode?.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
spriteNode?.xScale = 0.1
spriteNode?.yScale = 0.1
spriteNode?.zPosition = 10
self.addChild(spriteNode!)
// Setup backgrounds
// Image of left and right node must be identical
let leftNode = SKSpriteNode(imageNamed: "left")
let middleNode = SKSpriteNode(imageNamed: "right")
let rightNode = SKSpriteNode(imageNamed: "left")
nodeWidth = leftNode.frame.size.width
leftNode.anchorPoint = CGPoint(x: 0, y: 0)
leftNode.position = CGPoint(x: 0, y: 0)
middleNode.anchorPoint = CGPoint(x: 0, y: 0)
middleNode.position = CGPoint(x: nodeWidth, y: 0)
rightNode.anchorPoint = CGPoint(x: 0, y: 0)
rightNode.position = CGPoint(x: nodeWidth * 2, y: 0)
worldNode!.addChild(leftNode)
worldNode!.addChild(rightNode)
worldNode!.addChild(middleNode)
}
var xOrgPosition: CGFloat = 0
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
let xTouchPosition = touch.locationInNode(self).x
if xOrgPosition != 0.0 {
let xNewPosition = worldNode!.position.x + (xOrgPosition - xTouchPosition)
if xNewPosition <= -(2 * nodeWidth) {
// right end reached
worldNode!.position = CGPoint(x: 0, y: 0)
print("Right end reached")
} else if xNewPosition >= 0 {
// left end reached
worldNode!.position = CGPoint(x: -(2 * nodeWidth), y: 0)
print("Left end reached")
} else {
worldNode!.position = CGPoint(x: xNewPosition, y: 0)
}
}
xOrgPosition = xTouchPosition
}
}
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
// Reset value for the next swipe gesture
xOrgPosition = 0
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}
}
Смежные вопросы
- 1. Spritekit Scene Архивирование
- 2. SpriteKit Scene Pause
- 3. изменение SpriteKit Scene Editor не применяется
- 4. spritekit + swift, change scene не работает хорошо
- 5. SKTransitions from scene to scene slow
- 6. cocos2d remove scene/scene transitions
- 7. SK Scene transition background
- 8. GCC: --whole-archive и --no-whole-archive options
- 9. gcc --whole-archive --no-whole-archive: Целостность динамической библиотеки
- 10. Peek and Pop Function SpriteKit
- 11. Android underline whole textView
- 12. Reposition whole GridBagLayout
- 13. UIImageView Fit Whole Screen
- 14. onClickListener для экрана WHOLE
- 15. Mongoose update whole Array
- 16. scale up whole div
- 17. iPhone «Whole Word»
- 18. Proc Rank-whole dataset
- 19. python pandas.Series.str.contains WHOLE WORD
- 20. looping through whole dataframe
- 21. Snapshot whole TableView
- 22. Публикация коллекции Whole Meter.users
- 23. Google Move Move Folders
- 24. Move GameObject со временем
- 25. SpriteKit GameScene для ios7
- 26. Swift spritekit несколько сцен
- 27. SpriteKit - didMovetoView не называется
- 28. image move with mouse move
- 29. Swift spritekit сменить сцены?
- 30. SpriteKit Порядок сцены
Будет ли использоваться как worldNode.addChild (otherNode) –
Да. Я могу опубликовать образец позже – Stefan
Да, перемещение сцены не то, что вы хотите сделать (хотя это можно сделать) Следуйте за началом запуска с главного узла для всех ваших объектов в сцене, а затем просто переместите главный узел вокруг внутри сцены, чтобы все ваши узлы перемещались. Это отличный подход, когда вы хотите добавить HUD в игру. вы добавили бы свой главный узел к сцене, а затем ваш узел HUD на сцену, чтобы при перемещении вашего главного узла перемещались только те объекты, которые были прикреплены к главному, а узлы в HUD останутся статическими – Knight0fDragon