Я знаю, что есть пара других вопросов, касающихся этого, но ни один из них, похоже, не работает, или все они неполны или полны. Мне нужно знать, как сохранить объект на видимом экране! Таким образом, у меня есть спрайт космического корабля, который использует движение наклона и ядра устройства для перемещения по экрану. Если я наклоняю свое устройство, космический корабль в какой-то момент покинет мой экран и продолжит движение в этом направлении. Как сохранить космический корабль в моем экране, чтобы, даже если я наклоняюсь влево или вправо, он никогда не покинет видимый экран? Вот некоторые из моего кода на космический корабль.Как предотвратить быстрый уход объекта из экрана?
class GameScene: SKScene, SKPhysicsContactDelegate {
var ship = SKSpriteNode(imageNamed:"Spaceship")
let manager = CMMotionManager()
override func didMoveToView(view: SKView) {
/* Setup your scene here */
ship.xScale = 1/5
ship.yScale = 1/5
ship.position = CGPoint(x: self.frame.width/(2), y: self.frame.height/1.5)
self.physicsWorld.contactDelegate = self
manager.startAccelerometerUpdates()
manager.accelerometerUpdateInterval = 0.1
manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()){
(data, error) in
self.physicsWorld.gravity = CGVectorMake(CGFloat((data?.acceleration.x)! * 15), CGFloat((data?.acceleration.y)! * 15))
}
ship.physicsBody = SKPhysicsBody()
ship.physicsBody?.affectedByGravity = true
self.addChild(ship)
}
Я уже пробовал self.view? .bounds и превращение его в физическом теле, но мой космический корабль никогда не вступает в контакт с ним.
Вы хотите, чтобы он «отскакивал» от краев экрана или просто не двигался мимо границы экрана? –
Попробуйте заменить 'ship.physicsBody = SKPhysicsBody()' на 'ship.physicsBody = SKPhysicsBody (circleOfRadius: ship.size.width/2)' и добавьте 'edgeLoopFromRect' вокруг вашей сцены. – 0x141E
Я хочу, чтобы он не двигался мимо границы экрана. – user6794148