2015-08-04 4 views
-1

Я пытаюсь сделать воздушную хоккейную игру с помощью SpriteKit. Я пытаюсь перетащить шайбы, но я не могу заставить их продолжать двигаться после того, как осязание закончилось. Прямо сейчас я привязываю прикосновение и шайбу и устанавливаю ее положение при движении касания.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); 
     } 
    } 
+0

Вы попробовали это на устройстве? Симулятор не подходит для тестирования этого типа поведения. – 0x141E

+0

попробовал на симуляторе, у меня нет учетной записи разработчика iOS, и я использую xcode 6.x –

+1

Вы можете найти это полезным http://stackoverflow.com/questions/28245653/how-to-throw-skspritenode – 0x141E

ответ

0

Вы, вероятно, будет необходимо сделать гораздо больше читать. Либо вы будете использовать физическую систему:

В этом случае вы нанесете impulse на шайбу на событие касания, рассчитав скорость на основе дельта в позиции и дельта во времени от последнего кадра до текущего кадр (или некоторый тип среднего значения более чем на 1 кадр). https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Physics/Physics.html

[OR]

Вы вручную установить скорость на шайбе (не используя систему физики), а затем вручную обновить позицию Пака в кадре на основе этой скорости, а затем пересчитать вектор, когда он вступает в контакт с другим объектом, основанным на угле падения.

+0

Я использую физическую систему. проблема в том, что после касания конец шайбы останавливается или возвращается в последнюю позицию. –

+0

Я пробовал, но он не работал (не продолжался), поэтому я вернулся только к установке позиции –

+0

Это потому, что вы вручную устанавливаете свою позицию. Поэтому прочитайте первую часть моего ответа, в которой говорится о необходимости установить импульс на физическом теле, основанный на вычислении вектора из предыдущих кадров. –

Смежные вопросы