【发布时间】:2019-10-24 06:20:25
【问题描述】:
我的目标是像由电机驱动的轮子一样旋转圆形节点,例如顺时针旋转时,由于地板的摩擦,轮子会向右移动。
根据其他线程,旋转 SKPhysicsBody 的方式是旋转它所连接的主体。
此代码旋转精灵,但不旋转物理体。我该如何解决这个问题?
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)
PS。这种创建 body 的方式在 iOS 13 中不起作用,但应该不会影响结果。
circle.physicsBody = SKPhysicsBody(texture: SKTexture(imageNamed: ”circle"), size: circle.size)
【问题讨论】:
-
您好,欢迎来到 SO。你为什么说物理物体不旋转,因为它是一个圆,你怎么知道它是否在旋转?如果您希望精灵像轮子一样自动移动,那么它不会 - 您必须计算 PB 圆周上一个点的速度并自己移动精灵。
-
嗨。谢谢回复。我在场景周围创建了一个基于边缘的主体。圆圈落到底部并在停止之前反弹。我的目标是摩擦地板使其因旋转而移动(使用此信息编辑问题)。也许这不是 Sprite 套件的工作原理?
-
好的。那么有可能做到这一点(沿着地板和其他物体滚动身体)吗?
标签: swift sprite-kit skphysicsbody