swift - 为什么当我将 SKSpriteNode 与图像一起使用时它不会反弹,但当我使用 SKShapeNode 时它会起作用?

标签 swift sprite-kit skspritenode

我是 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/

相关文章:

swift - 如何通过physicsBody获取SKSpriteNode?

ios - 使用 setContentOffset 滚动到特定页面

ios - Swift:主屏幕密码

swift - 缺少 CFSocketCreate 或构造方法。如何使用 Swift 创建 CFSocket?

ios - SKScene 每次重启后变慢

ios - 我应该使用什么预加载 Sprite 的方法?

swift - 使用 CALayer 和 UIImage 在 Swift 中屏蔽图像

sprite-kit - iOS SKSpriteNode - 离开屏幕

swift - UIGesture 识别器使应用程序崩溃

swift - 粒子效果后如何从屏幕上删除 Sprite 节点