Sprite Kit - Иногда шарик исчезает с экрана?
Я новый с комплектом спрайтов. Я пробовал простую игру с мячом с 2 игроками, другой - медленным слежением за мячом. Но я обнаружил проблему. Когда я перемещаю линию на шарик (с краем), шарик исчезает с экрана. В другой раз не проблема, мяч подпрыгивает. В чем проблема?
У меня есть один GameScene, sks и ViewController. Мои узлы спрайтов из sks. Если кто-то объяснит это дело. Будет лучше. Я приложил то, что я сделал ниже.
Мои GameScene:
class GameScene: SKScene {
var ball = SKSpriteNode()
var enemy = SKSpriteNode()
var main = SKSpriteNode()
override func didMove(to view: SKView) {
ball = self.childNode(withName: "ball") as! SKSpriteNode
enemy = self.childNode(withName: "enemy") as! SKSpriteNode
main = self.childNode(withName: "main") as! SKSpriteNode
ball.physicsBody?.applyImpulse(CGVector(dx: -20, dy: -20))
ball.physicsBody?.linearDamping = 0
ball.physicsBody?.angularDamping = 0
let border = SKPhysicsBody(edgeLoopFrom: self.frame)
border.friction = 0
border.restitution = 1
self.physicsBody = border
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let location = touch.location(in: self)
main.run(SKAction.moveTo(x: location.x, duration: 0.2))
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let location = touch.location(in: self)
main.run(SKAction.moveTo(x: location.x, duration: 0.2))
}
}
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
enemy.run(SKAction.moveTo(x: ball.position.x, duration: 0.5))
}
Посмотреть контроллер:
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let view = self.view as! SKView? {
// Load the SKScene from 'GameScene.sks'
if let scene = SKScene(fileNamed: "GameScene") {
// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFill
// Present the scene
view.presentScene(scene)
}
view.ignoresSiblingOrder = true
}
}
override var prefersStatusBarHidden: Bool {
return true
}
настройки Pad:
настройки Шаровые:
Some updates
Я пробовал некоторые сообщения в функции обновления, а затем столкнулся с таким же случае мяч выходит за пределы с левой стороны устройства (с помощью картинки 6S)
2016-12-08 14:27:54.436485 Pong[14261:3102941] fatal error: ball out of left bounds: file
Что такое -474.846 ...? Это позиция x или y? У каждого сообщения об ошибке есть такой же номер или они начинаются с 0? Это на устройстве или в симуляторе? –
@SteveIves Моя точка привязки 0,5, поэтому -474 для этого размера не означает, что мяч выходит за пределы экрана левой стороны? – tobeiosdev