首页 > 解决方案 > 如何在SpriteKit(Swift)中对对象施加力

问题描述

所以我对 SpriteKit 有点陌生,我想知道如何获得物体上的力并将其放入变量中。当你对一个物体施加力时,例如,这段代码,

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

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

标签: swiftxcodesprite-kit

解决方案


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

如果您希望找到您的对象当前的平均速度,您可以使用 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 制作的,稍后会更正。


推荐阅读