问题标签 [skphysicsworld]

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 投票
2 回答
346 浏览

objective-c - 如何通过使用 applyImpulse 遵循自定义贝塞尔路径将节点从 A 点移动到 B 点

我希望能够通过使用 SKPhysicsBody 的 applyImpulse 方法通过自定义贝塞尔路径将节点从 A 点移动到 B 点。我想使用 applyImpulse 的原因是因为它根据初始脉冲模拟了一个很好的自然运动(快速开始和减速)。似乎当一个对象通过 applyImpulse 施加脉冲时,它只会在与环境的摩擦导致其速度降低到零时才会停止。我希望它跟随我的路径并在最后停下来。我该怎么办?

0 投票
2 回答
1142 浏览

ios - 设置physicsBody类别位掩码值

我在我的代码中声明了各种位掩码类别,如下所示:

使用这些类别,我的游戏运行良好。

但是,各种示例项目和教程定义位掩码值,如下所示:

问题

为什么使用这种方法(按位移位)来声明这些值?此外,哪种方法最适合声明这些值以及在联系委托中比较它们?

0 投票
2 回答
1015 浏览

ios - SpriteKit FPS 低,PhysicsBody 碰撞

在我的 SpriteKit 游戏中,我有许多随机排列的图块节点 (>100),我需要能够检测图块和角色节点之间的碰撞。为此,我使用 SKPhysicsBody。

我发现如果我启用 SKPhysicsBody 代码,我的帧速率会下降到 40fps 左右,但如果我注释掉代码,它会上升到 60fps。我想这与试图为每帧 100 多个节点模拟物理的引擎有关……有没有办法可以防止这种情况发生但仍能检测到我的角色和瓷砖之间的碰撞?

对于瓷砖物理,我对瓷砖使用以下代码:

对于我的角色:

0 投票
1 回答
294 浏览

ios - 无法缩放/缩放带有附加 SKPhysicsJoints 的 SKSpriteNode

我希望能够在我的游戏中“放大”和缩小,但是当我缩放父“世界”SKNode 时,关节不会相应地缩放,因为它们必须添加到 SKScene(这是根节点) .

改变 SKScene 的大小是可行的,但是我作为孩子的任何 HUD 图形都会随之缩放。

我曾考虑将我的 HUD 创建为 SKView 的子项,但这似乎与 Apple 的建议背道而驰。我也失去了使用 SKScene 转换的好处,并最终转而处理大量的 ViewController。

关于如何缩放 SKSpriteNode 并使其关节随之缩放的任何建议?

0 投票
1 回答
385 浏览

sprite-kit - 在 Sprite Kit 中暂停 SKPhysicsWorld

这是我的pause方法:

...在self哪里SKScene

我包含第二行的原因是我注意到当取消暂停时,我所有启用物理的节点都立即向前跳跃,就好像尽管场景暂停,物理仍然在后台继续运行。

不幸的是,这并不能解决问题。

如何暂停 SKScene 和 SKPhysicsWorld,以便在取消暂停时,物理模拟从中断的地方开始?

0 投票
1 回答
709 浏览

ios - bodyWithBody SKPhysicsBody

Apple 的文档在解释如何有效实现此类方法时含糊其辞

2014-04-23 23:25:21.520 Space Monkey[3398:60b] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[SKSpriteNode _shapes]:无法识别的选择器发送到实例 0x15d79c50”*第一次抛出调用堆栈: (0x2d92ef03 0x380c3ce7 0x2d932837 0x2d93112f ... 它抛出异常,我几乎到处都没有运气进行研究。关于同一问题还有另一个问题在这里但是这些建议似乎根本不起作用。我已经提供代码是为了让某人了解并希望指导我正确...这是代码

我希望我包含了足够的细节和我的代码片段,所以希望有人会帮助我和其他人也来。先感谢您。

0 投票
2 回答
641 浏览

objective-c - 在 SKPhysicsBody Collisions 中停止减速

在我的SpriteKit项目中,我正在学习使用美妙的内置物理引擎。我通过使用SKPhysicsBody附加到节点的实例来实现这一点,到目前为止效果很好。我当前的设置是当我添加一个节点时,我将它physicsBodyvelocity向量设置为某个恒定的速度。尽管手动将速度设置为某个固定值,但在节点碰撞几秒钟后,它们的速度会降低。我认为这是默认特性,因为它模拟了现实生活中的物理(通过多次碰撞造成的能量损失)。我想停止这种行为。例如,我希望尽管有无数次碰撞,但所有能量都可以完美“保存”并且没有速度损失。以下是我尝试过的一些无济于事的事情。

  1. physicsBody.linearDamping = 0;
  2. physicsBody.friction = 0;

这甚至是一个physicsBody属性,还是这种行为源于SKScene'属性上的一个physicsWorld属性?

0 投票
1 回答
519 浏览

ios - Sprite Kit中的碰撞检测未检测到碰撞

我正在创建一个需要使用大量碰撞检测的游戏,而我今天才了解它。

现在我有两个SKSpriteNodes,但一个是SKNode. SKSpriteNode调用没有父级的精灵,调用有父级character的精灵buildingStructure

现在character的类别是static const uint32_t playerCategory = 0x1 << 20;buildingStructure的类别是_buildingStructureCategory = 0x1 << 0;buildingStructure的类别map.m通过 a设置在另一个类中@property

变量正确地传递给另一个名为main.m的类(这是character设置类别的地方)。我character用一种方法创建,设置他的物理体、位置等。

character的属性

buildingStructure的属性

另一方面buildingStructure,没有设置physicsBody,因为我想character通过,buildingStructure但我也希望它检测何时character“处于顶部”buildingStructure以执行操作。

由于buildingStructure没有定义physicsBody这是导致didBeginContact:contact无法识别碰撞接触的原因吗?

0 投票
0 回答
211 浏览

objective-c - SKPhysicsBody 像气球一样漂浮

我确定这已经在互联网上的某个地方,但我似乎无法找到它。假设我想添加一些在场景中向上漂浮的气球(其他所有东西的重力都是向下的)。最好的方法是什么?到目前为止,我已将气球的质量设置为几乎为零,并对其施加了向上的力。它似乎工作正常,但我希望有一种更合适的方式来做到这一点。

谢谢

0 投票
0 回答
168 浏览

ios7 - iOS 7.0 中的 SpriteKit 物理世界比例尺

我正在开发这个游戏,其中我有一个SKNode(名为objectsNode),其中包含所有游戏精灵。

在iOS 7.0x上运行碰撞检测在精灵之间运行良好,直到我尝试缩小objectsNode(通过修改其xScaleyScale属性)。

似乎每个精灵的物理体大小保持不变,就好像它不受比例影响一样。我遇到了这个答案,这可能证实它是 iOS 7.0 的一个错误,但我找不到更令人信服的来源。

在 iOS 7.1 上运行效果很好,并且在缩小对象节点时可以正确检测到碰撞。

有没有办法解决这个问题,或者我应该将游戏部署到 iOS 7.1 及更高版本的设备(是否建议这样做?)?