如何在SpriteKit(Swift)中获取对象的力

时间:2018-06-06 20:36:19

标签: swift xcode sprite-kit

所以我对SpriteKit不熟悉,我想知道如何获取对象的力量并将其放入变量中。当您对对象施加强制时,例如,此代码

line.physicsBody?.applyImpulse(CGVector(dx: 0, dy: -30))

它询问你每个方向有多少。好吧,我想做相反的事情。我想得到物体的力量和方向。

1 个答案:

答案 0 :(得分:0)

冲动是持续一瞬间的力量。当物体相对于其速度和质量发生碰撞时,物体只能在另一物理体上施加力。

如果您希望找到当前平均速度的对象,请使用 sprite.physicsbody?.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上做出来并稍后会更正。