问题标签 [skfieldnode]

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 投票
1 回答
3623 浏览

swift - 选择哪些物体径向重力场影响迅速

我正在开发一个带有 swift 和 sprite 工具包的 Xcode 项目,我想知道如何选择受径向重力场影响的对象。我目前有两颗恒星和一些行星,每颗恒星后面都有一个径向重力场。问题是恒星被它们自己的引力场所吸引。我怎样才能使每个重力场只影响一颗恒星和所有行星,而不影响它所跟随的恒星。我知道它与 categoryBitMask 和/或 fieldBitMask 有关,但我不知道具体如何。提前致谢。下面是星星和重力场的代码。我不希望那个重力场影响那颗恒星。

0 投票
2 回答
424 浏览

sprite-kit - SpriteKit SKFieldNode:为什么我不能在运行时移动字段?

我正在尝试在运行时移动 SKFieldNode (radialGravity):

一旦我命令字段节点更改位置,它就会崩溃。我将字段节点放置在 didMoveToView 的静态位置没有问题。

我猜 SKFieldNodes 只需要留在原地,但也许有一个解决方案。

主要思想是将径向场附加到精灵(附有物理实体),以便它们具有吸引力/排斥相互作用。我意识到这可以通过更手动的方法来完成,但我试图利用 SpriteKit 中可用的物理特性。

谢谢!

0 投票
1 回答
145 浏览

sprite-kit - 可以使用 SKFieldNode 来改变粒子的 zRotation 吗?

当使用 SKEmitterNode 作为粒子系统时,我正在尝试使 SKFieldNode 向节点吸引水粒子。当使用radialGravityField之类的场向SKFieldNode的位置移动时,我希望粒子也旋转以面对场节点

SKFieldNode 文档似乎没有提及改变粒子的 zRotation,所以我认为这是不可能的。这里有什么想法吗?

我还能如何实现这种影响?我需要创建自己的粒子系统来实现这一点吗?那会比 SKEmitterNode 慢多少?

0 投票
1 回答
263 浏览

objective-c - 正确设置 SKFieldNode.categoryBitMask &physicsBody.contactTestBitMask

我正在尝试使用 SKFieldNode 创建一个不可见的边界,该边界发送一个 NSLog(@"在鸟和字段节点之间注册的联系人。"); 当精灵在 SKFieldNode 半径内时,通过 didBeginContact 方法。我想我正确设置了代码,但是当鸟精灵的物理体接触字段节点的半径时什么都没有发生:

_bird 类physicsBody 设置:

0 投票
0 回答
320 浏览

macos - 一段时间后,radialGravityField 疯了

我正在尝试使用 Swift 创建一个看起来有点像 2D 重力模拟器的 SpriteKit 游戏,但是当我的对象接近一点时,它们会以疯狂的速度向相反的方向移动。

这可能与 field 和 PhysicsBody 的minimumRadius, categoryBitMaskorfieldBitMask属性有关,但我并不确切知道。

以下是相关代码:

还有一个问题的 gif 演示:

问题演示

如您所见,触发问题所需的对象移动距离似乎是随机的。

0 投票
0 回答
87 浏览

ios - 如何计算 SKSpriteNode 的最终力矢量

大家下午好!

我正在创建具有类似于黑洞引力效应效果的太空游戏。无论宇宙飞船去哪里,黑洞都会吸引它,将所有向量加在一起。

我知道SKFieldNode有一个方法customFieldWithEvaluationBlock:允许自己计算所有内容,但这可能是另一种方法吗?

我已经尝试了SKFieldNode中的几乎所有类型,但没有任何帮助。

  1. 有一些副作用不适合我(即如果我使用电场或磁场,物体会从黑洞中排斥)
  2. 此外,使用SKAction移动(即宇宙飞船)不允许我将所有移动向量加在一起(我不能 - (void)moveTo:duration:同时执行动作,即使对动作进行分组)

你能给我什么建议?先感谢您!

0 投票
1 回答
552 浏览

ios - 同一类别的 SpriteKit/SKPhysics 径向重力场总是相互吸引?

尝试在 SpriteKit 中使用径向重力场时遇到问题

我不希望同类对象(由 categoryBitMask 定义以相互吸引)

这是我的做法:

无论我尝试什么,行星总是相互吸引(除非我将 fieldBitMask 设置为 0,但它们当然也不再被 Star 吸引)!我希望这 2 行代码只有恒星重力场才会对行星产生影响......

从文档:

“fieldBitMask:定义哪些类别的物理场可以在此物理体上施加力的掩码。当物理体位于 SKFieldNode 对象的区域内时,该场节点的 categoryBitMask 属性将通过执行逻辑与该物理体的 fieldBitMask 属性进行比较AND 操作。如果结果为非零值,则将场节点的效果应用于物理体。

我做错什么了吗?

0 投票
1 回答
292 浏览

sprite-kit - iOS 9 更新后 SKFieldNode 定位错误

我有一些在 iOS 8 中运行良好的代码,但是自从 iOS 9 以来,一些代码的SKFieldNodes行为非常奇怪。下图显示了一个场景,其中有两个SKFieldNodes(标有红色精灵)和一个SKEmitterNode发射金色粒子。

在此处输入图像描述

在 iOS 8 中,磁场会吸引粒子并将它们“吸”向磁铁的尖端。从 iOS 9 开始,粒子向右上角加速,如红色箭头所示。另外,我必须增加strength字段的值才能使效果可见。

下面是对应的代码:

似乎字段节点位于右上角附近的某个位置,但红色圆圈子节点显示不同。

0 投票
1 回答
244 浏览

ios - 具有圆形区域的 SKFieldNode 仅在中心位于区域内时影响物体

好的,从 SKFieldNode 文档中,在 region 属性下:

场节点将其效果应用于部分或完全位于其区域内的所有物理体。默认值是一个无限大的区域。

由此我了解到,一旦连接到节点的物理主体的一部分进入场节点上的 SKRegion(“在区域内部分或完整”),场将开始作用于主体。

所以我开始使用这些场,但发现只有当身体的中心在该区域内时,它们才开始作用于物理体,而不是身体的任何部分

这是我写的代码:

(我将形状节点添加到该区域以查看其区域的结束位置,并将中心添加到球以在它运行时清楚地表明该区域仅在中心位于该区域中时才起作用。)

当我运行它时,只有当球的中心在该区域内时,场地才会开始作用于球。在我看来,这不是根据文档应该发生的事情。在添加之前我没有更改任何字段节点的属性,所以我期望标准行为。

我不知道我误解了文档,或者我必须在场上设置一些其他属性才能作用于部分位于其区域内的任何物理体。

0 投票
1 回答
861 浏览

swift - 在 SpriteKit 中环绕 SKFieldNode 的困难

我试图让一个简单的 SKSpriteNodeSKFieldNode.radialGravityField()一旦进入其定义的SKRegion. 我通过 将场景的重力设置为零self.physicsWorld.gravity = CGVectorMake(0.0, 0.0)

我正在尝试模拟真实空间。我听说过使用关节,但这似乎不像使用真实重力计算那样流畅。这里有什么想法吗?

编辑:到目前为止,我的代码无法正常工作。它将一个物体送入a radialGravityField(),但不会完美地围绕它(甚至接近完美)。它确实绕轨道运行,但在一个狂野的椭圆中。当我说完美时,我的意思是围绕着重力场中心的圆形。

补充:我只是在考虑使用radialGravityField(). 也许在update方法中只计算飞行物体的位置会更容易。如果它的位置在行星的半径内,则使用 SKJoint 并使其轨道运行。以前有人做过吗?

先感谢您!

到目前为止,这是我的代码...