【问题标题】:Keeping SKNodes upright with GameplayKit使用 GameplayKit 保持 SKNodes 直立
【发布时间】:2015-12-09 15:27:06
【问题描述】:

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

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

【问题讨论】:

  • 显示实际改变比例的代码,你发布的只是精灵在屏幕上的位置,纹理不会随着提供的代码而改变
  • 我用来将精灵从右转向左的代码如下。我已经使用函数 turnLeft() 进行了扩展。该节点是在 SKNode 的子节点中准备的,具有以下功能: override func turnLeft() { removeActionForKey("rightTurn") let turnRight2Left = SKAction.sequence([SKAction.scaleXTo(0.3, duration: 0.1), SKAction.scaleXTo(- 0.3, 持续时间: 0.1), SKAction.scaleXTo(-1.0, 持续时间: 0.1)]) runAction(turnRight2Left, withKey: "leftTurn") }
  • 用格式将其发布在您的问题中
  • 好的我想我明白你在这里做什么,你想让这个家伙缩小翻转然后扩大,这段代码工作正常,所以我需要看看右转,以及你如何实际调用这些函数
  • 感谢 Dragon,很高兴知道代码应该可以工作。该项目太大而无法加载到问题中,但听起来我需要寻找其他对节点大小起作用的东西。当我完成更多挖掘工作时,我会回来。

标签: sprite-kit orientation agents gameplay-kit


【解决方案1】:

感谢两位的帮助。它进行了一些挖掘,但我发现了另一个对 xScale 的调用,它是我的子类。这压倒了我的呼唤,导致了我注意到的跳跃动作。我可以结合父方法并解决问题。非常感谢您的提示和反馈。

【讨论】:

  • 你是在用GKGoal找代理吗?
  • @SimonePistecchia 是的,寻找并避免
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多