问题标签 [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 投票
1 回答
190 浏览

swift - 具有自定义遍历成本的 GKGridGraphNode

我正在关注本教程

http://blog.lukasjoswiak.com/gameplaykit-for-beginners-part-1/

当我走到尽头时,我想尝试让塔不是完全无法通行,但只是成本更高。

因此,我将 GKGridGraphNode 子类化并添加了一个成本变量,覆盖了 costToNode 函数并尝试将我的成本变量插入到方程中。

我似乎无法让它工作。除了在子类化注释中提到它之外,关于此的文档实际上并没有解释节点成本。我想知道是否有人设法做到这一点?

我可能做错了,但即使阅读 Swift 标头并没有真正给我任何线索。

谢谢您的帮助

更新:关闭为重复

0 投票
3 回答
164 浏览

iso - GameplayKit 的实体/组件概念

我正在使用 iOS 9 中 GameplayKit 的实体/组件概念设计我的游戏,对于 ShootComponent,应该将子弹/导弹定义为实体吗?

是的原因:

将逻辑与其父级分离,例如 playerTank 或enemyTank;

如果不是,TankEntity 需要区分它的子弹是否与其他实体或自身相撞。

否的原因:

它不是逻辑世界中的实际实体,由我的坦克或敌方炮塔发射;

子弹总是被射击并消失,所以游戏需要不时添加/删除它;

对于您的意见,请。

0 投票
1 回答
598 浏览

sprite-kit - GKGraph GKGraphNode GKGridGraphNode,它们之间有什么关系?

我已经阅读了文档但仍然对它们感到困惑,任何人都可以给我一个清楚的解释,例如图像比较?谢谢。

0 投票
1 回答
879 浏览

scenekit - 我可以将 GameplayKit 的寻路功能与 SceneKit 结合起来吗?

该文件指出

GameplayKit 也适用于使用 SceneKit 框架构建的 3D 游戏

但是,似乎没有提到使用 SceneKit 的寻路功能,例如GKGraph与 3d 空间中存在的 SCNNodes。

GameplayKit 的寻路功能是否不适合 SceneKit 游戏,或者是否有额外的文档来说明如何将两者结合起来?

0 投票
1 回答
70 浏览

swift - SpriteKit 数组错误 SKNode.obstaclesFromNodes

我正在尝试从我的 SpriteKit 游戏中的节点创建一系列障碍。我创建了一个新项目来尝试解决错误,发现它仍然会发生。

这是新项目中的代码:

我查过了,nodes不是零。它包含spriteNode.

它在线崩溃并let obstacles出现以下错误:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“*** -[__NSPlaceholderArray initWithObjects:count:]:尝试从对象 [0] 插入 nil 对象”

我四处搜寻,但没有找到任何关于此事的信息。

有谁知道可能是什么问题?

0 投票
0 回答
186 浏览

swift - 阻塞和解除阻塞路径后寻路不再起作用

我有一张地图,上面有用户可以放置的障碍物。以及从地图右侧移动到左侧的精灵。

当用户放置障碍物时,它们会被添加到我的游戏图表 (GKObstacleGraph) 中,并且每次我检查从起点到终点的路径是否可用。如果不是,则表示用户已经完全挡住了路径,所以我移除了放置的障碍物。

那应该会再次打开路径,但事实并非如此。好像障碍还在。

我有一个调试函数,它循环遍历我的图形节点中的所有障碍,直观地向我展示它们的位置。每次我添加障碍物时它都会运行。在我放置一个阻挡路径的障碍物(然后立即将其移除)之后,它表明那里没有障碍物。路径是明确的。

此代码完美运行,直到 pathClear 返回 false 并且 else 中的代码运行。即使从图中移除了障碍物(并且 drawAllObstacleOutlines() 函数证实了这一点) pathClear 之后总是返回 false 。

除非我使用:

如果我用上面的那一行替换 removeObstacles([]) 行。它让我再次设置障碍。(即使我将所有已移除的障碍物加回来,它仍然有效,不包括阻挡路径的障碍物。)

函数 updatePathForSprite 基本上在下面调用这个:

有谁知道这里发生了什么?

编辑:我可能发现了一些奇怪的东西。

当我在 drawAllObstacleOutlines() 行上方添加以下行时:

它随着我添加障碍物而增加......在我的情况下,节点是 404,障碍物是 101,但是当我放置阻挡路径的障碍物时,输出是:障碍物 101,节点 0

出于某种原因,它删除了图中的所有其他节点,即使我只删除了一个障碍。

0 投票
1 回答
409 浏览

swift - 等到属性为真后再继续循环

尝试做一些我觉得应该很简单的事情,但到目前为止我没有尝试过任何事情。我试图阻止这个循环继续,直到我的敌人的一个属性设置为 true。

我的敌人节点在步行状态下找出玩家的路径。在计算出路径之前,我不想迭代到下一个敌人。我的敌人节点有一个 pathComplete 节点,我在 walk 状态下设置为 true。

这是在触摸时执行的。

0 投票
1 回答
61 浏览

swift - NSCoding 和 GameplayKit 类

在我的游戏中,我有一个符合 NSCoding 的 Combat 类,它还使用不符合 NSCoding 的 GameplayKit 的 GKGridGraph 和 GKGridGraphNode 对象。有没有办法序列化/反序列化这些对象?

0 投票
1 回答
134 浏览

objective-c - 重新签名 GKGridGraph 时的 EXC_BAD_ACCESS

我有一个这样的图表:

用宽度和高度分配它:

后来我需要用新的宽度和高度重新签名self.graph,所以我和上面一样。通过这样做,我得到了 EXC_BAD_ACCESS。

我尝试创建新图并将其分配给 self.graph 并且仍然得到相同的结果。

0 投票
1 回答
145 浏览

sprite-kit - 使用 GameplayKit 保持 SKNodes 直立

我正在开发一款带有动物角色的 SpriteKit 游戏。动物使用来自 GameplayKit 的代理在屏幕上左右移动。他们跟随从屏幕一侧到另一侧的隐形代理。这可以正常工作,只是当我从右到左时精灵会倒置(当它们从左到右时它们没问题)。我尝试更改 xScale 以获得镜像,但看起来代理正在覆盖我为更改它所做的 SKAction(角色在屏幕上瞬间跳跃)。有谁知道如何让精灵角色保持直立?我的代码在 func didBeginContact 中触发。

任何想法如何解决这一问题?

更新:代码显示在原始问题中。

移动节点在 SKNode(类:AnimalNode)的子节点中准备,具有以下功能:

RightWall 是在 GameScene 中设置的 SKShapeNode。联系人工作正常,因为我添加了一个打印语句来检查 if 语句是否有效。对 func turnLeft 的调用也没有显示任何问题,只是节点中没有任何变化。也许这不是翻转角色的最佳方式。我对其他方法持开放态度。turnLeft 函数的设置是为了在角色从右移到左移时使角色方向的变化看起来更加无缝(这就是为什么我分阶段更改精灵的 xScale 以赋予它更“动画”的感觉)。