三维物体的交互问题。我发现了RealityKit的一些贝塔函数,如PhysicsBodyComponent、applyImpulse、addForce、applyAngularImpulse等等。
我试图在物体“花瓶”中加入物理特性,并在事件发生时产生一种冲动--点击或类似的东西。
这真的很奇怪,在执行命令之后,物理特性被添加到正常的同时,脉冲和力没有被添加到对象中(参见下面的调试输出)。
调试打印输出:
Optional(RealityKit.PhysicsBodyComponent(mode: RealityKit.PhysicsBodyMode.dynamic,massProperties: RealityKit.PhysicsMassProperties(质量: 0.2,惯性: SIMD3(0.1,0.1,0.1),centerOfMass:(位置: SIMD3(0.0,0.0,0.0),方位:simd_quatf(实: 1.0,imag: SIMD3(0.0,0.0,0.0),材料: RealityKit.PhysicsMaterialResource,isTranslationLocked:(x: false,y: false,z: false),isRotationLocked:(x: false,y: false,z: false),isContinuousCollisionDetectionEnabled: false,间接器: false,userForce: SIMD3(0.0,0.0,0.0),userTorque: SIMD3(0.0,0.0,0.0),userLinearImpulse: SIMD3(0.0,0.0,0.0),userAngularImpulse: SIMD3(0.0,0.0,0.0)) 5 Optional(RealityKit.PhysicsBodyComponent(mode: RealityKit.PhysicsBodyMode.dynamic,massProperties: RealityKit.PhysicsMassProperties(质量: 0.2,惯性: SIMD3(0.1,0.1,0.1),centerOfMass:(位置: SIMD3(0.0,0.0,0.0),方位: simd_quatf(real: 1.0,imag: SIMD3(0.0,0.0,>0.0),材料: RealityKit.PhysicsMaterialResource,isTranslationLocked:(x: false,y: false,z: false),isRotationLocked:(x: false,y: false,z: false),isContinuousCollisionDetectionEnabled: false,间接器: false,userForce: SIMD3(0.0,0.0,0.0),userTorque: SIMD3(0.0,0.0,0.0),userLinearImpulse: SIMD3(0.0,0.0,0.0),userAngularImpulse: SIMD3(0.0,0.0,0.0))
正如我们所看到的,函数不会给物体“花瓶”增加冲动和力量。也许我做错了什么。
发布于 2019-07-30 18:48:24
我认为您不应该直接创建ModelEntity
实例。我认为这是Entity
类的内部组件,仅表示网格。您可以使用RealityKit
中的组件直接增强交互/动画。这些方法适用于整个实体对象。我认为它类似于如果您创建一个金属视图,您需要它支持一个核心动画层,以获得访问用户交互。
如果您看一下SwiftStrike样本应用,它们不会直接实例化ModelEntity
,这使我相信,创建Entity
对象之外的ModelEntity
并不是最佳实践。
我相信你会通过Reality Composer将你的花瓶添加到这个项目中。你可以把材料和碰撞应用到那里。您也可以添加行为,如响应触摸。然后,您可以通过Xcode中的reality composer文件访问花瓶,并将组件添加到vase实体中,从而转换其位置。所有实体都有一个转换组件,这是文档化的这里。
RealityKit的设计似乎是为了尽可能多地将代码从程序员身上抽象出来,因此许多底层体系结构并没有真正公开或记录下来。它也不是我组织它的方式,但我对实体组件设计模式不太熟悉。
如果您不喜欢RealityKit的布局方式,您也可以选择使用SceneKit作为呈现器。这并不能抽象出更多的功能,并允许您直接在对象上使用核心动画命令。
https://stackoverflow.com/questions/56932621
复制相似问题