让精灵向各个方向移动

Posted

技术标签:

【中文标题】让精灵向各个方向移动【英文标题】:Make a sprite move in all directions 【发布时间】:2018-12-03 14:58:45 【问题描述】:
@objc func handleSwipe(gesture: UIGestureRecognizer) 
    if let gesture = gesture as? UISwipeGestureRecognizer 
        switch gesture.direction 
        case .up:
            ballPlayer.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 0))
            ballPlayer.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 110))
            print("Swiped up")
        case .down:
            ballPlayer.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 0))
            ballPlayer.physicsBody?.applyImpulse(CGVector(dx: 0, dy: -110))
            print("Swiped down")
        case .right:
            ballPlayer.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 0))
            ballPlayer.physicsBody?.applyImpulse(CGVector(dx: 110, dy: 0))
            print("Swiped right")
        case .left:
            ballPlayer.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 0))
            ballPlayer.physicsBody?.applyImpulse(CGVector(dx: -110, dy: 0))
            print("Swiped left")
        default:
            print("No such gesture")
        
    


我试图让我的精灵节点在所有方向上移动,包括对角线和 90 度到 45 度之间的每个角度。这就是我所拥有的,现在不知道该怎么做。有什么帮助吗?

【问题讨论】:

【参考方案1】:

我认为UISwipeGestureRecognizer 不够灵活,无法满足您的需求。您可能需要使用 UIPanGestureRecognizer 获取从触摸事件开始到结束的向量

This tutorial on UIGestureRecognizer 应该有你要找的东西,特别是减速部分。

【讨论】:

看来我可以在 SpriteKit 中使用它,这就是我在我的应用程序中使用的。 应该可以和 SpriteKit 一起使用。 Here is a tutorial on UIPanGestureRecognizer with SpriteKit。请参阅结尾部分如何使用手势识别器。

以上是关于让精灵向各个方向移动的主要内容,如果未能解决你的问题,请参考以下文章

如何旋转精灵和移动

精灵图像的随机移动位置

如何使二维精灵在按键方向上以平滑的宽弧移动?

将精灵旋转到矢量方向

第7课 游戏贪食蛇-画布精灵方向传感组件过程定义和调用

带箭头键的 8 向图形动画