SpriteKit触摸物理身体(空气曲棍球比赛)

时间:2015-08-04 16:37:38

标签: ios iphone swift ipad sprite-kit

我正在尝试使用SpriteKit制作一个空气曲棍球比赛。我试图让冰球拖得可拉,但是我不能让它们在触摸结束后继续移动。现在我绑定触摸和冰球,并在触摸移动时设置它的位置。

使用物理系统:

override func update(currentTime: NSTimeInterval) {
        for (touch, node) in draggingNodes {
            let targetPosition = touch.locationInNode(self)
            let distance = hypot(node.position.x - targetPosition.x, node.position.y - targetPosition.y)
            var damping = sqrt(distance * 100)
            if (damping < 0) {
                damping = 0.0
            }
            node.physicsBody!.linearDamping = damping
            node.physicsBody!.angularDamping = damping
            let translation = CGPointMake(targetPosition.x - node.position.x, targetPosition.y - node.position.y)
            node.physicsBody!.velocity = CGVectorMake(translation.x * 100, translation.y * 100);
        }
    }

1 个答案:

答案 0 :(得分:0)

你可能需要做更多的阅读。要么你将使用物理系统:

在这种情况下,您将在触摸结束事件上向冰球传递impulse,根据位置的增量和从最后一帧到当前帧的时间差(或某种类型的平均超过1帧)。 https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Physics/Physics.html

[OR]

您将手动设置冰球上的速度(不使用物理系统),然后根据该速度手动更新冰球每帧的位置,然后根据角度与另一个物体接触时重新计算其矢量。发病率。