gpt4 book ai didi

ios - 一种应用 zRotation 以便它相应地影响 SKPhysicsBody 的方法?

转载 作者:技术小花猫 更新时间:2023-10-29 10:48:42 25 4
gpt4 key购买 nike

假设我有一个代表车轮的 SKSpriteNode,并成功附加了一个圆形 SKPhysicsBody。显然,该类型是横向滚动的 2d 汽车驾驶游戏/模拟器。

我想要的是自己计算所有的电机内物理,而不是完全求助于 SpriteKit 物理引擎。我想完全控制电机、离合器、变速器等的机械结构,一直到驱动轮的 RPM。

不过,从那时起,我很乐意将控制权交给 SpriteKit 物理引擎,然后它会计算当旋转的驱动轮接触路面时会发生什么。无论情况如何,汽车都会前进、减速、加速和/或车轮打滑。

计算力学以获得车轮转速是没有问题的。我只是不确定如何从那里继续。

我可以简单地通过在 update: 方法中应用 zRotation 来旋转轮子,如下所示:

self.rearWheelInstance.zRotation += (self.theCar.wheelRPS/6.283 * timeSinceLastUpdate); // revolutions / 2pi = radians

这样我就可以应用我之前计算出的精确每千次展示收入。明显的缺点是,SpriteKit 的物理引擎完全忽略了这种旋转。就其所知,车轮从一个阶段瞬移到下一个阶段,因此它不会与路面产生摩擦,也不会与其他 SpriteKit 物理体产生任何其他交互。

另一方面,我可以对车轮施加扭矩:

[self.rearWheelInstance.physicsBody applyTorque: someTorque];

或角脉冲:

[self.rearWheelInstance.physicsBody applyAngularImpulse: someAngularImpulse];

这确实以 SpriteKit 物理引擎理解的方式旋转轮子,从而使其与周围环境正确交互。

但是除非我遗漏了一些明显的东西,否则这会将车轮视为独立于曲轴、变速箱或驱动轴 RPM 的“自由滚动物体”。但实际上,除了通过传动系统传输到车轴的转速外,车轮没有“选择”以任何其他转速滚动(除非变速器处于空档,离合器踏板踩下或离合器打滑,但那些完全是另一个故事)。

所以:1) 我是否能够以 SpriteKit 物理引擎“理解”为旋转运动的方式以某种方式操纵 zRotation?

2) 我的逻辑是否有明显的缺陷表明这不是我一开始就应该尝试的?如果是这样,您能否指出缺陷,以便我采取更好的做法?

最佳答案

简单的答案,将 2d UI 设置(如位置和 zRotation)与动态物理系统混合不会像您注意到的那样获得您想要的结果。如您所述,您需要使用物理模拟的各个部分,例如冲量和角动量。

也可能对您有所帮助的两 block 拼图是:

Physics Joints - 这些可以做一些事情,比如将轮子连接到轴上,以便它可以自由旋转,设置旋转限制,但仍然对其施加旋转力。

Dynamically Adjusting Physics Properties - 例如在用户踩下刹车时增加摩擦力、角度阻尼或向车轴增加负加速度。

关于ios - 一种应用 zRotation 以便它相应地影响 SKPhysicsBody 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31997488/

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