【问题标题】:SpriteKit origination and angle of gestureSpriteKit 起源和手势角度
【发布时间】:2016-08-28 15:24:02
【问题描述】:

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

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

我可以使用 touchesBegan 和 touchesEnded 自己计算这些,但想知道是否有其他方法可以使用 sprite。

谢谢。

【问题讨论】:

  • 为什么需要不同的方式?它如您所描述的那样工作...显示您从哪里开始,在哪里结束。很容易计算两点之间的向量。
  • 也许亚历克斯希望他的物体运动更多 :) 看我的回答。
  • Kendel,我不需要其他方式,只是不想为有现成解决方案的东西编写代码,似乎这是最简单的方法......

标签: swift sprite-kit uigesturerecognizer touches


【解决方案1】:

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

使用touchesEnded,您所做的有点像“投掷”手势,其功能可能会受到一定限制。

例如,如果您希望对象在 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/

还有苹果的东西: 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 编辑器很棒,只需在后端进行一些编程,您实际上就可以仅使用该编辑器制作完整的游戏。

【讨论】:

  • 谢谢。我最终在我的(简单)案例中使用了 touchesBegan/Ended,但我看到你的观点,即 touchesMoved 提供了更多的控制权。
  • @AlexZabrodskiy NP,我设想了某种曲棍球或足球(futbol),我在想,如果他想对此进行一些旋转怎么办? touchesEnded 不起作用 xD(就像锯齿形运动)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多