首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKSpriteNode子类:删除所有关节的方法

SKSpriteNode子类:删除所有关节的方法
EN

Stack Overflow用户
提问于 2014-12-25 17:29:01
回答 1查看 889关注 0票数 7

我已经创建了一个SKSpriteNode子类。我将该类的实例与SKPhysicsJointLimit类型的连接连接起来。我在我的didEndContact(联系人: SKPhysicsContact)的GameScene中这样做:

代码语言:javascript
复制
var joint = SKPhysicsJointLimit.jointWithBodyA(contact.bodyA, bodyB: contact.bodyB, anchorA: pos1!, anchorB: pos2!)
self.physicsWorld.addJoint(joint)

到目前为止效果很好。然后,我想把节点从关节中释放出来。According to the SKPhysicsBody docs there is a property called "joints" which is an array holding SKPhysicsJoint objects. --我认为这正是我所需要的,但是我无法迭代一个实例的接口,并将它们从physicsWorld中删除。为了完成这项工作,我向我的自定义SKSpriteNode子类添加了一个方法。

代码语言:javascript
复制
func freeJoints(world: SKPhysicsWorld){
        if let joints = self.physicsBody?.joints {
            for joint in joints{
                println("found a joint: \(joint)")
                // example print:
                //found a joint: <PKPhysicsJointRope: 0x7fbe39e95c50>
                world.removeJoint(joint as SKPhysicsJoint)
            }
        }
    }

在println()语句和消息"Swift动态强制转换失败“之后调用该方法失败。我非常感谢你对如何使用SKPhysicsBody的共同财产的意见。更具体地说:如何使用(cast?)数组中的项,以便能够从场景的SKPhysicsWorld中删除它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-26 00:47:18

我花了更多时间调查这件事。这就是我想出来的:

我决定在我的SKSpriteNode子类中添加一个属性,并自己管理连接。

代码语言:javascript
复制
    var joints: [SKPhysicsJointLimit]
override init(){
    ...
    self.joints = []
    ...
}

每次我向场景的SKPHysicsWorld添加一个连接时,我也会将它添加到SKNNode本身的joints数组中。当迭代SKPHysicsBody的cast失败(参见问题)时,我想将它转换为SKPhysicsJoint,当迭代SKPhysicsJointLimit项数组时,从物理世界中移除项的工作原理如下:

代码语言:javascript
复制
func freeJoints(world: SKPhysicsWorld){
        for item in self.joints{
            println("removing item from physics world \(item)")
            world.removeJoint(item)
        }
        self.joints.removeAll(keepCapacity: false)
    }
}

这似乎不是最优雅的工作方式,因为已经有一个框架管理数组,承诺是相同的事情。但我无法利用它,这是暂时可行的。

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

https://stackoverflow.com/questions/27649362

复制
相关文章

相似问题

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