gpt4 book ai didi

swift - 如何像轮子一样旋转 SKPhysicsBody

转载 作者:行者123 更新时间:2023-11-28 13:24:54 26 4
gpt4 key购买 nike

我的目标是旋转一个圆形节点,就像一个由电机驱动的轮子,例如顺时针旋转时,由于地板的摩擦力,轮子会向右移动。

根据其他线程,旋转 SKPhysicsBody 的方法是旋转它所连接的主体。

此代码旋转 Sprite 而不是物理体。我该如何解决这个问题?

let circle = SKSpriteNode(imageNamed: ”circle")
circle.position = CGPoint(x: size.width * 0.5, y: size.height * 0.9)
circle.physicsBody = SKPhysicsBody(circleOfRadius: circle.frame.width/2)
if let physics = circle.physicsBody {
physics.affectedByGravity = true
physics.allowsRotation = true
physics.restitution = 0.2
physics.friction = 1.0
physics.isDynamic = true;
physics.mass = 10
}
addChild(circle)
let rotateAction = SKAction.rotate(byAngle: .pi, duration: 1.0)
let repeatAction = SKAction.repeatForever(rotateAction)
circle.run(repeatAction)

附言。这种创建主体的方式在 iOS 13 中不起作用,但不应影响结果。

circle.physicsBody = SKPhysicsBody(texture: SKTexture(imageNamed: ”circle"), size: circle.size)

最佳答案

虽然直接移动或旋转 Sprite 也会移动物理体,但物理引擎会为您移动 Sprite ,因此您不必担心。理念是让它完成工作,而不是添加 Action 来直接创建 Action 。

如果你想让一个带有附加 body 的 Sprite 旋转,要么对 body 施加一个角脉冲(如 Knight0fDragon 所建议的那样),要么直接设置物理 body 的角速度。如果您不想停止旋转,您可能还想将 angularDamping 设置为 0。例如,

...
addChild(circle)
circle.physicsBody?.angularDamping = 0
circle.physicsBody?.angularVelocity = .pi
...

然后删除 circle.run(...) 看看会发生什么。

关于swift - 如何像轮子一样旋转 SKPhysicsBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58535248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com