我知道还有其他几个问题,但它们似乎都没有用,或者它们都不完整或半完整。我需要知道如何将对象保持在可见屏幕内!所以我有一个宇宙飞船精灵,它使用设备的倾斜和核心动作飞过屏幕。如果我倾斜我的设备,宇宙飞船将在某一点离开我的屏幕并继续向那个方向前进。如何让宇宙飞船留在我的屏幕内,这样即使我向左或向右倾斜也不会离开可见的屏幕?这是我的太空飞船的一些代码。
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并将它变成一个物理体,但我的宇宙飞船从未接触到它。
答案 0 :(得分:0)
我所要做的就是干扰.sks文件中屏幕的大小。我特意制作了800x640,因为我正在测试I-Pod 5.然后我添加了这段代码:
let edgeFrame = CGRect(origin: CGPoint(x: ((self.view?.frame.minX)! + 200) ,y: (self.view?.frame.minY)!), size: CGSize(width: (self.view?.frame.width)! + 90, height: (self.view?.frame.height)! + 90))
self.physicsBody = SKPhysicsBody(edgeLoopFromRect: edgeFrame)
这在我的屏幕周围形成了一个合适的边界,并且不允许我的飞船离开屏幕。最重要的是这是一个完美的配合,所以如果你在不同的设备上测试,那么只需根据需要调整宽度和高度数。请记住还要调整.sks屏幕大小。
致信0x141E,暗示我朝着正确的方向前进。