SCNPhysicsBehavior - BallSocketJoint - 更改参数

问题描述 投票:0回答:0

我仍在写我的 Ship-in-a-Cave 游戏,但仍然面临问题,尤其是 SceneKit。 我希望这艘船能够实现的一项功能是绕着岩石移动。 以力-射线-连接的方式,在船移动的同时,将岩石附着在船上并左右摆动。 我发现了 ScnKit 提供的 PhysicsBehaviors,而“BallSocketJoint”正是我想要的。 我发现我需要在所有节点所在的同一场景中设置 Behavior(bodyA、anchorA、bodyB 和 anchorB 以及“Joint”作为容器),然后从 GameViewController 激活它。 到目前为止所有这些都工作正常,除了似乎不可能修改这些参数,例如当我想改变两个物体的距离时。 我想到了类似的东西

(self.sceneView.scene as!MainScene).Joint.anchorB = vector with new 距离

应该这样做,但我被告知 SCNPhysicsBehavior 没有成员“anchorB”。

有谁知道我如何解决锚向量(甚至更改主体引用)? 有可能吗?

在主场景中,设置行为:

self.Joint = SCNPhysicsBallSocketJoint( anchorA: SCNVector3(x:0, y:0, z:0) bodyB: rockNode.physicsBody!, anchorB: SCNVector3(x:0, y:-6, z:0), bodyA: shipNode.physicsBody!),

后面添加到场景中的行为:

self.sceneView.scene?.physicsWorld.addBehavior((self.sceneView.scene 作为!主场景)。关节)

一切正常,但无法更改“关节”的参数,就像我之前写的那样

(self.sceneView.scene as!MainScene).Joint.anchorB = whatever.

因为 PhysicsBehavior 没有成员‘anchorB’。

问题是:我知道在模拟运行时更改参数可能很复杂(也就是说,在我将行为添加到场景之后)。 我只想知道如何在行为运行之前访问变量。这可能只是处理这些变量(类?)的常用方法,我还没有学会?!

ios swift scenekit game-physics
© www.soinside.com 2019 - 2024. All rights reserved.