gpt4 book ai didi

ios - applyImpulse 在接触节点时不起作用

转载 作者:行者123 更新时间:2023-11-28 05:55:22 25 4
gpt4 key购买 nike

我在屏幕上有一个圆圈,它会慢慢变大(顺便说一下,Balloon 类是 SKShapeNode 的一种)。在 touchesBegan 中,我单击圆圈并打印出我触摸了它,但是没有施加任何冲动。我怎样才能找到问题所在?我是 SpriteKit 的新手。

import SpriteKit
import GameplayKit

class GameScene: SKScene {

var radius = 40.0

var balloon : Balloon? = nil

override func didMove(to view: SKView) {

balloon = Balloon(radius: radius, position: CGPoint(x: frame.midX, y: frame.minY + 250))
balloon?.name = "balloon"

let physicsBody = SKPhysicsBody(circleOfRadius: CGFloat(radius))
physicsBody.affectedByGravity = false
balloon?.physicsBody = physicsBody
balloon?.physicsBody?.isDynamic = true

let borderBody = SKPhysicsBody(edgeLoopFrom: self.frame)
borderBody.friction = 0
self.physicsBody = borderBody
physicsWorld.gravity = CGVector(dx: 0.0, dy: 0.0)

self.addChild(balloon!)

}



override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let location = touch.location(in: self)
let node : SKNode = self.atPoint(location)
if node.name == "balloon" {
print("touching balloon.")
balloon?.physicsBody?.applyImpulse(CGVector(dx: 10.0, dy: 10.0), at: location)
}
}

}

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {

}

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {

}

override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {

}


override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
radius += 0.05
self.balloon?.radius = radius

let physicsBody = SKPhysicsBody(circleOfRadius: CGFloat(radius))
physicsBody.affectedByGravity = false
balloon?.physicsBody = physicsBody
balloon?.physicsBody?.isDynamic = true

}
}

最佳答案

每次更新你都在创建一个新的主体。如果您想给气球充气,请使用秤:

var scale = 1.0
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
scale += 0.05
self.balloon?.setScale(scale)
}

然后你的物理 body 将能够将脉冲应用到它,因为你不会在每次更新时都创建一个新的 body 。

关于ios - applyImpulse 在接触节点时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51637709/

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