我试图模拟一个弯曲的手臂使用SpriteKit。我有一个上臂SKShapeNode和一个下臂SKShapeNode。
我如何旋转下臂,使它在肘部旋转,而不是自转?
这是我笔直的手臂,上臂是棕褐色的,下臂是青色的。

这就是在下臂旋转90度后的样子。

我将如何模拟下肢与肘部上臂的连接?我尝试过多个SKConstraint,但是找不到适合我的。
发布于 2018-07-11 22:19:14
您想要使用SKPhysicsJointPin
以下是可用的雪碧套件连接:https://developer.apple.com/reference/spritekit/skphysicsjoint

你用物理世界来增加或移除关节。当您创建一个连接点时,连接节点的点总是在场景的坐标系中指定。这可能要求您首先从节点坐标转换为场景坐标,然后再创建一个连接。
要在游戏中使用物理接口,请执行以下步骤:
下面的代码将两个节点( upperArm和lowerArm )引脚在一起,使用通过SKPhysicsJointPin连接实现的“肘”。我们计算‘肘部’的位置,采取中间的面积,upperArm和lowerArm重叠-这是相当粗糙的,应该改进。
let elbowArea = lowerArm.frame.intersection(upperArm.frame)设elbowPosition = CGPoint(x: elbowArea.midX,y: elbowArea.midY)
let elbowJoint = SKPhysicsJointPin.joint(withBodyA: upperArm.physicsBody!,
bodyB: lowerArm.physicsBody!,
anchor: elbowPosition)
scene.physicsWorld.add(elbowJoint)您还应该通过接头的特性为销关节(肘部)设定旋转限制:
var shouldEnableLimits: Bool一种布尔值,它指示销节点的旋转是否限制在特定的值范围内。var lowerAngleLimit: CGFloat最小的角度允许针关节,以弧度。var upperAngleLimit: CGFloat的最大角度允许针关节,以弧度。
https://stackoverflow.com/questions/51294892
复制相似问题