问题标签 [skphysicsjoint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
454 浏览

xcode - SKPhysicsJoint 在似乎不正确的坐标处加入

在我的简单射箭游戏中,我定义了一个箭头节点和一个目标节点以及关联的物理实体。

当我尝试使用 SKPhysicsJointFixed (我也尝试过其他类型)将它们连接在一起时,该行为是不准确的,因为在实际命中目标节点之前似乎在随机点创建了关节。

我玩过摩擦和恢复值以及 SKShapeNode(带有 CGPath)和 SKSpriteNode(带有围绕精灵的矩形)来定义目标,但两者都出现了问题。

仅使用碰撞时,箭头会从目标的正确位置反弹,这似乎没问题。只有当连接发生时,结果才会在屏幕上变得随机,通常距离目标节点“表面”10-20 个点。

0 投票
1 回答
1281 浏览

ios - 如何使用 SKPhysicsJointFixed 加入两个 SKSpriteNode

当我尝试使用 SKPhysicsJointFixed 加入两个 SKSpriteNode 时,它​​们会分开,就好像根本没有连接一样。我所做的一切似乎都不起作用。这是我的代码...

提前致谢。

0 投票
1 回答
283 浏览

ios - SKPhysicsJoints 可以在滚动 SpriteKit 游戏中使用吗?

这似乎是 Apple 的一个重大疏忽,但由于 SKPhysicsJoints 的锚点设置在场景坐标中,这使得任何类型的滚动游戏都变得不可能。

要在 SpriteKit 中模拟相机,您需要创建一个包含所有游戏元素的 WorldNode,然后在场景中平移。不幸的是,这样做会导致游戏中每个对象的场景坐标在您平移世界时每帧都发生变化。反过来,这打破了联合锚点,事情变得疯狂。

甚至没有办法改变关节的锚点,所以我什至没有办法只更新每一帧的坐标。在滚动游戏中使用 SKPhysicsJoint 似乎不是一种选择。

有谁知道解决这个问题的方法?

0 投票
1 回答
102 浏览

ios - 为什么我的 SKSprite 在连接到 SKPhysicsJointPin 时对碰撞没有反应?

在下图中,您可以看到 3 个精灵,它们都附有 SKPhysicsBodies。红色圆圈是一个旋转点,蓝色矩形是一个“桨”,它通过 SKPhysicsJointPin 连接到旋转上。桨正常工作。重力使它来回摆动,如果我在该区域有其他场地,它们也会导致桨摆动。

但是,不起作用的一件事是碰撞。如果绿球碰到球拍,绿球会从球拍上反弹,但球拍完全没有任何作用。球作为质量 = 1.0,我将球拍设置为质量 = 0.1,所以球在撞击球拍时应该有非常明显的效果。

我错过了什么?

红色 = 铰链,蓝色 = 桨,绿色 = 球

0 投票
1 回答
633 浏览

ios - SKPhysics:做了一根绳子,为什么会断?

我一直在尝试使用 sprite kit,为我的想法构建原型。我一直在使用 SKPhysicsJointPin 将一串物理体连接在一起,以制作绳索(实际上更像是自行车链条,但已经足够好了)。场景中还有许多球,当我点击它们时,我可以放下它们。这导致以下情况:

一些球的场景

但是,当我丢更多球时,链条似乎无法处理它,并且“断裂”:

有更多球和断链的场景

这是一部展示这种现象的电影

发生了什么?该文档从未暗示 SKPhysicsJointPin 具有有限的最大强度或弹性或类似情况。这是精灵套件中的“错误”,还是我使用了错误的方法?

0 投票
2 回答
168 浏览

sprite-kit - 如何让 SKPhysicJoint -addJoint 在后台线程上工作

我正在尝试在后台线程上加载和初始化我的场景,以便它在加载时不会暂停 4 秒。它工作得很好,有一个例外:我无法让 SKPhysicsJointPin -addJoint 工作 - 它每次都会崩溃,但前提是它在线程上被调用。

关节设置如下:

我正在像这样进行后台加载:

就像我说的那样,一切都很好,除了每次都会崩溃的调用,但只有在线程上时才会崩溃。

0 投票
2 回答
132 浏览

ios - 创建一个延伸的“绳子”

我正在尝试使用 SpriteKit 制作一个游戏,其中主角射击“绳子”并在关卡中摆动(想想蜘蛛侠)。我制作绳索并将其连接到玩家和不同的精灵上没有问题,但我真的不知道如何进行“射击”部分。

我目前的绳索与此类似(https://www.youtube.com/watch?v=7jWdcbmnmKQ&hd=1),其中我有几个单独的部分使用SKPhysicsJointPin. 我尝试了几种不同的方法来射击绳索,都使用applyImpulse/ForceSKActions,但没有一个能顺利进行。

总结一下:
- 创建可以在特定方向延伸的绳索的最佳实践是什么?

我对正确方向的一般指针很好,因为这都是要学习的,我认为我真的不需要完整的代码。

0 投票
2 回答
980 浏览

sprite-kit - 当 shouldEnableLimits 为 true 并且设置了 lowerAngleLimit 和 upperAngleLimit 时,SKPhysicsJointPin 的行为不正确

我目前有一个布娃娃图,它由一个父节点(没有附加物理体)和许多子节点组成,每个子节点都由一个圆形体组成。这些圆圈使用SKPhysicsJointPin每个圆圈之间的一个相互连接,如下所示:

布娃娃图

每个SKPhysicsJointPin都有shouldEnableLimits = true,我目前分别为lowerAngleLimit和使用 -0.05 和 0.05 的值upperAngleLimit

这很有效,并且可以防止形状过度变形,除非整个图形上下颠倒,在这种情况下,所有关节都会突然尝试收缩,如下所示:

破碎的布娃娃图

当人物完全颠倒时,关节会很快收缩。当他再次旋转回来时,所有关节都恢复正常。为什么会这样?如何保持关节的正确角度?

编辑1:

我只是尝试用 Objective-C 重写项目,以防它是由于一些奇怪的 Swift 错误造成的;事实证明,这个问题仍然在 Objective-C 中表现出来,所以我删除了 Swift 标签。

目前我最好的猜测是,当它们附着的物体在任一方向上旋转超过 180° 时,SpriteKit 会错误地计算关节相对于世界的角度,因此错误的角度被传递给底层 Box2D 关节。

我不确定我是否应该不断更新上下角度限制以匹配他们身体的世界角度,但我似乎不必这样做,因为当身体非常接近倒置时关节停止正常工作。无论如何,我会继续尝试……</p>

编辑2:

我现在相当确定问题的发生是因为 SpriteKit 正在(我猜有充分的理由)修改该zRotation值以使其保持在 -180° 和 180° 之间。例如,如果节点顺时针旋转并达到 -180°,SpriteKit 会自动将其值回绕到 +180°。我相当有信心这种环绕会导致关节行为不正常,我只需要弄清楚如何抵消它......</p>

编辑3:

我已经上传了演示此问题的示例应用程序(包括视频),正如 Apple 最初要求的那样:Xcode Project / Video

0 投票
0 回答
221 浏览

sprite-kit - SKPhysicsJointPin 限制角色倒置时的故障

我现在正在使用两个物理体创建踢腿运动;身体和腿。我使用销接头连接两个身体,应用角度限制来限制腿部运动,并施加扭矩脉冲来踢腿。一切正常。

然而,我的角色也有跳跃的能力(只是通过向身体施加向上的冲动),这似乎对我的销关节的极限造成了问题。当角色倒置时,限制开始出现故障,特别是当角色的 zRotation 在 PI 和 -PI 之间移动时,即直接倒置的任一侧。

这看起来很奇怪,因为当以正确的方式站立时,关节限制效果很好。SKPhysicsJointPin有没有人在使用设置了限制的对象时遇到过类似的问题?

为了完整起见,物理实体是简单bodyWithRectangleOfSize:的实体,腿节点是实体节点的子节点(因此随之旋转),这就是我设置销关节的方式:

0 投票
2 回答
194 浏览

objective-c - SpriteKit iOS8 不同的物理行为

我注意到物理学中有不同的行为,例如:

我已经为链编写了带有许多 SKSpriteNode 和 SKPhysicsJointLimit 的绳索。最后,我将两个 SKPhysicsJointSpring 附加到两个禁用物理的 SKSpriteNode。

在 iOS7 上,它就像一个魅力,在 iOS8 中,绳子上有一些“扭曲”。这些是图片,小方块只是一个触摸关节,大矩形只是一个触发器。

在 iOS8 中,您可以看到糖果周围出现“U”形扭曲,但在 iOS7 中则没有。为什么?

iOS7 启动器http://i.imgur.com/yRt6UfB

iOS8 启动器http://i.imgur.com/WE3Esuu