Sprite kit 发射时坠毁,与SKP发生错误

Sprite kit 发射时坠毁,与SKP发生错误,sprite-kit,nodes,game-physics,skphysicsbody,Sprite Kit,Nodes,Game Physics,Skphysicsbody,我正在创建一个游戏,我正在尝试创建一个具有两个不同节点的角色,腿和躯干。我试着用一个固定的关节把它们连接起来,但是当我这样做的时候,躯干有时会在走动的时候从腿上滑下来。现在,我正尝试使用两个节点之间的距离限制来创建角色,希望它们现在不会彼此滑动,但是在启动时会不断崩溃。有什么想法吗? 这是我的密码 func CreateHero (){ soldierLegs.position = CGPoint(x: 405 , y: 139) soldierLegs.zPosition =

我正在创建一个游戏,我正在尝试创建一个具有两个不同节点的角色,腿和躯干。我试着用一个固定的关节把它们连接起来,但是当我这样做的时候,躯干有时会在走动的时候从腿上滑下来。现在,我正尝试使用两个节点之间的距离限制来创建角色,希望它们现在不会彼此滑动,但是在启动时会不断崩溃。有什么想法吗? 这是我的密码

func CreateHero (){

    soldierLegs.position = CGPoint(x: 405 , y: 139)
    soldierLegs.zPosition = 1
    soldierLegs.anchorPoint.x = 0.6
    soldierLegs.anchorPoint.y = 0.7

    let soldierLegsBody:SKPhysicsBody = SKPhysicsBody(rectangleOfSize: 
    soldierLegs.size)
    soldierLegsBody.dynamic = true
    soldierLegsBody.affectedByGravity = true
    soldierLegsBody.allowsRotation = false
    //body.restitution = 0.4
    soldierLegsBody.categoryBitMask = BodyType.soldierL.rawValue
    soldierLegsBody.contactTestBitMask = BodyType.enemy1.rawValue | 
    BodyType.enemy2.rawValue | BodyType.enemy3.rawValue  | 
    BodyType.desertForegroundCase.rawValue
    soldierLegs.physicsBody = soldierLegsBody

    soldierTorso.position = soldierLegs.position
    soldierTorso.zPosition = 2
    soldierTorso.anchorPoint.x = 0.25
    soldierTorso.anchorPoint.y = 0.1

    let soldierTorsoBody:SKPhysicsBody = SKPhysicsBody(rectangleOfSize: 
    soldierTorso.size)
    soldierTorsoBody.dynamic = true
    soldierTorsoBody.affectedByGravity = true
    soldierTorsoBody.allowsRotation = false
    soldierTorsoBody.categoryBitMask = BodyType.soldierT.rawValue
    soldierTorsoBody.contactTestBitMask = BodyType.enemy1.rawValue | 
    BodyType.enemy2.rawValue | BodyType.enemy3.rawValue  | 
    BodyType.desertForegroundCase.rawValue
    soldierTorso.physicsBody = soldierTorsoBody

    let Joint = 
    SKPhysicsJointLimit.jointWithBodyA(soldierLegs.physicsBody!, bodyB: 
    soldierTorso.physicsBody!, anchorA: soldierLegs.position, anchorB: 
    soldierTorso.position)

    Joint.maxLength = 0.01

    self.addChild(soldierTorso)
    self.addChild(soldierLegs)
    self.physicsWorld.addJoint(Joint)

}

根据苹果公司的说法:

创建限制关节

class func joint(withBodyA: SKPhysicsBody, bodyB: SKPhysicsBody, anchorA: CGPoint, anchorB: CGPoint)
创建新的限制关节

anchorA 场景坐标系中第一个实体上的连接点

主播 场景坐标系中第二个实体上的连接点

在你的情况下,anchorA等于anchorB(同一点),没有限制,这一点会导致崩溃。

根据苹果的说法:

创建限制关节

class func joint(withBodyA: SKPhysicsBody, bodyB: SKPhysicsBody, anchorA: CGPoint, anchorB: CGPoint)
创建新的限制关节

anchorA 场景坐标系中第一个实体上的连接点

主播 场景坐标系中第二个实体上的连接点


在您的情况下,anchorA等于anchorB(同一点),没有限制,这一点会导致碰撞。

如何创建关节限制?我认为设置joint.maxLength值可以设置距离限制。你建议我如何设定限额@亚历山德罗登没有给出相同的分数,而是给出了不同的分数,并且给出了a和B之间的合理距离,这样它们就不会相互重叠。您可以打开skView.showsPhysics,以便查看所需的距离。如何创建关节限制?我认为设置joint.maxLength值可以设置距离限制。你建议我如何设定限额@亚历山德罗登没有给出相同的分数,而是给出了不同的分数,并且给出了a和B之间的合理距离,这样它们就不会相互重叠。您可以打开skView.showsPhysics,以便查看所需的距离。。