gpt4 book ai didi

ios - SpriteKit 中的可弯曲 ARM 旋转 - 在点旋转

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

我正在尝试使用 SpriteKit 模拟可弯曲的 ARM 。我有一个上臂 SKShapeNode 和一个下臂 SKShapeNode

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

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

enter image description here

这是下臂-90度旋转后的样子

enter image description here

我如何模拟下臂在肘部连接到上臂?我尝试了多个 SKConstraint,但找不到适合我的。

最佳答案

您想使用SKPhysicsJointPin

以下是可用的 Sprite-Kit 关节:https://developer.apple.com/reference/spritekit/skphysicsjoint

enter image description here

您使用物理世界添加或删除关节。创建关节时,连接关节的点始终在场景的坐标系中指定。这可能需要您在创建关节之前先将节点坐标转换为场景坐标。

要在您的游戏中使用物理关节,请按照以下步骤操作:

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

以下代码使用通过 SKPhysicsJointPin 关节实现的“肘”将两个节点固定在一起,upperArmlowerArm。我们通过取 upperArmlowerArm 重叠区域的中间来计算“肘”位置 - 这是非常粗糙的,应该改进。

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 A Boolean value that indicates whether the pin joint’s rotation is limited to a specific range of values.

var lowerAngleLimit: CGFloat The smallest angle allowed for the pin joint, in radians.

var upperAngleLimit: CGFloat The largest angle allowed for the pin joint, in radians.

关于ios - SpriteKit 中的可弯曲 ARM 旋转 - 在点旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51294892/

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