Імітація ігрових яблук - не можна змусити його працювати [закрито]


11

Я намагаюся створити гру з ньютонівською фізикою.

Перш ніж прочитати решту цього, це моє головне питання, на яке я намагаюся знайти відповідь:

  • Я продовжую отримувати помилку, яка з’являється у вікні після того, як я спробую запустити свій код. Яку бібліотеку чи DLL мені не вистачає?

У мене є яблуко, апельсин і олівець. Я читав більшу частину документації з двигуном фізики кулі, але я просто не можу змусити яблуко поводитись як папірець (2d-ish). Фізичні двигуни Box2d і подібні - це не те, що я хочу. Я не люблю коробки в реальному житті, не кажучи вже про кіберсвіти.

Я хочу, щоб яблуко пливе до землі, наче хитаючись туди-сюди, як би папірець. Цей сайт дав корисну інформацію, яку я інтегрував у свій код: htp: //www.3dbuzz.com/vbforum/showthread.php? 50854-Please-HELP !! -Simulating-paper-floating-to ground

У мене є така ідея для гри, де ти змушуєш предмети вести себе як інші типи об’єктів, але мої імітації гри просто не працюють.

Я пережив занадто багато видів яблук, щоб порахувати, і жоден з них навіть не наблизився. Я намагався шукати інших людей, які спробували подібні речі (використовуючи googles на зразок http://lmgtfy.com/?q=simluating+game+apples+in+real+life ), але яблука ніколи не повертаються!

Таким чином, я думаю, що я заходжу сюди на нову територію (не хвилюйтесь, я відкрив джерело своїх методів), і тому речі просто не працюють для мене.

Я спробував програмувати різні види яблук, але, можливо, мені потрібне кібер-яблуко? Я не знаю, де можна взяти одну з таких, можливо, у такому місці: http://cyberapples.com/ Хоча цей сайт поки що не працює - це коли-небудь говорити про якийсь сміттєвий смітник чи щось таке. Якісь поради щодо цього також?

Це частина мого коду, яка стосується яблука, що імітує ігрові речі:

///... /* setup other objects in the room and other stuff */ ...

// see http://www.orangepippin.com/apples/arlet-swiss-gourmet
// for more arlet apple details
paper_2d_behaving_apple = new ArletApple[);

/ setup the arlet apple's general characteristics
paper_2d_behaving_apple.species = SPECIES.MALUS_DOMESTICA;
paper_2d_behaving_apple.parentage = PARENTAGE.GOLDEN_DELICIOUS_X_IDARED:
paper_2d_behaving_apple.introduced = make_year(1958);
paper_2d_behaving_apple.fruitColor = COLORS.red;
paper_2d_behaving_apple.fleshCOlor = APPLE_FLESH_COLORS::CREAM;
paper_2d_behaving_apple.fruitSize = GENERIC_FRUIT_SIZES.MEDIUM;
paper_2d_behaving_apple.GoodFor.add("eating fresh");
paper_2d_behaving_apple.GoodFor.add("cooking");
paper_2d_behaving_apple.GoodFor.add("use / keeping: 3 months or more");
paper_2d_behaving_apple.GoodFor.add("ripening PERIOD: 3 months or more");
paper_2d_behaving_apple.diseaseResistances = [DISEASE_RES::SCAB, DISEASE_RES::MILDEW];
///... (I cut some of this out for brevity's sake) ...

///* setup this specific apple's characteristics
paper_2d_behaving_apple.base_color = 0xff2000;
paper_2d_behaving_apple.bumpMap = BUMP_MAP_APPLE;
paper_2d_behaving_apple.texture = TEXTURE_REALISTIC_APPLE;
paper_2d_behaving_apple.feel_texture = SMOOTH;
paper_2d_behaving_apple.has_small_orangey_stripes = TRUE;
paper_2d_behaving_apple.DoesntHaveStem = FALSE;
paper_2d_behaving_apple.juicy = true; // needs a lowercase true for some reason
paper_2d_behaving_apple.has_bugs = false; // heck no it doesn't, I only buy good apples
///... (again I cut some stuff out so this post would'n't be too long) ...

// from http://www.3dbuzz.com/vbforum/showthread.php?50854-Please-HELP!!-Simulating-paper-floating-to-ground
// "i think reactor can do this, i would try cloth witha high air resistance and a very high stifness"
paper_2d_behaving_apple.addReactor(REactor());
// got this technique from http://www.gimptutorials.eu/html/clothify_filter_gimp_gnu.html
import gimp ; GIMP::Clothify(paper_2d_behaving_apple); pass
// / 7 should be high enough - it's a big number
paper_2d_behaving_apple.reactor.stiffness = 7.0f;
paper_2d_behaving_apple.reactor.airResistance = 5.0f; // high, but not "very high"

// setup the world the apple exists in
paper_2d_behaving_apple.owner = new BobFlanderson();
paper_2d_behaving_apple.owner.appearance = APPEARANCE_AWESOME;
paper_2d_behaving_apple.owner.clothes.size = CLOTHES_SIZE_MEDIUM;
paper_2d_behaving_apple.owner.owns_house = false;
paper_2d_behaving_apple.owner.apartment.sucks = true;
paper_2d_behaving_apple.owner.has_wife = false;
paper_2d_behaving_apple.viewSpace = LIVING_ROOM;
paper_2d_behaving_apple.RESTINGon = Kitchen.GetSurfaces()->COUNTER_BY_STOVE;
////... (also cut some  more out here too) ...

// transform the paper behaving apple into something viewable
view_matrix = new ViewMatrix();
view_matrix.DoTransformation(paper_2d_behaving_apple);
view_matrix.makeViewable();
World->ApplyViewMatrix(view_matrix);

paper_2d_behaving_apple.RenderToNeakedEye();

// THIS IS WHERE I'm HAVING THE TROUBLE
actual_existing_apple_on_myCounter = new ExistingApple(paper_2d_behaving_apple);
actual_existing_apple_on_myCounter.bindInRealLive();

// THIS NEVER WORKS! I DON"T KNOW HOW YOU GUYS DO THIS STUFF!
actual_existing_apple_on_myCounter.Translate(LANGUAGES::ENGLISH);
// saw the IW_FIXED on some jam making site
// (http://www.madewithmarmalade.com/devnet/documentation#/api/api/group__IwGeomCore.html)
//  - that's the closest I've come to seeing anything close to what
// I'm trying to do
actual_existing_apple_on_myCounter.TranslateTo(0, 0, IW_FIXED(10.0f));
apple_now_inAir = actual_existing_apple_on_myCounter;

// I know this is C++ code, but some ruby sites were saying that it's best
// to put an exclamation point after a function that modifies a physical
// object - no luck yet for me
apple_now_inAir.Drop!();

Як ви бачите, у мене знищені основні поняття, і я дуже описую свої імена змінних та атрибути об'єкта. Я налаштовую світ дуже просто і чітко, хоча я спростив світ у грі порівняно з фактичною кухнею.

Я думаю, що проблема пов’язана paper_2d_behaving_appleз actual_existing_apple_on_myCounterяблуком, а потім перенесенням його в повітря ( apple_now_inAir);

Як би це не було, і як би я не форматував все, начебто нічого не відбувається. Нижче зображено, як я запускаю програму:

введіть тут опис зображення

Хтось раніше в цьому стикався? Заздалегідь спасибі. Я тільки починаю з програм програмування, нещодавно перейшов на кар'єру, тому не відчуваю себе погано.

Спасибі, Бобе


2
Ви тут задаєте занадто багато питань. Частину про несумісність слід запитати на stackexchange, оскільки вона насправді не пов'язана з gamedev. Яблучну частину слід задати тут як власне питання. Постарайтеся також видалити частину невідповідного тексту про недостатню кількість представників та інші речі з особистої історії, які не допомагають людям відповісти на питання.
AttackingHobo

3
"Чому я не можу заставити свій код працювати?" в значній мірі підсумовує кожне питання програмування будь-коли. Подумайте, що ви хочете знати, а потім відредагуйте відповідне запитання, будь ласка.
jcora

13
Це зараз моє улюблене питання на gamedev.SE.
Джиммі

6
Я почав це редагувати. Тоді я зрозумів, що це повинен бути тролінг ("кібер-яблуко"?). Якщо це не тролінг, вам дійсно потрібно почати з чогось більш простого.
MichaelHouse

2
Це так смішно. Рубізм - apple_now_inAir.Drop!();- це бунт. Є щось про цю посаду - амбітний, розгублений, приречений ...
твердий сніг

Відповіді:


34

Основна проблема, яку я бачу тут, - це те, що ви використовуєте систему Windows. Ця ОС найкраще працює для імітації таких речей, як вікна та двері (неорганічні). Вам потрібно переключитися на комп’ютер Macintosh , це виключно з імітацією яблук. Остання версія ОС не тільки імітує яблука, вона має додаткову підтримку для великих котів, особливо гірських левів. Однак якщо ви хочете продовжувати користуватися системою Windows, вам потрібно буде внести деякі зміни. Спочатку завантажте Visual Studio , основне використання - для візуалізації коду. У вашому випадку вона візуалізує ваші яблука.

Далі вам потрібно зашифрувати двійкове дерево, щоб яблука правильно дозріли. Обов’язково додайте багато листя, щоб дерево міцне (також переконайтеся, що ви даєте йому великий корінь). Щоб перевірити яблука на стиглість, ви можете взяти байт з одного і пропустити шматочки через tasteTest()функцію. Тепер у вас є яблука! Але ви сказали, що хочете, щоб вони були схожими на папір? Щоб досягти цього ефекту, ви хочете перенести їх у плоский файл. Не використовуйте базу даних для зберігання яблук, вони не будуть достатньо плоскими.

Нарешті, щоб змусити яблука плисти вниз, вам не вистачає одного критичного кроку у вашому коді! Ви забули додати:

paper_2d_behaving_apple.hasGravity = true;

Це помилка noob, але це нормально. Нарешті, переконайтеся, що ви поклали яблуко вгорі екрана, щоб воно десь впало. І запропонував Джиммі, ви також можете перевернути монітор догори дном, якщо яблуко не з того боку, оскільки ви тільки починаєте, це, швидше за все, станеться.

Як бонусний бонус, оскільки ви використовуєте Windows, якщо ви хотіли скласти яблучний пиріг в Microsoft Excel, ви зможете легко імітувати вікно для його охолодження.


Крім того, є набагато простіший спосіб зробити це, якщо ви хочете витратити трохи грошей.

Є пристрій, який називається ENCOM Digitizing Molecular Laser. Раніше я бачив, як раніше оцифровували яблука, і думаю, що вам це стане в нагоді. Вам навіть не доведеться вводити всі ці змінні, сканер зробив би це за вас. Ось це в дії:

введіть тут опис зображення


5
Це може вас бентежити, але я це розумію. Це мій комп'ютер, який має проблему, і саме тому я думав, що мені не вистачає якихось бібліотек чи чогось іншого. Я зараз читаю посібник зі стилю кодування Google . Сподіваюся, це вирішить деякі проблеми, які ви маєте, хлопці, щодо мого стилю кодування.
Bob Flanderson

1
Ти маєш рацію, я розгубився. Я змінив свою відповідь.
MichaelHouse

Так! Будь ласка, візуалізуйте мої яблука! Я ще не міг цього зробити, тому що досі не знайшов бібліотеки, якої мені не вистачає
Bob Flanderson

2
Я думаю, що коренева проблема: paper_2d_behaving_apple.owner.has_wife = false; Якби у нього була дружина, то вона сказала б йому, що не так.
Девід Тілен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.