2016-08-28 2 views
3

Я очень новичок в SpriteKit, поэтому извиняюсь за вопрос новичка.Начало и угол жестов SpriteKit

У меня есть два объекта, из которых пользователь может пронести в сторону «цели». Мне нужно определить начальную точку (то есть из какого из двух объектов возникла прикосновение) и угол прокрутки.

Я могу использовать touchhesBegan и touchesEnded, чтобы рассчитать их сам, но задаюсь вопросом, есть ли другой способ сделать это со спрайтами.

Спасибо.

+1

Зачем вам нужен другой способ? Он работает, как вы описываете ... Показывает, где вы начинаете, и где вы заканчиваете. Легко вычислить вектор между двумя точками. – Kendel

+0

Возможно, Алекс хочет что-то _more_ своим движениям объектов :) см. Мой ответ. – Fluidity

+0

Kendel, мне не нужен был другой способ, просто не хотел кодировать что-то готовое решение, похоже, что это самый простой способ сделать это ... – Alex

ответ

3

Всегда есть еще один способ сделать что-то - это программирование! Но, как Руба Голдберга показывает ниже, другой способ не может быть лучшим/простой способ:

enter image description here

Использование touchesEnded вы делаете вид, как «Fling» жест, который может быть несколько ограничен в его способности ,

Пример: Если вы хотите, чтобы объект постоянно увеличивал скорость на некотором f из x/делал небольшие изменения пути (не обязательно поднимая палец), вы можете использовать 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. 

    } 
} 

Это дает гораздо больший контроль над тем, что происходит с вашим спрайт из точки А в точку Б.

Вот хороший учебник:

http://www.globalnerdy.com/2016/02/02/writing-ios-games-with-swift-and-sprite-kit-part-2-responding-to-touches/

И материал от Apple: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIResponder_Class/#//apple_ref/occ/instm/UIResponder/touchesMoved:withEvent:

К сожалению, лучшие вещи в SpriteKit потребуют некоторых умных реализаций/математики и не могут быть выполнены с помощью редактора сцен и узлов.

Что вы имеете в виду - это довольно простая (математическая) функция, формула расстояния, поэтому очень выгодно сделать из нее фактический func, так что вы можете настроить его и не писать вручную тонны кода для каждой вещи, которую вы хотите сделать. SK делает вещи очень легкими уже. Выполнение даже базового мира привет с вращающимися космическими кораблями было бы тысячей строк кода (или более) в тот же день с C++ Direct3d/OpenGL (и тонны передовой математики).

Редактор SK замечательный, и с небольшим программированием на бэкэнде вы можете делать полноценные игры только от редактора.

+0

Спасибо. Я закончил тем, что использовал touchsBegan/Ended в моем (простом) случае, но я вижу, что ваша мысль о том, что touchhesMoved дает больше контроля на этом пути. – Alex

+0

@Алексзабродский Н.П., я предвидел какой-то хоккей или футбол (футбол), и я думал, что, если он пытался на него накрутить? touchesEnded не будет работать xD (как движение зигзага) – Fluidity