Как эффект обрезки будет реализован на iPhone? - PullRequest
1 голос
/ 03 ноября 2010

Эффект «разрезания», о котором я говорю, можно увидеть в знаменитых играх для iPhone «Fruit Ninja» и «Cut the Rope», то есть, когда вы перемещаете палец по экрану, после пальца появляется след имитировать эффект резки ножом.

Мне интересно, как называется этот вид эффекта и как он реализован. Кто-нибудь может дать мне подсказку?

Ответы [ 3 ]

2 голосов
/ 04 ноября 2010

Это зависит от того, как вы реализовали свою игру до сих пор, то есть с использованием 2D-графики, как в Какао, или с использованием OpenGL. Например, Fruit Ninja использует последнее, потому что его фрукты - это 3D-модели. В этом случае ваша цепочка Render () обычно рисует все ваши трехмерные объекты, а затем меняет проекцию на орфографическую, чтобы визуализировать такие вещи, как спрайтовые шрифты или нетрансформированные 2D-спрайты (например, HUD) поверх всего. Каждый из этих «спрайтов» представляет собой четырехугольник (2 треугольника, образующих прямоугольник) с нанесенным на него изображением текстуры. Как только текстура загружена в графическую память, графический процессор может очень быстро ее перерисовывать и растягивать, растягивать или вращать без дополнительных затрат!

Так что я бы так и сделал: квад с прозрачной текстурой, который выглядит как «полоска», которую вы хотите. Затем следите за точкой касания и отслеживайте предыдущие (или несколько предыдущих) координаты касания. Вычислите расстояние между двумя точками (Google «формула расстояния») и его угловой вектор (всего две операции деления на deltaX, deltaY теперь, когда у вас есть расстояние). Примените их к матрице 4x4, которую вы будете использовать, чтобы преобразовать свой квад, чтобы вы растягивали его (масштабируйте X по расстоянию), поворачивали в соответствии с вашим вектором и переводили в X, Y самой последней точки касания. Когда касание снято, вы можете легко уменьшить / уменьшить полосу.

Есть другой подход, который вы можете использовать для обработки изогнутых движений. Это сложнее, но выглядело бы лучше. Используйте ПОЛОТУ ТРЕУГОЛЬНИКА с нанесенным изображением «полосы» (координаты текстуры от 0,0 до 1,0) по вершинам вдоль его длины. Затем, основываясь на всех этих предыдущих точках касания, установите все координаты вершины самостоятельно, вычисляя линии между точками и смещая вершины перпендикулярно. Есть смысл? Я надеюсь, что это так! Такой подход веселый и не такой болезненный, как может показаться, обещаю!

0 голосов
/ 03 ноября 2010

Образец GLPaint может дать вам подсказку.

0 голосов
/ 03 ноября 2010

Хорошее место для начала с CoreAnimation: Видео WWDC 2010 .

  • Сессия 424 - Основная анимация на практике, часть 1
  • Сессия 425 -Базовая анимация на практике, часть 2

Чтобы получить к ней доступ, вам будет предложено войти с помощью учетной записи развивающихся.

...