问题标签 [gameplay-kit]

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 回答
1279 浏览

sprite-kit - 是否使用 GKAgents

我正在使用 SpriteKit 开发(或至少尝试开发)一个相当大的实时战术游戏(类似于 RTS)。

我正在使用 GamePlay 套件进行寻路。

最初我使用SKActions 在路径中移动精灵,但速度足够快,我意识到这是一个很大的错误。

然后我尝试用 s 来实现它(GKAgent这是我目前的状态)GKAgent这会很有用 - 也许用于 WWDC 的演示)

以及我看到他们有一些角速度来执行我根本不需要的旋转,并且无法真正找到如何禁用它......

除了GKBehaviors 给定的GKGoals 似乎使一些奇怪的事情......

设置行为以避开障碍物会使我的单位在它们周围慢跑……设置跟随路径目标的行为完全忽略了一切,除非maxPredictionTime足够低……我什至不愿意告诉我将它们结合起来会发生什么。

我感觉很崩溃...

我觉得我现在有两个选择:

1) 与这些代理人进行更多的斗争,并试图让他们按照我的意愿行事

2)在路径查找的帮助下,我自己滚动所有运动GKObstacleGraph(这也是错误的,我不得不说,在某些点,到达该点的路径会产生最糟糕的路径,比如“去触摸那个障碍物然后反向触摸然后到实际点(从一开始就可以通过直线实现)”)。

问题是:

这些选项中最好的是什么?

0 投票
1 回答
439 浏览

ios - “GKEntity”类型的值没有成员“componentForClass”。为什么我在 swift 3.0 中找不到这种方法?

我正在尝试运行此行:

并收到:

“GKEntity”类型的值没有成员“componentForClass”

显然苹果已经从GamePlayKit GkEntity类中删除了这个方法。那么我应该使用哪种方法呢?

0 投票
1 回答
192 浏览

ios - 使用 GKRandomSource 生成随机数

GKRandomSource在一个结构中使用在视图中返回一个随机的鼓舞人心的报价。有没有办法返回该随机数并省略先前的条目?这样用户就不会连续两次收到相同的报价。

0 投票
0 回答
401 浏览

swift - Swift 3:尝试将 matrix_float3x3 转换为 SCNVector3

我正在尝试用 Swift 制作 3D 游戏。我希望我的敌人使用GKGoal跟随路径。GKAgent3D旋转属性类型为matrix_float3x3 SCNNode 的旋转属性类型为SCNVector4

如何使用简单的 swift将matrix_float3x3转换为SCNVector4 ?

我已经在网上搜索过,但几乎没有关于将 GameplayKit 与 SceneKit 或 GKAgent3D 一起使用的文档。

我找到了一些用于矩阵旋转和角度的数学文档和函数(例如:分解和组合 3×3 旋转矩阵),但这会返回 SNVector3 的 XYZ 角度,而不是 SNVector4。

0 投票
1 回答
207 浏览

sprite-kit - Gameplaykit:使用 GKStatemachines 管理多个对象

我正在编写一个游戏,它有许多可以由玩家移动的开关精灵。
我打算使用“Game-play-kit”状态机来组织我的代码。
我不知道如何管理多个状态机——特别是我将我的开关存储在一个数组中,并且每个开关对象都包含一个状态机——我
如何从 GKState 类中引用“父”开关以更改它的属性(在这种情况下运行一个新动画?)

这是我的开关类:

这是我的交换机网络类:

我从 GameScene 中启动切换:

这是我的问题。
在 switch statemachine gkstate 类中,我该更改谁的动画?
我需要以某种方式访问​​持有状态机的父开关对象吗?

0 投票
1 回答
204 浏览

ios - GameplayKit GKMeshGraph 障碍错误?

我觉得这可能是一个错误,任何人都可以重现或看到我做事的一些错误。

我正在尝试将 GKPolygonObstacle 添加到 iOS 或 macOS 操场中的 GKMeshGraph 中。

这确实将节点添加到图表中,但是无论我做什么,我都无法填充障碍。

Apple API看起来非常简单。我错过了什么吗?

谢谢

Xcode:版本 8.0 (8A218a)

Swift:Apple Swift 3.0 版(swiftlang-800.0.46.2 clang-800.0.38)

0 投票
0 回答
42 浏览

swift - 减少但增加限制的随机化

我正在尝试选择随机位置,但也要确保随后的随机位置不接近先前的位置。在这种情况下,只删除了相邻的“单元格”,但我也很想知道如何使它更宽。

可能有类似的问题,但我什至不知道搜索它们的基本术语,抱歉!

除了对奇妙的 GameplayKit 随机化工具和 Swift 优雅的数组处理进行分层和滥用利用之外,我想不出如何使用代码来做到这一点,混乱不堪。

有没有办法做这样的事情,嗯,优雅,被接受/理解,而不是一团糟?

想象一个有 8x6 位置可用的电路板。第一个随机选择的位置在此处显示为 (A),随后意味着相邻的方格不可用...

随机选择第一个

随后的随机选择(B)可能是这样的:

在此处输入图像描述

还有一个,想象一下这个过程正在进行......此时我对如何处理空间不足感到困惑,但这是另一个问题,另一个问题......

在此处输入图像描述

0 投票
1 回答
279 浏览

swift - 如何更改游戏中的键盘重复率?

我正在使用 SpriteKit 和 GameplayKit 在 Swift 3 中为 Mac OS 编写游戏。我已经创建了一种方法来捕获键盘按下事件并可以控制我在地图上的角色。Sprite 正在使用 MovementComponent 移动,如果记录了键盘事件,它将在每个更新上应用移动动作。然而,在第一次按键后角色移动会有延迟。在我按住箭头键的那一刻,我的角色在标准移动动作的持续时间内移动,但是在它继续移动之前有一个延迟,因为在第一次按键后键盘开始重复循环之前大约有 0.5 的延迟。我的问题是:如何在游戏运行时更改键盘重复率或消除此延迟,或者有更好的方法在 mac 游戏中实现通过键盘控制的连续移动?

谢谢大家。

0 投票
0 回答
188 浏览

ios - GameplayKit:关于实现 GKComponent 发射子弹的建议

我正在尝试使用 GameplayKit 来实现使用 SpriteKit 制作的 2D 游戏的所有实体/组件。我创建的第一个组件是SpriteComponent

这意味着所有需要添加到场景中的组件都可以使用它。接下来我想添加一个组件来发射子弹,我称之为FiringComponent。由于子弹是一个图形项目,它可能是一个实现SpriteComponent的实体,所以我编写了以下代码:

接下来是疑问:FiringComponent是否应该直接将子弹实体添加到场景中?FiringComponent的一个可能实现可能是添加一个Bullet实体,该实体应添加到游戏层次结构中并在每一帧更新。但我认为这个逻辑是有缺陷的,因为这样组件需要有一个变量不仅指向游戏场景,而且指向包含所有实体并定期更新它们的对象。这样,我必须编写扭曲的代码才能发射子弹。我正在寻找一种简洁干净的方式来实现它:有什么建议吗?

0 投票
1 回答
103 浏览

swift - Swift 3:类无法正常运行

所以我有一个名为FlashyPaddleEffect. 我也在另一个类中提到它GameScene,但它没有应用它应该的任何效果。桨应该闪烁蓝色和白色,但它只是保持白色。当它是蓝色时,桨也应该失去它的物理体。

如果您需要任何其他信息,请随时询问。

注意:我给出的代码可能存在问题(因为缩进,通过每行缩进 4 个空格来编写代码非常棘手,抱歉)。

非常感谢您的回答。PS这是我的第一个问题,所以不要严格评判我。