嗨,iam开发了一个简单的积木游戏。游戏看起来像这样。

ios - 将x位置设置为SKSpriteNode-LMLPHP

在此图像的底部,您可以看到一个桨(黄色彩条)。在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中,您没有放置名为SKSpriteNodeBall和/或名为SKSpriteNode的另一个Paddle

关于ios - 将x位置设置为SKSpriteNode,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41258999/

10-10 15:32