Ios SceneKit如何在不同高度的地形上移动角色
我正在制作一个场景,场景中有一个角色和一个带楼梯的平台。角色必须在楼梯上下移动并从平台上跳下: 我通过虚拟d-pad移动角色。我正在寻找移动角色的正确方法。现在我有两种方法,每种都有它的优点和缺点: 第一种方法:射线测试。这种方法非常有效:我可以在楼梯上下移动角色,但是如果我在垫子附近有很多物体,我想跳,我需要做很多光线测试 第二种方式:移动角色的物理体。使用这种方式,我无法理解如何将角色下楼。每次看起来都像是从楼梯上跳下来Ios SceneKit如何在不同高度的地形上移动角色,ios,swift,scenekit,Ios,Swift,Scenekit,我正在制作一个场景,场景中有一个角色和一个带楼梯的平台。角色必须在楼梯上下移动并从平台上跳下: 我通过虚拟d-pad移动角色。我正在寻找移动角色的正确方法。现在我有两种方法,每种都有它的优点和缺点: 第一种方法:射线测试。这种方法非常有效:我可以在楼梯上下移动角色,但是如果我在垫子附近有很多物体,我想跳,我需要做很多光线测试 第二种方式:移动角色的物理体。使用这种方式,我无法理解如何将角色下楼。每次看起来都像是从楼梯上跳下来 那么,在不同高度的地形上移动角色的正确方法是什么呢?要在不同高度的地
那么,在不同高度的地形上移动角色的正确方法是什么呢?要在不同高度的地形上移动角色,您应该使用。要了解更多信息,只需观看WWDC 2015(时间17:30),并查看游戏示例中的代码 下面是如何使用冲突的代码片段:
private func loadCharacter() {
let scene = SCNScene( named: "Art.scnassets/character/max.scn")!
model = scene.rootNode.childNode( withName: "Max_rootNode", recursively: true)
model.simdPosition = Character.modelOffset
characterNode = SCNNode()
characterNode.name = "character"
characterNode.simdPosition = Character.initialPosition
characterOrientation = SCNNode()
characterNode.addChildNode(characterOrientation)
characterOrientation.addChildNode(model)
let collider = model.childNode(withName: "collider", recursively: true)!
collider.physicsBody?.collisionBitMask = Int(([ .enemy, .trigger, .collectable ] as Bitmask).rawValue)
let (min, max) = model.boundingBox
let collisionCapsuleRadius = CGFloat(max.x - min.x) * CGFloat(0.4)
let collisionCapsuleHeight = CGFloat(max.y - min.y)
let collisionGeometry = SCNCapsule(capRadius: collisionCapsuleRadius, height: collisionCapsuleHeight)
characterCollisionShape = SCNPhysicsShape(geometry: collisionGeometry, options:[.collisionMargin: Character.collisionMargin])
collisionShapeOffsetFromModel = float3(0, Float(collisionCapsuleHeight) * 0.51, 0.0)
}