gpt4 book ai didi

ios - 使用 SpriteKit 场景编辑器设计复杂的对象

转载 作者:行者123 更新时间:2023-11-28 06:03:47 27 4
gpt4 key购买 nike

据我所知,场景编辑器中没有添加物理关节的方法。是吗?

考虑一个简单的人对象,它有一个 body 、 child 的腿和 ARM ,带有销关节。如果我想在场景编辑器中设计这个人,然后以编程方式将他添加到场景中,我不会走得太远。我能够找到场景中的节点,将它们从父节点中移除,并将它们作为子节点添加到场景中的新位置,但我仍然必须手动指定它们的所有关节。

想法?

最佳答案

这是我的解决方案。我仍然希望有一种方法可以使用场景编辑器创建物理关节,但我还没有找到...

第 1 步)将所有子节点添加到场景中,确保对象按父节点分组。

Parent Node Location

第 2 步)为您的复杂节点定义一个 swift 类。

class MyNode : SKSpriteNode {     
func spawn(parentNode: SKNode, position: CGPoint) {
parentNode.addChild(self) // before physics joints
let arm = self.childNode(withName:"arm")
// note if you didn't add physics bodies in scene file
// do that first
let shoulders = SKPhysicsJointPin.joint(withBodyA:self.physicsBody!, bodyB: arm.physicsBody!, anchor: CGPoint(x:position.x,y:position.y-1))

scene!.physicsWorld.add(shoulders)

// feature of pulling a child from a scene, it's always paused by default.
self.isPaused = false
}
}

为场景中的 body 节点设置类。

Custom Class

第 3 步)在初始时间将您的节点转移到您的游戏场景。

let tmpScene = SKScene.init(fileNamed: "MyNode.sks")
var myNode = tmpScene.childNamed(withName:"myNode") as! MyNode
myNode.removeFromParent()
myNode.spawn(world, position) // or your own parent and position as needed for your scene

关于ios - 使用 SpriteKit 场景编辑器设计复杂的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48795204/

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