HGE + Box2D
|
|
RomanNVKZ | Дата: Пятница, 09 Декабря 2011, 04:24 | Сообщение # 1 |
участник
Сейчас нет на сайте
| Появилась нужда в создании игры основанной на физике, но как наиболее просто скрестить HGE и Box2D я без понятия. Думаю надо просто создать физ. прямоугольник для персонажа и на него налепить спрайт с его картинкой. Подскажите, как это можно осуществить?
|
|
| |
Matou | Дата: Пятница, 09 Декабря 2011, 15:15 | Сообщение # 2 |
Исходный коТ
Сейчас нет на сайте
| Все очень просто, создаешь игровой обьект и помещаешь внитри него ссылку на обьект типа b2Body, а внутри обьекта типа b2Body ссылку на пользовательские денные делаешь ссылкой на игровой обьект. Далее внутри игрового обьекта определяешь все что связано с ХГЕ, какие нужны текстуры спрайты, какие бывают параметны, ну в общем всякие свойства присущие данному актору. А потом когда все это сделал и настроил делаешь рендер игрового обьекта с помощью ХГЕ используя координаты получаемые из Box2d через ссылку на игровй обьект. Элементарно же.
|
|
| |
|
Matou | Дата: Пятница, 09 Декабря 2011, 21:50 | Сообщение # 4 |
Исходный коТ
Сейчас нет на сайте
| Если не понимаешь про ссылки то учи С++, это самые основы этого языка. Такие вещи как
b2Body body = world->CreateBody(&bodyDef); Actor actor = new actor(); actor->body = body; body->m_UserData = actor;
не должны вызывать вопросов. Так что лучше подучи С++, а потом уже берись за эти движки.
Вообще задача которую ты поставил довольно обьемная, тут много чего можно сделать, сами движки очень простые и особого изучения не требуют, а вот С++ чтобы с ними умело обращаться, да еще и в тандеме, нужно знать хорошо.
|
|
| |
RomanNVKZ | Дата: Пятница, 16 Декабря 2011, 04:13 | Сообщение # 5 |
участник
Сейчас нет на сайте
| Ребят, подскажите в чём проблема, мне надо чтобы при изменении элемента класса в функции она записывалась в этот элемент класса. Пробовал использовать & и *, но не получается =( Code #include <iostream> #include <conio.h> #include <clocale>
using namespace std;
class strana { public: int peh; int tanks; int boi_in; int boi_out; /*int units[2];*/ };
void data_init(strana *rus) { rus.peh = 5000; /*rus.tanks = 2500; usa.peh = 3000; usa.tanks = 1000;*/ }
*ЗАКОММЕНТИРОВАНО* //void boi(strana rus, // strana usa) //{ // cout << "Отправить в бой "; // cin >> rus.boi_in; // cout << " пехоты." << endl; // usa.boi_in = 1500; // if (usa.boi_in > rus.boi_in) // { // usa.boi_out = usa.boi_in - rus.boi_in; // usa.peh -= usa.boi_in - usa.boi_out; // rus.peh -= rus.boi_in; // cout << "Поражение!!!"; // } // else // { // rus.boi_out = rus.boi_in - usa.boi_in; // rus.peh -= rus.boi_in - rus.boi_out; // usa.peh -= usa.boi_in; // cout << "Победа!!!"; // } //}
int main() { strana rus, usa; setlocale(LC_CTYPE, "Russian"); data_init(&rus); cout << rus.peh; _getch();
}
|
|
| |
Matou | Дата: Пятница, 16 Декабря 2011, 04:33 | Сообщение # 6 |
Исходный коТ
Сейчас нет на сайте
| RomanNVKZ, Ну ты риальнэ отжигаешь) Во первых это уже никакого отношения к поднятой теме не имеет, следовало другую тему создать в соответствующем разделе. Quote (RomanNVKZ) мне надо чтобы при изменении элемента класса в функции она записывалась в этот элемент класса. Гугл транслейт, не?) Я так понимаю ты хочешь изменять член класса по средством функции в которую он передается. Code void data_init(strana *rus) { rus.peh = 5000; /*rus.tanks = 2500; usa.peh = 3000; usa.tanks = 1000;*/ } У тебя это еще и компилируется? Доступ к элементу структуры через указатель нужно получать либо через (*rus).peh = 5000; либо через более короткую запись той же операции rus->peh = 5000;
Хотя в твоем варианте лучше использовать не указатели, а ссылки, тогда достаточно будет сделать лишь изменение в сигнатуре функции, плюс сделать передачу самой структуры, а не ссылки на нее. Как-то так:
void data_init(strana& rus) { rus.peh = 5000; /*rus.tanks = 2500; usa.peh = 3000; usa.tanks = 1000;*/ }
data_init(rus);
Обязательно разберись с такими понятиями как указатель, ссылка, структура, способы передачи параметров функции и доступ к элементам структуры через указатель на нее. Это самые основы программирования, если ты не будешь четко этого понимать, то и написать нечего не сможешь.
Сообщение отредактировал Matou - Пятница, 16 Декабря 2011, 04:35 |
|
| |
Самоделкин | Дата: Вторник, 24 Января 2012, 19:21 | Сообщение # 7 |
участник
Сейчас нет на сайте
| Очень интересуют возможности Box2D. Знакомство с этим движком я имел только в компании Scirra, но и то, что я вижел в других разработках не особо отличается. Движ умеет делать физику только а-ля AngryBirds? (то есть когда, одно и то же лействие (навправление, сила) вызывает разные последствия). Ну рандома тупо. Кто более-менее знаком с движком. Может он быть настроен так, чтобы исключить всякий элемент случайности? (То есть чтобы 99999 раз запущенная сценка с рассыпанием кучи объетов, всегда в финале была идеально одинаковой). (В той ж е сцирре как-то можно было регулировать элемент случайности, но насколько это работало сказать сложно). Сам по себе движок способен на такое?
|
|
| |