我有一个GKEntity,它有一个GKAgent2D组件。它的行为是GKGoal、toWander:和toStayOnPath:maxPredictionTime:。实体在场景中不断游荡;但是,我希望它暂时停止游荡。例如,如果实体是一只四处游荡的绵羊,我希望它定期停下来吃东西,并在延迟一段时间后再次开始游荡。更新:在实体中:addComponent(MoveIdleComponent(maxSpeed:60,maxAcceleration:6,radius:Float(node.texture!.size().width*0.3),entityManager:entityManager
暂停GKAgent的最佳方法是什么?我的游戏在某些级别使用了一些代理,我需要在我的游戏暂停/gameOver时暂停它们。我不会在我的游戏中暂停整个SKScene,而是暂停一个worldNode,因为即使在游戏暂停时,它也能让我更灵活地显示spriteKit内容。我正在使用updateWithDeltaTime...更新代理行为并相应移动它们的方法。我考虑过停止更新方法,但代理仍会移动到他们最后已知的GKGoal。目前我找到的最佳解决方案是在我的游戏暂停时将代理速度/最大速度设置为0。我在这里遇到的问题是,恢复后将速度重置为代理以前的速度有点痛苦,尤其是在使用多个具有自己行为的代理时。它
我在Scenekit(和ARKit,尽管这对这个问题并不重要)应用程序中使用GameplayKit一直很有趣。具体来说,我一直在为行为使用实体、组件和代理,除了一件事外,它们都运行良好。我已经设法在组件内使用GKAgent在场景中四处移动,并避开其他对象。这一切似乎都在起作用。但是,我只能让GKAgent位置工作,而不是“旋转”属性。importFoundationimportSceneKitimportGameplayKitclassMoveComponent:GKScnComponent,GKAgentDelegate{//thisclassisabbreviatedforperf
我刚刚使用苹果在iOS9中引入的实体和组件基础架构(GameplayKit)完成了我的游戏转换。我不知道如何检查当前状态(GKStateMachine)是否不等于状态。假设我想检查currentState是否等于我的GameOverState,我会这样说ifself.stateMachine.currentStateisGameOverState{...我如何检查当前状态是否不等于GameOverState,“...is...”sytanx对我来说是新的,所以我不确定如何调用它。 最佳答案 我自己也遇到过这个问题。它似乎不是is的逆
有没有人找到GameplayKit用于寻路的算法类型的引用资料?我查看了Apple的文档,但没有找到任何内容。最终我很好奇它的性能与在没有GameplayKit的情况下实现的A*的对比。虽然我确信Apple做得很棒,但我不想为我不会使用的功能支付性能开销。我也很好奇,因为我喜欢学习这些类型的机制。谢谢,E 最佳答案 只有Apple可以肯定地说。但是成本和估计成本方法的存在强烈暗示了A*,或者至少它的一些变体具有足够相似的算法复杂度。不过,如果您真的很关心性能,请为自己设置一些测试用例并分析它们。您可以从他们的Pathfinder开始
从这里的GameplayKit开始,我正在为一个无尽的奔跑者建模,玩家可以通过点击屏幕在角色之间切换。角色第一次可以近距离攻击(组件),第二次跳跃(组件),第三次射击(组件)。我想知道什么是最好的建模在这两者之间的方法:创建一个具有3个不同角色实体(数组)的Player类,其中一个具有它的组件创建一个具有3个不同角色组件的实体Player并添加所有移动和Action组件(射击/跳跃...)这是一个真正的大项目,所以我担心如何最好的方法来保持代码在很长的生命周期内可维护和可读.注:。SpriteComponent将是所有实体在.sks上负责视觉表示的组件。附言2:。如果可能的话,用swi
我正在使用Spritekit深入研究GameplayKit,根据我收集的信息,您将GKEntity子类化,然后开始向该实体添加GKComponents。实体将或多或少只是一袋填充某些功能的组件。我感到困惑的部分是组件之间的通信。你如何让他们分离。例如,假设我有一个HealthComponent类,我将该组件添加到一个PlayerEntity和一个EnemyEntity。我还有一个HealthBarComponent但我只想在玩家上方显示一个健康栏。当玩家受到伤害时,需要在HealthBarComponent中更新该信息。那么应该如何发送这些信息呢?我看到文档中有一个名为GKCompon
关于Apple的新GameplayKit,我有一个也许是愚蠢的问题。我正在为我的游戏创建基于二维网格的节点布局。我最喜欢GKGraphNode2D的功能,但想以一种方式对其进行调整。我想在遍历某种节点对时有条件地添加惩罚。换句话说,我希望一些节点以直接的方式连接,而一些节点连接使得它们的遍历距离由我的应用程序修改。我认为子类化GKGraphNode2D并覆盖-costToNode:和-estimatedCostToNode:会完美地工作!有时我会返回super提供的值,并在其他时候为我的游戏调整它。这两个方法是GKGraphNode的方法,GKGraphdNode2D的父类(super
尝试学习如何使用GameplayKit,尤其是代理和行为。尝试将所有教程和示例归结为一小段简单的代码,我可以将其用作我自己的应用程序的起点。不幸的是,我想出的东西不能正常工作,我也不知道为什么。它只是一个带有简单GKGoal(toWander:)的简单Sprite。它没有徘徊,而是永远向右直线移动。尽管我将最大速度和加速度设置为离谱的高值,但它的启动速度也慢得令人难以置信,加速速度也慢得令人难以置信。我无法弄清楚我的简单代码与所有复杂示例之间的根本区别。这是代码,减去requiredinit?(coderaDecoder:NSCoder):classGremlinAgent:GKAge
不久前,Apple将GameplayKit元素引入到Xcode的SceneEditor中,这很棒。但是,我似乎对NavigationGraph元素有疑问:我试图实现的是从场景编辑器中绘制一个GKGraph,在代码中检索它,并将其用作寻路的基础。所以我先画了一个GKGraph:然后我像这样在GameScene.swift中检索它:graph=self.graphs.values.firstgraphs是Apple预定义的数组,用于存储场景编辑器中的GKGraphs。到目前为止一切顺利。然后我想让玩家找到屏幕上点击位置的路径。为此,我将UITapGestureRecognizer与以下回调