swift - 如何防止节点移出(移出)另一个节点

标签 swift sprite-kit skphysicsbody sknode

我在屏幕上有几个方形节点(如地砖),我想限制我的玩家 (P) 节点在这些节点内移动。

---------------------------------
|   | P |   |   |   |   |   |   |    <- Want no movement allowed 
---------------------------------       outside of these squares.
            |   |
        -------------
        |   |   |   | ...  
        -------------

我想知道是否有一种优雅的方法可以使用 SpriteKit Physics 来做到这一点,而无需在地板周围一直放置不可见的方 block 。

谢谢!

最佳答案

SKConstraint 对象描述了对节点位置或方向的数学约束。

您可以使用SKConstraint 使节点与水平轴上的特定点保持一定距离:

let center = size.width/2.0, difference = CGFloat(170.0)
let leftConstraint = SKConstraint.positionX(SKRange(constantValue: center - difference))
let rightConstraint = SKConstraint.positionX(SKRange(constantValue: center + difference))    
player.constraints = [leftConstraint, rightConstraint]

您还可以决定在游戏过程中启用或禁用某个约束:

leftConstraint.enabled = false

关于swift - 如何防止节点移出(移出)另一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40033678/

相关文章:

ios - 在 Swift 中指定 UITextField 的边框半径

swift - 使用 getter 和 setter 在 Swift 中计算属性

ios - SKAction playSoundFileNamed 没有通过 iphone 扬声器播放音频

ios - 快速 SpriteKit SKNode 类

ios - 触摸移动方法中物理体尺寸不随 SKSpriteNode 尺寸变化而变化

ios - 为 SKSpriteNode 的子类加载物理体

ios - 在 MKAnnotationView 中点击按钮打开 NavigationController

mysql - 将 mysql 日期转换为 NSDate

ios - 使用 sprites velocity (swift) flappy bird 游戏旋转 Sprite

ios - Spritekit SKNode 大小百分比