我是 Swift 的新手,我正在尝试创建一个上下弹跳的球。当我使用时:
import Foundation
import SpriteKit
class Ball {
let movingObject: SKShapeNode
init() {
movingObject = SKShapeNode(circleOfRadius: 25)
movingObject.physicsBody = SKPhysicsBody(circleOfRadius: 25)
movingObject.physicsBody?.affectedByGravity = true
movingObject.physicsBody?.restitution = 1
movingObject.physicsBody?.linearDamping = 0
}
}
它工作正常。但是,当我尝试使用图像时,它不会反弹。
class Ball {
let movingObject: SKSpriteNode
let picture: String
init(picture: String) {
self.picture = picture
movingObject = SKSpriteNode(imageNamed: picture)
movingObject.physicsBody = SKPhysicsBody(circleOfRadius: movingObject.size.width * 0.5)
movingObject.physicsBody?.affectedByGravity = true
movingObject.physicsBody?.restitution = 1
movingObject.physicsBody?.linearDamping = 0
}
}
最佳答案
两个物理体之间的唯一区别是半径。因此,这一定是问题所在。
尝试将半径设置为 25
,就像您对形状节点所做的那样进行确认,然后尝试推理为什么 movingObject.size.width * 0.5
没有出现到一个合理的值。您可以设置断点并使用调试器 print movingObject.size
来提供帮助。
关于swift - 为什么当我将 SKSpriteNode 与图像一起使用时它不会反弹,但当我使用 SKShapeNode 时它会起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38357257/