SpriteKit 起源和手势角度

SpriteKit origination and angle of gesture

我是 SpriteKit 的新手,对于初学者的问题深表歉意。

我有两个对象,用户可以从中滑动到 "target" 的方向。我需要确定起始点(即触摸来自两个对象中的哪一个)和滑动角度。

我可以自己使用 touchesBegan 和 touchesEnded 来计算它们,但想知道是否有任何其他方法可以用精灵来完成。

谢谢。

总有另一种做某事的方法——这就是编程!但是,正如 Rube Goldberg 在下面演示的那样,另一种方法可能不是最好/最简单的方法:

使用 touchesEnded 你做的有点像 'fling' 手势,它的功能可能会有所限制。

例如,如果您希望物体在 x 的某个 f 处连续获得速度/进行小的路径变化(不必抬起手指),您可以使用 touchesMoved。用你喜欢的任何计算/函数填充它。

示例:通过触摸拖动节点:

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
    //-Main touch processoereor
    for touch in touches {
        
        let TPOINT  = touch.locationInNode(self)
        my_super_cool_node!.position = TPOINT
        
        // Put math stuff here, etc.
        
    }
}

这使您可以更好地控制精灵从 A 点到 B 点发生的情况。

这里有一个很好的教程:

http://www.globalnerdy.com/2016/02/02/writing-ios-games-with-swift-and-sprite-kit-part-2-responding-to-touches/

还有 Apple 的东西: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIResponder_Class/#//apple_ref/occ/instm/UIResponder/touchesMoved:withEvent:

不幸的是,SpriteKit 中最好的东西需要一些巧妙的实现/数学,并且不能全部用场景编辑器和节点来完成。

你说的是一个相当常规的(数学)函数,距离公式,所以用它做一个实际的 func 是非常有利的,这样你就可以自定义它而不是必须为你想做的每件事手动编写大量代码。 SK 已经让事情变得超级简单。在使用 C++ Direct3d / OpenGL(以及大量高级数学)的日子里,即使是用旋转宇宙飞船做基本的 hello world 也需要一千行(或更多)代码。

SK 编辑器很棒,只需在后台进行一些编程,您实际上可以只用编辑器制作完整的游戏。