在 Xcode 中,单击时如何让 SkSpriteNode 向上移动?

Posted

技术标签:

【中文标题】在 Xcode 中,单击时如何让 SkSpriteNode 向上移动?【英文标题】:In Xcode how would I get a SkSpriteNode to move up when clicked on? 【发布时间】:2018-08-05 06:22:48 【问题描述】:

如何让 SkSpriteNode 在单击时向上移动? -谢谢

https://i.stack.imgur.com/fcOvr.png

【问题讨论】:

【参考方案1】:

假设你的节点被称为盒子

使用触摸开始功能

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 
    for _ in touches
        let touch:UITouch = touches.first!
        let touchLocation = touch.location(in: self)
        box.physicsBody?.velocity = CGVector(dx: 0, dy: 0)
        box.physicsBody?.applyImpulse(CGVector(dx: 0, dy:300))

    


applyImpusle 方法采用 x 值沿 x 轴(左或右)移动,并采用 y 值沿 y 轴(向上或向下)移动。相应地设置 dy。

其余部分取决于您的场景属性,例如重力、摩擦力、盒子的质量等

【讨论】:

假设人们使用的是物理实体,你应该使用physicsBody! 而不是physicsBody?【参考方案2】:

不使用physicsBody,您可以使用此代码,只需更改向上移动的方式(我手动执行此操作只是为了保持简单)。

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 
    for touch in touches 
        let location = touch.location(in: self)
        
        if sprite.contains(location)
            
            sprite.position = CGPoint(x: 0, y: 10)
        

【讨论】:

以上是关于在 Xcode 中,单击时如何让 SkSpriteNode 向上移动?的主要内容,如果未能解决你的问题,请参考以下文章

将 SKSprite 的图像更改为 SKShapeNode

Xcode:如何让它停止打开额外的窗口?

如何使用 Swift SpriteKit 在 For 循环中一一创建 SKSprite 节点

在ios 7 xcode中单击滚动视图上方的按钮时,如何滚动滚动视图?

单击iOS / xcode后如何使按钮消失?

SKSprite 场景的内存问题