как деформировать изображение? - PullRequest
1 голос
/ 30 марта 2011

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

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

http://www.playgecogames.com/file.php?f=657&a=popup

пожалуйста, ответьте в ближайшее время спасибо

Ответы [ 5 ]

3 голосов
/ 22 апреля 2011

Вы не говорите, если это в 2D или 3D, или какие методы вы собираетесь использовать.

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

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

Если вы хотите сделать это без OpenGL и просто прямых изображений, вы можете использовать повторную выборку изображений для имитации эффекта.У вас есть исходное нетронутое изображение, которое «фильтруется», чтобы составить полученное изображение.Сначала нет никаких деформаций, поэтому вы копируете оригинальное изображение дословно.Каждый раз, когда пользователь нажимает на объект, вы можете добавить деформацию, используя фильтр, или преобразовать в интересующую вас локальную область.Эта функция будет искажать исходное изображение искаженным образом, в результате чего оно будет выглядеть так, как будто объект поврежден.

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

1 голос
/ 22 апреля 2011

Если вы немного знакомы с техникой обработки изображений, вот документация для доступа к пикселям изображения: Справочник Apple

У вас также есть библиотеки для этого, например, такие:
simple-iphone-image-processing

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

0 голосов
/ 26 апреля 2011

Человек, который сделал эту флэш-игру, использовал около 4 изображений для отображения автомобиля.Если вы хотите, чтобы игра была в 2d, проще всего нарисовать машину, разрезать ее на 4 части (: левая сторона + правая сторона (дубликат левой стороны) капот и крыша).

Если вы хотите «по-настоящему» деформировать автомобиль, вам придется использовать 3d-движок, такой как openGLES.

Я бы действительно предложил сделать это в 2d:)

0 голосов
/ 22 апреля 2011

Я думаю, вам следует использовать эффекты cocos2d http://www.cocos2d -iphone.org / wiki / doku.php / prog_guide% 3aeffects + несколько изображений. Потому что есть много частей, которые падают после того, как игрок пнул машину. Например, когда пользователь пинает боковое зеркало, вы должны изменить изображение автомобиля без бокового зеркала.

0 голосов
/ 22 апреля 2011

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

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