Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SpriteKit中的可弯曲臂旋转-在点处旋转_Ios_Swift_Sprite Kit_Rotation - Fatal编程技术网

Ios SpriteKit中的可弯曲臂旋转-在点处旋转

Ios SpriteKit中的可弯曲臂旋转-在点处旋转,ios,swift,sprite-kit,rotation,Ios,Swift,Sprite Kit,Rotation,我试图用SpriteKit模拟一个可弯曲的手臂。我有一个上臂SKShapeNode和一个下臂SKShapeNode 如何旋转下臂,使其在肘部旋转,而不是在自身旋转 这是我的直臂,上臂为棕褐色,下臂为青色 这是下臂旋转-90度后的样子 我如何模拟下臂在肘部连接到上臂?我尝试了多个SKConstraints,但找不到一个适合我的。是否要使用SKPhysicsJointPin 以下是可用的Sprite套件接头: 可以使用“物理世界”添加或删除关节。创建关节时,连接关节的点始终在场景的坐标系中指定

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

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

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

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


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

是否要使用
SKPhysicsJointPin

以下是可用的Sprite套件接头:

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

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

  • 创建两个物理实体
  • 将物理实体附着到场景中的一对SKNode对象
  • 使用中列出的子类之一创建关节对象 上图。如有必要,请配置关节对象的特性 定义关节应如何操作
  • 检索场景的SKPhysicsWorld对象
  • 调用物理世界的add(:)方法
  • 以下代码使用通过,
    SKPhysicsJointPin
    接头实现的“弯头”将上臂和下臂两个节点固定在一起。我们通过取上臂和下臂重叠区域的中间来计算“肘部”位置-这是非常粗糙的,应该改进

    let elbowArea = lowerArm.frame.intersection(upperArm.frame)
    
    设elbowPosition=CGPoint(x:elbowArea.midX,y:elbowArea.midY)

    还应通过关节的属性设置销关节(弯头)的旋转限制:

    var shouldEnableLimits:Bool
    一个布尔值,指示 销接头的旋转限制在特定的值范围内

    var lowerAngleLimit:CGFloat
    销允许的最小角度 关节,以弧度表示

    var上限角度限制:CGFloat
    销允许的最大角度 关节,以弧度表示


    您想使用
    SKPhysicsJointPin

    以下是可用的Sprite套件接头:

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

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

  • 创建两个物理实体
  • 将物理实体附着到场景中的一对SKNode对象
  • 使用中列出的子类之一创建关节对象 上图。如有必要,请配置关节对象的特性 定义关节应如何操作
  • 检索场景的SKPhysicsWorld对象
  • 调用物理世界的add(:)方法
  • 以下代码使用通过,
    SKPhysicsJointPin
    接头实现的“弯头”将上臂和下臂两个节点固定在一起。我们通过取上臂和下臂重叠区域的中间来计算“肘部”位置-这是非常粗糙的,应该改进

    let elbowArea = lowerArm.frame.intersection(upperArm.frame)
    
    设elbowPosition=CGPoint(x:elbowArea.midX,y:elbowArea.midY)

    还应通过关节的属性设置销关节(弯头)的旋转限制:

    var shouldEnableLimits:Bool
    一个布尔值,指示 销接头的旋转限制在特定的值范围内

    var lowerAngleLimit:CGFloat
    销允许的最小角度 关节,以弧度表示

    var上限角度限制:CGFloat
    销允许的最大角度 关节,以弧度表示


    虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-@Rob你是对的,尽管链接是作为额外的信息,而不是答案本身(这是“使用SKPhysicsJoint”,OP打算做他们的研究)。我会改进它。虽然这个链接可以回答这个问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-@Rob你是对的,尽管链接是作为额外的信息,而不是答案本身(这是“使用SKPhysicsJoint”,OP打算做他们的研究)。我会改进的。