节点旋转没有跟随手指

布隆丹加

我正在尝试旋转箭头以跟随手指移动,但是效果却很奇怪。绝对不会跟随它。我正在尝试在touchesMoved中做到这一点。我试图做到这一点:

var fingerLocation = CGPoint()

override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
    for touch: AnyObject in touches {
        fingerLocation = touch.locationInNode(self)
        let currentOrient = arrow.position
        let angle = atan2(currentOrient.y - fingerLocation.y, currentOrient.x - fingerLocation.y)
        let rotateAction = SKAction.rotateToAngle(angle + CGFloat(M_PI*0.5), duration: 0.0)

        arrow.runAction(rotateAction)

    }
}

并且也尝试了这个:

var fingerLocation = CGPoint()

override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
    for touch: AnyObject in touches {
        fingerLocation = touch.locationInNode(self)
}
override func update(currentTime: CFTimeInterval) {
    /* Called before each frame is rendered */
   var radians = atan2(fingerLocation.x, fingerLocation.y)
    arrow.zRotation = -radians
}

我也尝试过SKConstraint.orientToPoint但也没有运气。我究竟做错了什么?对类似问题的每个答案都是建议atan2,但它似乎对我不起作用。

旋风

如果您想将精灵旋转到触摸位置,它应该很简单:

    let touchLocation = touch.locationInNode(self)

    var dx =  hero.position.x - positionInScene.x;
    var dy = hero.position.y - positionInScene.y  ;

    var angle = atan2(dy,dx) + CGFloat(M_PI_2)

    hero.zRotation = angle

当我尝试过时它起作用了,因此它可以为您提供从哪里开始的基本思路。或者我误解了您要达到的目标...

编辑:

当前,如果尝试将角度转换为度,您将获得的角度是-90到270度。在这里描述原因。如果要使用0到360度范围内的角度,可以将上面的代码更改为:

    var dx = missile.position.x - positionInScene.x ;
    var dy = missile.position.y  - positionInScene.y;

    var angleInRadians = atan2(dy,dx) + CGFloat(M_PI_2)

    if(angleInRadians < 0){
        angleInRadians = angleInRadians + 2 * CGFloat(M_PI)
    }

    missile.zRotation = angleInRadians

    var degrees = angleInRadians < 0 ? angleInRadians * 57.29577951 + 360 :  angleInRadians * 57.29577951

这是调试数据的结果:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift UIGestureRecogniser跟随手指

来自分类Dev

跟随手指展开UIView

来自分类Dev

棒棒糖上RecyclerView上的滚动边缘效果不跟随手指

来自分类Dev

我要跟随手指画线

来自分类Dev

使用 onTouchListener 查看不随手指移动

来自分类Dev

VR凝视系统从头开始,指针没有跟随手机的“头部”

来自分类Dev

Android画线跟随你的手指

来自分类Dev

用一根手指旋转椭圆(WPF)

来自分类Dev

用手指拖动使精灵围绕枢轴旋转

来自分类Dev

长按后松开手指,iOS中没有Javascript事件?

来自分类Dev

在没有手指状物体的情况下检测屏幕上的压力

来自分类Dev

使用Swift + SpriteKit将节点移至手指

来自分类Dev

拖动与手指移动相关的1个精灵节点?

来自分类Dev

用手指手势在屏幕上的任何位置移动旋转的图像

来自分类Dev

用手指手势在屏幕上的任何位置移动旋转的图像

来自分类Dev

android:按下按钮并跟随手势

来自分类Dev

android:按下按钮并跟随手势

来自分类Dev

如何在WinRT中用一根手指触摸获得总旋转角度?

来自分类Dev

捏缩放并用两根手指旋转Android中的ImageView

来自分类Dev

沿手指android旋转3d立方体

来自分类Dev

在视图iOS Xcode上用手指移动和旋转图像

来自分类Dev

如何只用一根手指就能在Google Maps API(android)上旋转?

来自分类Dev

用手指触摸旋转 3D 对象 Unity 3D

来自分类Dev

swift : UIView 的平滑转换与 iOS 控制面板完全一样(跟随用户手指,使用平移)

来自分类Dev

为什么在和弦p2p系统中,手指表不存储有关其他节点的所有信息?

来自分类Dev

android渲染用户手指的轨迹

来自分类Dev

android渲染用户手指的轨迹

来自分类Dev

手指绘制的运动路径

来自分类Dev

UIPanGestureRecognizer:手指下方的偏移视图

Related 相关文章

  1. 1

    Swift UIGestureRecogniser跟随手指

  2. 2

    跟随手指展开UIView

  3. 3

    棒棒糖上RecyclerView上的滚动边缘效果不跟随手指

  4. 4

    我要跟随手指画线

  5. 5

    使用 onTouchListener 查看不随手指移动

  6. 6

    VR凝视系统从头开始,指针没有跟随手机的“头部”

  7. 7

    Android画线跟随你的手指

  8. 8

    用一根手指旋转椭圆(WPF)

  9. 9

    用手指拖动使精灵围绕枢轴旋转

  10. 10

    长按后松开手指,iOS中没有Javascript事件?

  11. 11

    在没有手指状物体的情况下检测屏幕上的压力

  12. 12

    使用Swift + SpriteKit将节点移至手指

  13. 13

    拖动与手指移动相关的1个精灵节点?

  14. 14

    用手指手势在屏幕上的任何位置移动旋转的图像

  15. 15

    用手指手势在屏幕上的任何位置移动旋转的图像

  16. 16

    android:按下按钮并跟随手势

  17. 17

    android:按下按钮并跟随手势

  18. 18

    如何在WinRT中用一根手指触摸获得总旋转角度?

  19. 19

    捏缩放并用两根手指旋转Android中的ImageView

  20. 20

    沿手指android旋转3d立方体

  21. 21

    在视图iOS Xcode上用手指移动和旋转图像

  22. 22

    如何只用一根手指就能在Google Maps API(android)上旋转?

  23. 23

    用手指触摸旋转 3D 对象 Unity 3D

  24. 24

    swift : UIView 的平滑转换与 iOS 控制面板完全一样(跟随用户手指,使用平移)

  25. 25

    为什么在和弦p2p系统中,手指表不存储有关其他节点的所有信息?

  26. 26

    android渲染用户手指的轨迹

  27. 27

    android渲染用户手指的轨迹

  28. 28

    手指绘制的运动路径

  29. 29

    UIPanGestureRecognizer:手指下方的偏移视图

热门标签

归档