首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpriteKit中的可弯曲臂旋转-点旋转

SpriteKit中的可弯曲臂旋转-点旋转
EN

Stack Overflow用户
提问于 2018-07-11 22:14:42
回答 1查看 149关注 0票数 0

我试图模拟一个弯曲的手臂使用SpriteKit。我有一个上臂SKShapeNode和一个下臂SKShapeNode

我如何旋转下臂,使它在肘部旋转,而不是自转?

这是我笔直的手臂,上臂是棕褐色的,下臂是青色的。

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

我将如何模拟下肢与肘部上臂的连接?我尝试过多个SKConstraint,但是找不到适合我的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-11 22:19:14

您想要使用SKPhysicsJointPin

以下是可用的雪碧套件连接:https://developer.apple.com/reference/spritekit/skphysicsjoint

你用物理世界来增加或移除关节。当您创建一个连接点时,连接节点的点总是在场景的坐标系中指定。这可能要求您首先从节点坐标转换为场景坐标,然后再创建一个连接。

要在游戏中使用物理接口,请执行以下步骤:

  1. 创建两个物理体。
  2. 将物理体附加到场景中的一对SKNode对象上。
  3. 使用上面图表中列出的子类之一创建一个联合对象。如果有必要,配置联合对象的属性以定义连接应该如何操作。
  4. 检索场景的SKPhysicsWorld对象。
  5. 调用物理世界的add(_:)方法。

下面的代码将两个节点( upperArmlowerArm )引脚在一起,使用通过SKPhysicsJointPin连接实现的“肘”。我们计算‘肘部’的位置,采取中间的面积,upperArmlowerArm重叠-这是相当粗糙的,应该改进。

代码语言:javascript
复制
let elbowArea = lowerArm.frame.intersection(upperArm.frame)

设elbowPosition = CGPoint(x: elbowArea.midX,y: elbowArea.midY)

代码语言:javascript
复制
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的最大角度允许针关节,以弧度。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51294892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档