嗨,我开发了一个简单的砖块游戏。游戏看起来像这样。
在此图像的底部,您可以看到一个球拍(黄色条)。在touchesBegan上,我想获得触摸的x位置并将球拍移动到该x位置。
我试过但是收到了错误。
2016-12-21 14:35:50.540 BrickOut [1347:38411] SKUtil.m:MGGetBoolAnswer 在模拟器中不可用。
X地点:(95.0,670.33332824707)
致命错误:在展开Optional值(lldb)时意外发现nil
Swift Code
import SpriteKit
import GameplayKit
class GameScene: SKScene {
var ball:SKSpriteNode!
var paddle:SKSpriteNode!
override func didMove(to view: SKView) {
ball = self.childNode(withName: "Ball") as! SKSpriteNode!
paddle = self.childNode(withName: "Paddle") as! SKSpriteNode!
ball.physicsBody?.applyImpulse(CGVector(dx: 50, dy: 50))
let border = SKPhysicsBody(edgeLoopFrom: (view.scene?.frame)!)
border.friction = 0
self.physicsBody=border
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches{
let touchLocation = touch.location(in: self.view)
print("X Location : ", touchLocation)
paddle.position.x = touchLocation.x
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches{
let touchLocation = touch.location(in: self.view)
print("X Location moved: ", touchLocation)
paddle.position.x = touchLocation.x
}
}
}
有人可以帮我解决这个问题。我想将挡板x位置更改为触摸的x位置。
答案 0 :(得分:0)
首先你可以忽略这个
2016-12-21 14:35:50.540 BrickOut [1347:38411] SKUtil.m:MGGetBoolAnswer在模拟器中不可用。
接下来,在这些行中
ball = self.childNode(withName: "Ball") as! SKSpriteNode!
paddle = self.childNode(withName: "Paddle") as! SKSpriteNode!
你应该转为SKSpriteNode
而不是SKSpriteNode!
这意味着在您的sks
中,您没有放置名为SKSpriteNode
的{{1}}和/或名为Ball
的其他SKSpriteNode