swift - 如何在 SpriteKit (Swift) 中获取施加在对象上的力

标签 swift xcode sprite-kit

所以我对 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/

相关文章:

ios - 如何防止触发多个位置通知

swift - 为什么我不能读取那些 MTLTexture 像素?

ios - UIbutton 的图像在 iOS 中被拉伸(stretch)

ios - 为什么我的按钮显示但无法点击?

swift - 如何根据触摸屏的时间使 Sprite 跳得更高/更小?

swift - 具有关联类型类型转换的保护案例的单个表达式?

swift - 核心数据设置中 Appdelegate 约定中的 NsPerstentContainer 名称

iphone - 证书和配置文件

ios - 平移 - 平移之前图像的初始位置

ios - 仅触摸 Swift3 中 SKSpriteNode 的非透明像素