所以我对 SpriteKit 有点陌生,我想知道如何获取物体上的力并将其放入变量中。当你对一个物体施加力时,例如这段代码,
line.physicsBody?.applyImpulse(CGVector(dx: 0, dy: -30))
它会询问您每个方向的距离。嗯,我想做相反的事情。我想知道物体所受的力的大小以及方向。
最佳答案
冲动是持续一瞬间的力量。当物体相对于其速度和质量发生碰撞时,它只能对另一个物理体施加力。
如果您想查找对象当前的平均速度,您可以使用
sprite.physicalbody?.velocity
或者您可以检查对象是否正在移动
physicsbody?.isResting
如果您想计算帧之间施加在对象上的平均力,您必须计算最后一个更新周期之间位置变化的幅度,然后乘以对象质量,如下所示。
var lastPosition: CGPoint?
var avgForce: CGPoint?
func updatedForce(for sprite: SKSprite, timeDelta: Double) {
guard let lastPosition = lastPosition, let currentVelocity = currentVelocity) else {
lastPosition = sprite.position
}
let position = sprite.position
let mass = sprite.physicsbody.mass
var changeInX = position.x - lastPosition.x
var changeInY = position.y - lastPosition.y
avgForce = CGPoint(x: changeInX * mass, y: changeInY * mass)
}`
对于任何格式问题或拼写错误,我深表歉意,这是用我的 iPhone 制作的,稍后会更正。
关于swift - 如何在 SpriteKit (Swift) 中获取施加在对象上的力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50729176/