使用 GKAgents 从左到右再向后移动精灵
using GKAgents to move sprites from left to right and back
我正在寻找一种在屏幕上从左向右移动 GKAgent
的方法。该代理已连接到 GKEntity
,我还创建了两个代理,分别称为 "leftWall" 和 "rightWall"。对于每个代理,都有一个具有唯一名称的匹配精灵节点。我尝试在我的主 GameScene
中使用 SKPhysicsContact
将新的目标代理(例如,如果它与左节点联系,则传递右节点的名称)传递给在屏幕上移动的代理。
func didBeginContact(contact: SKPhysicsContact) {
let nodeA = contact.bodyA.node
let nodeB = contact.bodyB.node
if nodeA!.name == "leftWall" {
entityManager.contactWithWall("rightWall", nodeName: (nodeB?.name)!)
}
为了找到移动代理,我有一个 class 中间有一个实体数组。
class EntityManager {
var entities = Set<GKEntity>()
.
.
.
func contactWithWall (newWallName: String, nodeName: String) {
for entity in entities {
if let spriteComponent = entity.componentForClass(SpriteComponent.self) {
if spriteComponent.node.name == nodeName
entity.targetWallEntityName = newWallName
}
}
}
}
}
从移动 GKAgent
开始,我查找对应于 targetWallEntityName
的墙的代理(这是一个字符串变量)并将其传递给 'seek GKGoal
.' 这基本上可以工作除了当我设置多个代理时,传递一个新的 targetWallEntityName
不只是影响与左墙或右墙接触的代理,它会影响所有代理。结果是所有代理都在屏幕中振荡,以响应距离两堵墙最近的代理的物理接触。任何想法如何解决这个问题?在将目标发送给它的代理之前,我应该先尝试将目标传递给实体吗?
谢谢0x141E
。我已经将问题追溯到一个 spriteNode
的缩放比例与其对应的 physicsBody
之间的差异。使用 SKPhysics
触发新代理进行搜索工作正常。但出于某种原因,当一个节点过于频繁地触发碰撞时(因为在这种情况下它的大小为 body),游戏中的所有代理似乎都从这个代理接管了搜索目标,并且游戏进入混乱状态。
我正在寻找一种在屏幕上从左向右移动 GKAgent
的方法。该代理已连接到 GKEntity
,我还创建了两个代理,分别称为 "leftWall" 和 "rightWall"。对于每个代理,都有一个具有唯一名称的匹配精灵节点。我尝试在我的主 GameScene
中使用 SKPhysicsContact
将新的目标代理(例如,如果它与左节点联系,则传递右节点的名称)传递给在屏幕上移动的代理。
func didBeginContact(contact: SKPhysicsContact) {
let nodeA = contact.bodyA.node
let nodeB = contact.bodyB.node
if nodeA!.name == "leftWall" {
entityManager.contactWithWall("rightWall", nodeName: (nodeB?.name)!)
}
为了找到移动代理,我有一个 class 中间有一个实体数组。
class EntityManager {
var entities = Set<GKEntity>()
.
.
.
func contactWithWall (newWallName: String, nodeName: String) {
for entity in entities {
if let spriteComponent = entity.componentForClass(SpriteComponent.self) {
if spriteComponent.node.name == nodeName
entity.targetWallEntityName = newWallName
}
}
}
}
}
从移动 GKAgent
开始,我查找对应于 targetWallEntityName
的墙的代理(这是一个字符串变量)并将其传递给 'seek GKGoal
.' 这基本上可以工作除了当我设置多个代理时,传递一个新的 targetWallEntityName
不只是影响与左墙或右墙接触的代理,它会影响所有代理。结果是所有代理都在屏幕中振荡,以响应距离两堵墙最近的代理的物理接触。任何想法如何解决这个问题?在将目标发送给它的代理之前,我应该先尝试将目标传递给实体吗?
谢谢0x141E
。我已经将问题追溯到一个 spriteNode
的缩放比例与其对应的 physicsBody
之间的差异。使用 SKPhysics
触发新代理进行搜索工作正常。但出于某种原因,当一个节点过于频繁地触发碰撞时(因为在这种情况下它的大小为 body),游戏中的所有代理似乎都从这个代理接管了搜索目标,并且游戏进入混乱状态。