所以我对SpriteKit不熟悉,我想知道如何获取对象的力量并将其放入变量中。当您对对象施加强制时,例如,此代码
line.physicsBody?.applyImpulse(CGVector(dx: 0, dy: -30))
它询问你每个方向有多少。好吧,我想做相反的事情。我想得到物体的力量和方向。
答案 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上做出来并稍后会更正。