【问题标题】:Physics forces not affecting dynamic body Scenekit物理力不影响动态主体 Scenekit
【发布时间】:2014-09-18 13:46:56
【问题描述】:

我的场景包含;
场景根部的静态物体

_firstNode = [[SCNNode alloc] init];
_firstNode.position = SCNVector3Make(0, 0, 0);
_firstNode.geometry = [SCNSphere sphereWithRadius:950];
_firstNode.geometry.firstMaterial.diffuse.contents = [UIColor greenColor];
_firstNode.physicsBody = [SCNPhysicsBody staticBody];
 [[scene rootNode] addChildNode:_firstNode];  

一个动态体,其轴属性位于 (0,-1000,0) 处,SCNAction 使其围绕静态体永久旋转。

_secondNode = [[SCNNode alloc] init];
_secondNode.position = SCNVector3Make(0, 0, 0);
_secondNode.pivot = SCNMatrix4MakeTranslation(0, -1200, 0);
_SecondNode.physicsBody = [SCNPhysicsBody dynamicBody];
_secondNode.geometry = [SCNSphere sphereWithRadius:2];
_secondNode runAction:[SCNAction repeatActionForever:[SCNAction rotateByX:-1 y:0 z:0 duration:10.0]]];
[[scene rootNode] addChildNode:_secondNode];

当我尝试申请时;

[_secondNode.physicsBody applyTorque:SCNVector4Make(0, 1, 0, 1) impulse:YES];

对节点没有任何影响,就好像它被声明为静态体一样。

【问题讨论】:

  • 你想让 _secondNode 围绕它自己的轴旋转吗?
  • SCNAction 正在围绕它的 X 轴旋转 _secondNode,我正在尝试使用物理扭矩脉冲在动作继续时围绕它的 Y 轴旋转

标签: ios game-physics scenekit


【解决方案1】:

如果我正确阅读了您想要的内容,请将您的第二个节点设置为...

_secondNode.position = SCNVector3Make(0,-1200,0);

这将从 firstNode 开始设置它

然后像这样设置它的轴心点...

_secondNode.pivot = _firstNode.pivot;

这会将枢轴设置为与您的 firstNode 相同的点,并允许它围绕该点旋转。这仅在您的 firstNode 枢轴属性未更改时才有效。

最后像这样设置你的动作......

SCNAction rotateByX:M_PI*2 y:0 z:0 duration:10.0

注意到我将您的 x 设置更改为等于 360 度的 M_PI*2。您可以使用“-M_PI”以相反的方式旋转。

【讨论】:

  • 通过添加physicsShape,脉冲现在正在影响节点。然而,这有些偏离了支点,让我不知道为什么。使用上面的代码,节点现在默认为 (0,1200,0)。
  • 我在上面修改了我的答案。让我知道这是否有效!
  • 这会导致 _secondNode 原地旋转,因为 _firstNode.pivot 将通过 (0,0,0)。我已经打开了您评论过的新问题,因为现在的问题是两个物体如何相互作用而不是物理学不起作用。
【解决方案2】:

对于物理模拟节点需要分配一个physicsShape,这是通过;

_secondNode.physicsBody.physicsShape = [SCNPhysicsShape shapeWithGeometry:[SCNSphere sphereWithRadius:2] options:nil];

【讨论】:

    猜你喜欢
    • 2015-10-14
    • 2015-10-13
    • 2017-06-10
    • 2018-06-20
    • 2014-12-03
    • 2012-12-09
    • 2015-03-09
    • 2016-07-16
    • 1970-01-01
    相关资源
    最近更新 更多