Sprite kit 使用GameplayKit保持SKNodes直立

Sprite kit 使用GameplayKit保持SKNodes直立,sprite-kit,orientation,agents,gameplay-kit,Sprite Kit,Orientation,Agents,Gameplay Kit,我正在制作一个有动物角色的SpriteKit游戏。这些动物使用GameplayKit中的代理在屏幕上左右移动。它们跟随一个从屏幕一侧到另一侧的隐形代理。这工作正常,除了当我从右向左移动时,精灵上下颠倒(从左向右移动时,精灵正常)。我曾尝试更改xScale以获得镜像,但看起来代理正在覆盖我为更改此操作所做的操作(屏幕上的角色有一瞬间会跳跃)。有人知道如何让精灵人物保持直立吗?我的代码在func didBeginContact中触发 if contact1 is RightWall { if

我正在制作一个有动物角色的SpriteKit游戏。这些动物使用GameplayKit中的代理在屏幕上左右移动。它们跟随一个从屏幕一侧到另一侧的隐形代理。这工作正常,除了当我从右向左移动时,精灵上下颠倒(从左向右移动时,精灵正常)。我曾尝试更改xScale以获得镜像,但看起来代理正在覆盖我为更改此操作所做的操作(屏幕上的角色有一瞬间会跳跃)。有人知道如何让精灵人物保持直立吗?我的代码在func didBeginContact中触发

if contact1 is RightWall {
   if contact2 is AnimalNode {
      invisibleNode.position = CGPointMake(0, CGFloat(10 + arc4random_uniform(UInt32(size.height - 20))))
      invisibleNode.agent.position = float2(x: Float(invisibleNode.position.x), y: Float(invisibleNode.position.y))
   contact2.turnLeft() // this triggers the xScale change I've tried directly on the SKNode
}
有没有办法解决这个问题

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

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

override func turnLeft() { 
removeActionForKey("rightTurn") let turnRight2Left = SKAction.sequence([SKAction.scaleXTo(0.3, duration: 0.1), SKAction.scaleXTo(-0.3, duration: 0.1), SKAction.scaleXTo(-1.0, duration: 0.1)]) runAction(turnRight2Left, withKey: "leftTurn") 
}

右墙是在游戏场景中设置的一个形状节点。联系人工作正常,因为我添加了一个print语句来检查if语句是否工作。对func turnLeft的调用也没有显示任何问题,只是节点中没有任何更改。也许这不是翻转角色的最佳方式。我对其他方法持开放态度。“向左旋转”功能的设置是为了在角色从向右移动过渡到向左移动时,使角色方向的更改看起来更加无缝(这就是为什么我会分阶段更改精灵的xScale,以给它更“动画化”的感觉)

谢谢你们两位的帮助。这需要一些挖掘,但我发现了对xScale的另一个调用,我将其子类化为。这超过了我的要求,导致了我注意到的跳跃动作。我可以结合父方法解决问题。非常感谢您的提示和反馈

显示实际更改比例的代码,您所发布的只是精灵在屏幕上的位置,纹理不会随提供的代码而更改。我用于将精灵从右向左旋转的代码如下所示。我用函数turnlift()做了一个扩展。该节点在SKNode的子节点中准备,并具有以下函数:override func turnLeft(){removeActionForKey(“rightTurn”)让turnRight2Left=SKAction.sequence([SKAction.scaleXTo(0.3,持续时间:0.1),SKAction.scaleXTo(-0.3,持续时间:0.1)]运行操作(右转2左,按键:“左转”)}在你的问题中用formattingok我想我理解你在这里做什么,你想让这个家伙缩小尺寸翻转然后扩展,这个代码工作得很好,所以我需要看看右转,以及你如何实际调用这些函数Hanks Dragon,很高兴知道代码应该工作。这个项目太大了,无法加载到q中继续,但听起来我需要寻找其他对节点大小起作用的东西。我再做一些挖掘后会回来。你是用GKGoal来寻找代理吗?@SimonePistecchia是的,寻找并避免