嗨,iam开发了一个简单的积木游戏。游戏看起来像这样。
在此图像的底部,您可以看到一个桨(黄色彩条)。在touches上,我想获得触摸的x位置,并将拨片移动到该x位置。
我尝试过,但出现错误。
2016-12-21 14:35:50.540 BrickOut [1347:38411] SKUtil.m:MGGetBoolAnswer
在模拟器中不可用。
X位置:(95.0,670.33332824707)
致命错误:解开可选值(lldb)时意外发现nil
SWIFT代码
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位置。
最佳答案
首先你可以忽略这个
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
的Ball
和/或名为SKSpriteNode
的另一个Paddle
关于ios - 将x位置设置为SKSpriteNode,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41258999/