【发布时间】:2018-06-06 20:36:19
【问题描述】:
所以我对 SpriteKit 有点陌生,我想知道如何获取对象上的力并将其放入变量中。当你对一个对象施加力时,例如这段代码,
line.physicsBody?.applyImpulse(CGVector(dx: 0, dy: -30))
它会询问您每个方向的数量。好吧,我想做相反的事情。我想得到物体的力量大小和方向。
【问题讨论】:
标签: swift xcode sprite-kit
所以我对 SpriteKit 有点陌生,我想知道如何获取对象上的力并将其放入变量中。当你对一个对象施加力时,例如这段代码,
line.physicsBody?.applyImpulse(CGVector(dx: 0, dy: -30))
它会询问您每个方向的数量。好吧,我想做相反的事情。我想得到物体的力量大小和方向。
【问题讨论】:
标签: swift xcode sprite-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 制作的,稍后会更正。
【讨论】: