игра IOS сделать эффект слоя маски - PullRequest
3 голосов
/ 29 февраля 2012

enter image description here Мне нужен слой «маска», который покрывает весь экран, с центральной частью (круг), чтобы быть прозрачным. Затем я могу перемещать слой маски вокруг с помощью касания. Пользователь может видеть только прозрачную часть посередине.

Я не думаю, что файл png может помочь, потому что файл должен быть очень большим, чтобы охватить весь экран.

Так возможно ли это сделать кодированием?

Я нашел это в Интернете, но мало что знаю об openGL. http://www.cocos2d -iphone.org / форум / тема / 7921 .

было бы здорово, если бы я мог использовать CCMaskLayer и вводить с радиусом. Я могу справиться с сенсорным событием самостоятельно.

ожидаемый результат в прикрепленном png-файле, центральная часть прозрачная. Мне нужно это, чтобы покрыть мой экран, и показать только среднюю часть. красная часть покрыта.

Ответы [ 2 ]

3 голосов
/ 12 марта 2012

Я пишу CCMaskLayer, чтобы сделать то же самое.

https://github.com/smilingpoplar/CCMaskLayer

3 голосов
/ 29 февраля 2012

Вы можете решить эту задачу с текстурой обрезанного круга двумя способами:

1) Нарисуйте спрайт с текстурой круга в центре экрана и нарисуйте еще 4 спрайта вокруг (сверху, снизу, слева и справа) с небольшой красной текстурой, но масштабируйте, чтобы покрыть весь экран.

2) (более элегантно, но сложнее в реализации) Сделайте слой маски полноэкранным, но настройте координаты текстуры. В деталях:

  • установите режим обтекания на GL_CLAMP_TO_EDGE для вашей текстуры круга
  • настроить координаты текстуры вершин вашего слоя (для этого вам нужно создать подкласс базы CCLayer):

    enter image description here

Здесь v означает положение вершины, а t - координаты текстуры. Вам необходимо установить правильные координаты текстуры для четырех угловых вершин слоя. В будущем, если вы захотите перетащить круг, вам нужно будет добавить некоторые значения смещения к координатам текстуры.

...