Swift 球不';不要在Pong Clone中移动
我的乒乓球版本有问题。 当我键入此代码时,球不会在屏幕上移动。 问题在哪里? 请帮帮我Swift 球不';不要在Pong Clone中移动,swift,sprite-kit,swift3,Swift,Sprite Kit,Swift3,我的乒乓球版本有问题。 当我键入此代码时,球不会在屏幕上移动。 问题在哪里? 请帮帮我 class GameScene: SKScene { var ball = SKSpriteNode() var enemy = SKSpriteNode() var main = SKSpriteNode() override func didMove(to view: SKView) { ball = self.childNode(withName:
class GameScene: SKScene {
var ball = SKSpriteNode()
var enemy = SKSpriteNode()
var main = SKSpriteNode()
override func didMove(to view: SKView) {
ball = self.childNode(withName: "ball") as! SKSpriteNode
enemy = self.childNode(withName: "enemy") as! SKSpriteNode
main = self.childNode(withName: "main") as! SKSpriteNode
ball.physicsBody?.applyImpulse(CGVector(dx: 20, dy: 20))
let border = SKPhysicsBody(edgeLoopFrom: self.frame)
border.friction = 0
border.restitution = 1
self.physicsBody = border
}
}
您知道这个代码行
ball.physicsBody?.applyImpulse(CGVector(dx: 20, dy: 20))
意味着
“如果ball的属性physicsBody
不是nil
,请调用其上的方法applyImpulse()
”
你不是吗?可以如果physicsBody
为零,该代码将执行什么操作?对,完全没用。那么,您是否检查了执行此代码时,physicsBody
不是nil
根据财产physicsBody
的文件:
默认值为nil,表示节点根本不参与物理模拟。如果提供了物理实体,则在模拟场景的物理时,物理实体将更新节点的位置并旋转节点
没有代码显示您在球对象上设置了physicsBody
。您使用过SpriteKit场景编辑器吗?@困惑我不明白您的问题。这与我的答案有什么关系?我很确定OP正在场景编辑器中制作所有内容,然后尝试“导入”它们并在上面的代码中使用它们。苹果和一些教程网站和服务鼓吹说,不需要太多的代码知识,就可以在SpriteKit中完成任务。所以这家伙可能是受害者,可能对光学和物理体的创建等一无所知。好吧,使用图形编辑器而不是代码仍然意味着你需要一个合理的设置。例如,如果我没有向Interface Builder中的按钮添加操作选择器,单击此按钮也没有效果,是吗?我不需要编写代码,但我需要在对象之间进行引用。因此,无论OP是否使用编辑器,我要检查的第一件事是,note确实有一个physicsBody
,好像它没有,这已经解释了一切。当然,它可能有一个,然后我会重写我的答案。Mecki指出如果用户理解optionals的工作原理,并根据这个猜测写一个答案,这是绝对正确的。如果最初的海报以正确的方式使用了可选选项,那么也许这个问题甚至不需要问。塞巴斯蒂亚诺你是如何创建你的项目的,你从哪里获得灵感的?