gpt4 book ai didi

arkit - 我试图将 physicsBodyComponet 提供给 modelEntity,但它只是落在了深处

转载 作者:行者123 更新时间:2023-12-04 04:09:11 25 4
gpt4 key购买 nike

在 reality kit 上,我尝试将 physicsBodyComponent 提供给 modelEntity。

但是当我将 modelEntity 放到现实世界中时,它就掉下来了。

有办法解决这个问题吗?

最佳答案

您需要使用 PhysicsBodyComponent 创建地板网格:

let floor = ModelEntity(mesh: .generateBox(size: [1000, 0, 1000]), materials: [SimpleMaterial()])
floor.generateCollisionShapes(recursive: true)
if let collisionComponent = floor.components[CollisionComponent] as? CollisionComponent {
floor.components[PhysicsBodyComponent] = PhysicsBodyComponent(shapes: collisionComponent.shapes, mass: 0, material: nil, mode: .static)
floor.components[ModelComponent] = nil // make the floor invisible
}
scene?.addChild(floor)

然后,当你加载你的实体时,你还给它们一个 PhysicsBodyComponent(它们需要一个非零的 mass,否则它们无论如何都会掉下来,这是很长一段时间我都没有想到什么):

var loadModelCancellable: AnyCancellable? = nil
loadModelCancellable = Entity.loadModelAsync(named: modelUri)
.sink(receiveCompletion: { _ in
loadModelCancellable?.cancel()
}, receiveValue: { entity in
entity.generateCollisionShapes(recursive: true)

if let collisionComponent = entity.components[CollisionComponent] as? CollisionComponent {
entity.components[PhysicsBodyComponent] = PhysicsBodyComponent(shapes: collisionComponent.shapes, mass: 1, material: nil, mode: .dynamic)
}

scene.addChild(entity)
loadModelCancellable?.cancel()
})

最后,在我的项目中添加物理学对我试图做的事情产生了太多意想不到的后果(只是防止模型重叠),比如模型相互插入,以及需要完全重做的 Action ,......所以我没有比这更进一步,但至少这应该让你向你的模型添加物理学,而不会使它们无限期地从重力下落。

关于arkit - 我试图将 physicsBodyComponet 提供给 modelEntity,但它只是落在了深处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62037919/

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