Создание графического приложения (прозрачное и без лишних пробелов) - PullRequest
2 голосов
/ 07 октября 2011

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

Я использую CGRectIntersectsRect для столкновения изображений.Мое изображение имеет НЕКОТОРЫЕ дополнительные места, которые я сделал полностью прозрачными с помощью Adobe PhotoShop, но даже если это дополнительное прозрачное пространство не видно, когда два изображения сталкиваются, это будет выглядеть так, как будто вы ничего не ударите, так как это дополнительное невидимое прозрачное пространство является ЧАСТЬЮизображение и когда вызывается CGRectIntersectsRect, он обнаруживает касание между двумя изображениями.Поэтому, если другое изображение касается прозрачного пространства, вызывается CGRectIntersectsRect, и мой код выполняется.Я хочу, чтобы мой код выполнялся только в том случае, если он соответствует реальному пространству COLOR изображения.Вот две вещи, которые могут помочь мне в этом, они задают вопросы.

  1. Узнайте, как сделать НЕТ ДОПОЛНИТЕЛЬНОГО ПРОСТРАНСТВА на изображении в фотошопе.Как я могу это сделать, учебники?
  2. CGRectIntersectsRect вызывается только при касании цветной части изображения.Как это сделать?

Спасибо, ребята!

Ответы [ 3 ]

2 голосов
/ 07 октября 2011

Относительно вашего вопроса № 1, это зависит.Все изображения прямоугольные, все.Итак, если ваш спрайт прямоугольный, вы можете обрезать его в Photoshop до прямоугольной области.Но если вы хотите обработать, скажем, круговой шар, то вы не можете сделать такую ​​вещь, как «удалить лишнее пространство».Ваш круговой шар всегда будет храниться в виде прямоугольного изображения с прозрачным пространством по углам.

1 голос
/ 07 октября 2011

Для обнаружения столкновений для непрямоугольных фигур вам следует заглянуть в одну из множества игровых и / или физических библиотек, доступных для iOS. Cocos2d в сочетании с Box2d или бурундуком являются популярным выбором.

Если вы хотите сделать это самостоятельно, вам нужно начать с чего-то вроде пользовательского CGPath, отслеживающего фактическую форму каждого объекта, а затем использовать функцию, подобную CGPathContainsPoint (это из памяти, это может быть неправильно). Но это не простая работа. Angry Birds использует box2d, AFAIK.

1 голос
/ 07 октября 2011

Узнайте, как сделать НЕТ ДОПОЛНИТЕЛЬНОГО ПРОСТРАНСТВА на изображении в фотошопе. Как я могу это сделать, учебники?

Вы можете вручную выбрать область, используя инструмент Rectangular Marquee Tool и Image > Crop, или автоматически обрезать изображение по цвету краевого пикселя, используя Image > Trim.

CGRectIntersectsRect вызывается только при прикосновении к цветной части изображения. Способ сделать это?

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

Пиксельно-идеальное столкновение

Один из способов реализовать это -

  1. В памяти пустое изображение.
  2. Нарисуйте видимые пиксели из одного изображения синим цветом (# 0000ff).
  3. Нарисуйте видимые пиксели из другого изображения красным (# ff0000).
  4. Если на изображении есть пурпурные пиксели (# ff00ff), значит, есть пересечение.

Альтернативное решение для обнаружения столкновений

Если ваша игра основана на физике, то вы можете использовать физический движок, такой как Box2D . Вы можете использовать круги, прямоугольники и многоугольники для представления всех своих игровых объектов, и это даст вам точные результаты без лишних затрат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...