gpt4 book ai didi

ios - applyImpulse on SKSpriteNode in touchesBegan 不工作

转载 作者:可可西里 更新时间:2023-11-01 02:18:40 26 4
gpt4 key购买 nike

我对 Swift 有点陌生。我有这个问题,SpriteNode“Ball”没有对 touchesBegan 方法中的 applyImpulse 命令使用react。整体 physicsBody 工作得很好,重力,恢复等。但是当我使用 applyImpulse 时什么也没有发生。这是代码:

var ball = SKSpriteNode()

override func didMoveToView(view: SKView) {
/* Setup your scene here */

self.physicsWorld.gravity = CGVectorMake(0.0, -9.81)


// Add the ball

ball = SKSpriteNode(imageNamed: "Ball")
ball.setScale(2.0)
ball.position = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2)
ball.zPosition = 100.0

// Physics of the ball
ball.physicsBody = SKPhysicsBody(circleOfRadius: ball.frame.size.height / 2)
ball.physicsBody?.allowsRotation = true
ball.physicsBody?.dynamic = true
ball.physicsBody?.usesPreciseCollisionDetection = true
ball.physicsBody?.mass = 2.0
ball.physicsBody?.restitution = 0.8
ball.physicsBody?.velocity = CGVectorMake(0.0, 5.0)

self.addChild(ball)

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
/* Called when a touch begins */

self.ball.physicsBody?.applyImpulse(CGVectorMake(0.0, 5.0))



}

请帮助我:)

显然我也有根据,这只是相关代码。

最佳答案

您使用这行代码创建本地对象球:

let ball = SKSpriteNode(imageNamed: "Ball")

didMoveToView 方法中。它使用 self.addChild(ball) 创建并放置到场景中。但是在这行代码中:

self.ball.physicsBody?.applyImpulse(CGVectorMake(0.0, 5.0))

您从其他 ball 对象调用 physicsBody?.applyImpulse(CGVectorMake(0.0, 5.0)),您在此处发布的代码中未表示该对象。并且此对象与您在 didMoveToView 方法中创建的对象不同。

您需要在 didMoveToVeiw 中为这个函数 ball 对象初始化全局:

ball = SKSpriteNode(imageNamed: "Ball")

没有let关键字

关于ios - applyImpulse on SKSpriteNode in touchesBegan 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33595968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com