Обнаружение столкновений с изображениями на iPhone с использованием OpenGL - PullRequest
0 голосов
/ 24 декабря 2010

Позвольте мне предварять извинения за глупость моего вопроса, потому что я очень новичок в программировании игр: P

Я работаю над 2D-игрой (вроде космического шутера сверху вниз) для iPhone, использующей движок, очень похожий на cocos2d (хотя и не совсем) в OpenGL ES. Я пытаюсь выяснить, как я собираюсь делать обнаружение столкновений. Все корабли для моей игры - изображения, и игра загрузит изображение в виде текстуры на экран. У меня уже есть очень очень простое обнаружение, которое в основном просто берет прямоугольники изображений и проверяет, сталкиваются ли они и могут ли они это делать просто отлично. Но, конечно, корабль не совсем занимает весь прямоугольник, поэтому там есть пробелы. Итак, мой вопрос: как я должен учитывать этот пробел? Нужно ли хранить матрицы кораблей? Или есть другой способ? Я также слышал о возможном использовании физического движка Бурундука для обнаружения столкновений? Как это будет работать? Заранее спасибо за любую помощь!

1 Ответ

2 голосов
/ 24 декабря 2010

С Рождеством!

(1) в отношении Бурундука, краткий ответ: да, вы должны немедленно загрузить бурундука, пожертвовать что-то парню и начать узнавать об этом . Так что это абсолютная уверенность - вы должны сделать это, если вы заинтересованы в этой области, и вам больше нечего сказать об этом, и вы должны сделать это прямо сейчас (!!)

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

(2) вы спрашиваете об использовании аппроксимации («просто» прямоугольника) вместо чего-то более точного вида, как ваши космические корабли. На самом деле, возможно, вы будете удивлены, узнав, что именно так обычно и делается во всех ваших знаменитых играх с громкими именами, в которые вы играли с детства! Действительно, иногда вы можете использовать чуть больше, чем ДОТ (!) Для обнаружения столкновений.

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

Если вы хотите сделать более сложную модель - просто сделайте одну ! Создайте его из трех или четырех прямоугольников, используя вашу текущую систему. Попробуйте их «все друг против друга» и «сначала нужно проверить один большой», чтобы увидеть, находится ли он где-нибудь рядом (что-то вроде простого пространственного хеширования).

Вы обнаружите, что когда вы делаете это с Бурундуком, который, как вы теперь знаете, вы должны немедленно начать после прочтения этого сообщения, вы просто создаете его таким же утомительным способом. Это не волшебная пуля. Но если вы собираетесь использовать «более сложную модель», то да, лучше сделать что-то стандартное, бурундук, чтобы выполнить работу - это будет сделано быстрее и лучше. Есть куча уроков, на которые нужно учиться!

(3) Unity не только для 3D Наконец, если вы хотите сделать это с умом, вы должны использовать Unity3D, который позволит вам получить доступ к самому металлу, физике Nvidia на чипсете. Обратите внимание, что Unity отлично работает и для 2D-игр - вы просто нажимаете одну кнопку в Unity, чтобы использовать 2D-проекцию (многие фирменные, если 2D-игры сделаны именно так).

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

В чем недостаток этого? Ах, ха ... ну, в общем, вам нужны превосходные 3D-модели всех вещей в вашей игре! (Как вы видите, они встроены в специальные функции «как мы сделали фильм», которые поставляются с вашим любимым Blu-Ray Pixar.) Для этого вам нужны такие вещи, как Autodesk, Maya и тому подобное. вполне вероятно, что вы купите несколько моделей, уже готовых, в магазине цифровых принадлежностей (не нужно создавать «стул», как это уже было сделано 1000 раз, и вы можете купить его за десять долларов).

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

Кстати, на фронте Бурундука - вы можете просто использовать Corona, которая смехотворно проста в использовании и имеет встроенную физику, похожую на бурундука, с минимальными усилиями с вашей стороны! Вы могли бы сделать всю игру быстрее, чем написать это письмо. Вы уже можете продавать свою игру и придумывать следующую. Или вы можете использовать «Cocos», который действительно имеет встроенную библиотеку физики, похожую на бурундука… лично (только мне) я не люблю и не буду касаться кокосовых орехов - но, конечно, многие игры используют это.

(Мне кажется бессмысленным использовать cocos, который является продуктом "для идиотов", когда вы можете просто пойти дальше и использовать Corona, который является продуктом "для идиотов", но невероятно проще в использовании, 1000x более прочный и, вероятно, буквально в 10 раз быстрее, чтобы закончить ваш продукт и начать зарабатывать деньги.)

Ноэль Резюме:

Таким образом, в некотором смысле использование Unity3D (и, следовательно, фактической физики nvidia на микросхемах вашего компьютера) является наилучшим решением, если вы хотите получить подробные столкновения. Спускаясь на один шаг, Бурундук - это именно то, что вы должны использовать на ifone / ipad для 2D-физики - это именно то, что используется во всех известных нам играх, которые мы знаем так хорошо. Вы должны немного научиться делать это, прыгайте на это - это супер весело. Наконец, продолжайте в том же духе и просто усложните текущую модель , если хотите - сверните свою собственную, добавив больше прямоугольников!

И Четвертый момент: не забывайте, что в играх, как ни удивительно, вы часто можете сойти с удивительно простой физики (часто ПРОСТО !! чем один прямоугольник - просто проклятая точка - т. е. просто измерение расстояния между центрами!) В-пятых, приложив все усилия к проверке более детальной физики, вы сыграете один тест друг против друга и найдете из какой простейшей физики ты можешь сойти с рук.

Ура!

...