Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 精神起源与姿势角度_Swift_Sprite Kit_Uigesturerecognizer_Touches - Fatal编程技术网

Swift 精神起源与姿势角度

Swift 精神起源与姿势角度,swift,sprite-kit,uigesturerecognizer,touches,Swift,Sprite Kit,Uigesturerecognizer,Touches,我对SpriteKit非常陌生,所以对于初学者提出的问题,我深表歉意 我有两个对象,用户可以从中滑动到“目标”的方向。我需要确定起始点(即从两个对象中的哪个对象开始触摸)和滑动角度 我可以用touchesbeated和touchesend来计算这些,但我想知道是否还有其他方法可以用精灵来计算 谢谢 总有另一种方法做某事——这就是编程!但是,正如鲁布·戈德伯格(Rube Goldberg)在下面所展示的,另一种方法可能不是最好/最简单的方法: 使用touchesend你做的有点像是一个“扔”的手

我对SpriteKit非常陌生,所以对于初学者提出的问题,我深表歉意

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

我可以用touchesbeated和touchesend来计算这些,但我想知道是否还有其他方法可以用精灵来计算

谢谢

总有另一种方法做某事——这就是编程!但是,正如鲁布·戈德伯格(Rube Goldberg)在下面所展示的,另一种方法可能不是最好/最简单的方法:

使用
touchesend
你做的有点像是一个“扔”的手势,它的功能可能会受到一定的限制

例如,如果希望对象以x/f的某个频率连续获得速度/进行小的路径更改(无需抬起手指),则可以使用
touchesMoved
。用你喜欢的任何计算/函数填充它

示例:使用触摸拖动节点:
覆盖功能触摸移动(触摸:设置,带事件:UIEvent?){
//-主触摸处理器
接触{
让t点=触摸。位置Innode(自身)
我的超级酷节点!.position=TPOINT
//把数学的东西放在这里,等等。
}
}
这使您能够更好地控制从A点到B点的精灵发生了什么

以下是一个很好的教程:

还有苹果的东西: :

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

你所说的是一个相当常规的(数学)函数,距离公式,因此用它来制作一个实际的
func
非常有利,这样你就可以自定义它,而不必为你想做的每件事手动编写大量的代码。 SK已经让事情变得超级简单。用CSPNY宇宙飞船做基本的Hello World,在C++中使用了Direct3D/OpenGL(还有大量的高级数学),已经有一千行代码(或更多)。
SK编辑器非常棒,只需在后端进行一点编程,您就可以通过编辑器制作完整的游戏。

为什么需要另一种方式?正如你所描述的那样。。。显示您的起点和终点。很容易计算两点之间的向量。也许Alex想要更多关于他的物体运动的信息:)见我的答案。Kendel,我不需要其他方法,只是不想为有现成解决方案的东西编写代码,似乎这是最简单的方法…谢谢。在我的(简单的)案例中,我最终使用了touchesStart/End,但我明白你的观点,touchesMoved在途中提供了更多的控制权。@Alexabrodskiy NP,我设想了某种曲棍球或足球(futbol),我在想,如果他试图在上面旋转怎么办?触碰不起作用xD(像一个锯齿形运动)
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.
        
    }
}