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

ios - GameplayKit 的 nextIntWithUpperBound() 在操场上失败

以下代码在 iOS 项目中运行良好,但在 iOS 游乐场中失败。知道为什么,除了“这可能是一个错误”吗?注意:您需要打开 Playground 调试区域才能看到消息:“'subscript' 的重载存在这些部分匹配的参数列表:(Int)、(Range)、(Range)、(Self.Index)”

同样,相同的代码在常规 iOS 项目中也能正常工作。看起来有些东西对Intand感到困惑UInt,因为如果我进行类型转换randomIndexInt它就可以正常工作。

0 投票
1 回答
441 浏览

swift - 程序在 GKAgent2D 位置和 SpriteKit 位置之间感到困惑

我正在使用 GameplayKit 和 Swift。在我的代理的移动组件中,我正在运行 agentWillUpdate:但在确定位置的行上出现错误“无法使用类型为 '(CGPoint)' 的参数列表调用类型为 'Float2' 的初始化程序”。

节点位置没问题(我已经用打印测试过)。当我通过 CMD 单击“位置”时,我被带到 SpriteKit 的位置属性,而不是 GKAgent2D 的属性。当我尝试使用 agent.property 引用属性时,调试器告诉我“'GKAgent' 类型的值没有成员'位置'。”

在下一个函数调用中,我得到与原始错误相同的错误,“无法使用类型为 '(vector_float2)' 的参数列表调用类型为 'CGPoint' 的初始化程序”

CMD 单击 CGPoint(position) 将我带到 GKAgent2D。似乎这两个“位置”是相互颠倒的。任何想法如何纠正这个问题?

0 投票
1 回答
84 浏览

ios - 初始化一组骰子 - 在 GKARC4RandomSource 上使用 dropValuesWithCount

我正在 swift 2.0 中初始化一组骰子。我已经声明了一个带有名称(:String),状态列表(:[String])和面(状态数组的索引)(:[Int])的类Die

根据GameplayKit Framework ReferenceErica Sadun 的这篇短文中的建议,我想删除 GKARC4RandomSource 的前 1024 个值以确保“真正的”随机性。

在我的 UIViewController 中,我设置了一个 init? 初始化我的骰子的函数

...

...

这甚至不会编译:最后一行返回错误:

我的代码在没有这一行的情况下工作,但我不确定我在这里做错了什么,除了上面引用的链接之外,我几乎找不到在网络上使用 Gameplay Kit 实现 Dice 的任何参考。

0 投票
1 回答
114 浏览

sprite-kit - 使用 GKAgents 左右移动精灵

我正在寻找一种GKAgent在屏幕上从左到右移动 a 的方法。代理连接到 aGKEntity并且我创建了另外两个代理,称为“leftWall”和“rightWall”。对于每个代理,都有一个匹配的具有唯一名称的精灵节点。我尝试SKPhysicsContact在我的主程序GameScene中使用将一个新的目标代理(例如,如果它与 leftNode 联系,则传递 rightNode 的名称)给在屏幕上移动的代理。

为了找到移动代理,我有一个类,其中包含一组实体。

}

从移动GKAgent中,我查找对应的墙的代理targetWallEntityName(这是一个字符串变量)并将其传递给“seek GKGoal”。这基本上是可行的,除了当我设置多个代理时,传递一个新targetWallEntityName的不仅会影响与左墙或右墙接触的代理,还会影响所有代理。结果是所有代理都在屏幕中振荡,响应最靠近两堵墙的代理的物理接触。任何想法如何解决这个问题?我应该先尝试将目标传递给实体,然后再将其发送给它的代理吗?

0 投票
1 回答
521 浏览

swift - 为什么我的 SCNAction 序列间歇性地停止工作?

我正在尝试SCNNode在场景中移动一个,受限于GKGridGraph. 沿着 PacMan 的思路思考,但在 3D 中。

我有一个ControlComponent处理我的 SCNNode 的移动。逻辑应该是这样的......

  1. 设置queuedDirection属性。
  2. 如果isMoving标志为假,则调用 move() 方法
  3. 使用 GKGridGraph 评估下一步行动

    direction3.1 如果实体可以使用属性移动到GKGridGraphNode ,nextNode = nodeInDirection(direction)

    queuedDirection3.2 如果实体可以使用属性移动到GKGridGraphNodenextNode = nodeInDirection(queuedDirection)

    3.3 如果实体不能移动到任一方向的节点,将isMoving标志设置为false并返回。

  4. 创建moveTo动作
  5. 创建一个runBlock调用该move()方法的
  6. moveTorunBlock动作作为一个序列应用到 SCNNode

我已经粘贴在下面的完整课程中。但我会先解释我遇到的问题。上述逻辑有效,但只是间歇性的。有时动画几乎立即停止工作,有时它会运行长达一分钟。但是在某些时候,由于某种原因,它只是停止工作 -setDirection()将触发,move()将触发,SCNNode 将在指定方向上移动一次空间,然后move()停止调用该方法。

我不是 100% 相信我目前的方法是正确的,所以我很高兴听到是否有更惯用的 SceneKit/GameplayKit 方法来做到这一点。

这是完整的课程,但我认为重要的是setDirection()andmove()方法。

0 投票
1 回答
488 浏览

scenekit - 如何在 SceneKit 游戏中更新 GameplayKit 实体和组件

我有一个试图与 GameplayKit 集成的 SceneKit 游戏。

为了让 GameplayKit 工作,我需要通过调用它们的updateWithDeltaTime(seconds:)方法来更新我的组件和实体。

在我见过的 SpriteKit/GameplayKit 示例中,这是使用 SKScene 的update方法完成的,该方法在没有用户或开发人员输入的情况下连续触发。

似乎在 SceneKit 中,要实现类似的东西我需要调用SCNSceneRendererDelegate方法renderer(renderer: updateAtTime time:)

然而,这只在场景中的某些东西正在运行时触发,例如 SCNAction。但是在我的游戏中,在用户滑动之前什么都没有运行。

是否有另一种推荐的 SceneKit 方法来连接某种在没有任何提示的情况下连续运行的运行循环?

0 投票
3 回答
407 浏览

swift - GKMinmaxStrategist 不返回任何动作

我的代码中有以下代码main.swift

...我的子类position的一个实例在哪里。运行此代码后,是. 也会导致(但会导致对象)。GKGameModelPositionmovenilbestMoveForPlayer(position.activePlayer!)nilposition.activePlayer!Player

然而,

导致可能移动的非空数组。来自 Apple 的文档(关于bestMoveForPlayer(_:)):

如果玩家无效、玩家不是游戏模型的一部分或玩家没有可用的有效动作,则返回 nil。

据我所知,情况并非如此,但函数仍然返回nil. 这里会发生什么?

如果有任何帮助,这是我对GKGameModel协议的实现:

如果我应该显示任何其他代码,请告诉我。

0 投票
1 回答
447 浏览

swift - 将 SKPhysicsContact 放在 GKComponent 中

目前,我使用 SKPhysicsContact 从 GameScene 中触发我的精灵的行为变化。问题是随着每次开发,游戏场景变得越来越长。有没有人设法制作一个嵌入了 SKPhysics 的 GKComponent 以简化联系人管理?这将如何工作?

0 投票
2 回答
204 浏览

swift2 - GKEntity 未被识别

我正在重新使用 DemoBots 中使用的方法进行接触检测。由于我的代码的工作方式和 DemoBots 的编写方式之间存在差异,我遇到了一个问题。在 DemoBots 中,组件 RenderComponent 有一个变量 ' node'

在我的代码中,我没有使用动画,所以我的 RenderComponent 等价物有点复杂。变量“节点”已被使用并绑定到物理体,所以我创建了一个新变量“ entityNode

在 handleContact: 方法中,我尝试了两种解决方案来获取对实体的引用。选项1:

对此运行 print() 检查会返回这两个实体的 nil 值。这很合乎逻辑,因为我应该寻找一个名为 ' entityNode' 的属性来查找实体。当我将其更改为选项 2 时:

我收到一个错误,即physicsBody 没有成员“ entityNode。” 我已经尝试了很多其他的事情,比如查找与contactBody关联的实体,但是我得到另一个错误,它说后续代码正在寻找一个可选的。我已经尝试摆脱“如果”,但它只是将问题转移到下一个contactCallBack电话。

有什么想法可以解决这个问题以使contactCallBack电话正常工作吗?

0 投票
2 回答
731 浏览

ios - 引入障碍物时 GKObstacleGraph 找不到路径

我正在研究 Gameplaykit 寻路概念验证,我无法让 GKObstacleGraph 正确找到路径。

在下面的代码片段中(它应该在 Xcode 7.2 游乐场中工作),如果在创建图形时提供了障碍物,path2 始终是一个空数组。如果我使用空的障碍物数组创建 obGraph 对象,则 findPathFromNode 返回正确的路径。

创建的障碍物应该是一个简单的 U 形多边形,端点在 U 内。