提问人:lando2319 提问时间:9/24/2023 更新时间:9/24/2023 访问量:31
SKSpriteNode 在 Swift SpriteKit 中以多路径和高速通过 SKShapeNode
SKSpriteNode passing through SKShapeNode with multiple paths and high speed in Swift SpriteKit
问:
我在 Spritekit 中有一个游戏,汽车是 ,线是 .SKSpriteNode
SKShapeNode
从第一个 gif 中可以看出,当我在顶部画一个 X 让汽车低速下落时,它工作正常,但随后画一个 X(第二个 gif)让汽车速度更快,它会导致汽车通过线条并表现不正常。
我的理解是,这是没有达到碰撞阈值的结果,汽车的行驶速度超过了系统捕捉它的能力。
我在这里有什么选择,我尝试添加,但这没有帮助。调整 carNode 的速度或将视图设置为 90 也没有。usesPreciseCollisionDetection
preferredFramesPerSecond
当我的节点快速运行时,我需要添加什么才能获得适当的碰撞?
var carNode: SKSpriteNode!
var lineNode: SKShapeNode?
override func didMove(to view: SKView) {
...
carNode = SKSpriteNode(texture: carTexture, size: carSize)
carNode.physicsBody = SKPhysicsBody(rectangleOf: carNode.size)
carNode.physicsBody?.categoryBitMask = 1
carNode.physicsBody?.collisionBitMask = 2
carNode.physicsBody?.contactTestBitMask = 2
carNode.physicsBody?.angularDamping = 0.5
...
addChild(carNode)
...
}
...
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
...
let newLine = SKShapeNode()
...
addChild(newLine)
lineNode = newLine
updateLine(to: touchLocation!)
}
...
func updateLine(to position: CGPoint) {
let physicsBody = SKPhysicsBody(edgeChainFrom: line.path!)
physicsBody.categoryBitMask = 2
physicsBody.collisionBitMask = 1
physicsBody.contactTestBitMask = 2
line.physicsBody = physicsBody
...
}
答: 暂无答案
评论