仅当 SKSpriteNode 是 Fruit 类型时才用手指移动 SKSpriteNode(SKSpriteNode 的子类)

Posted

技术标签:

【中文标题】仅当 SKSpriteNode 是 Fruit 类型时才用手指移动 SKSpriteNode(SKSpriteNode 的子类)【英文标题】:Moving SKSpriteNode with finger only if it is of type Fruit (subclass of SKSpriteNode) 【发布时间】:2018-11-06 15:28:53 【问题描述】:

我正在创建一个游戏,用户可以在场景中移动一些水果。我希望用户能够在场景中只移动水果而不是任何其他 SKSpriteNode,所以我编写了下面的代码来实现它。但是代码不能正常工作,因为我似乎无法拖动我的任何精灵,而是只有当我停止触摸屏幕并且它们不会移动太多时它们才会改变位置。

    override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) 
    let touch = touches.first
    if let location = touch?.location(in: self)
        let nodesTouched  = nodes(at: location)
        for node in (nodesTouched) 
            if node is Fruit
            for t in touches 
                let locationMoved = t.location(in: self)
                node.position.x = locationMoved.x
                node.position.y = locationMoved.y
                

            
        
    



有人知道这是怎么回事吗?

提前致谢!

【问题讨论】:

【参考方案1】:

我找到了一个解决方案,基本上每次我触摸特定的 Fruit 实例时,将physicsBody.affectedByGravity 属性设置为 false,然后在我停止触摸时立即将其设置为 true。这样就可以将所有水果拖到任何我想要的地方。

【讨论】:

以上是关于仅当 SKSpriteNode 是 Fruit 类型时才用手指移动 SKSpriteNode(SKSpriteNode 的子类)的主要内容,如果未能解决你的问题,请参考以下文章

iOS -- SKSpriteNode类

SKScene - 如何从 SKSpriteNode 获取类

是否可以将 SKSpriteNode 添加到另一个类的场景中?

编辑 SKSpriteNode 自定义类的属性?

将物理应用到自定义 SKSpriteNode 类

从 SKSpriteNode 类实例访问 GameScene 中的数组?