Próbuję stworzyć grę z fizyką newtonowską.
Zanim przeczytasz resztę, oto moje główne pytanie, na które staram się znaleźć odpowiedź na:
- Po próbie uruchomienia kodu pojawia się błąd, który pojawia się w oknie. Jakiej biblioteki lub biblioteki DLL brakuje?
Mam jabłko, pomarańczę i ołówek. Przeczytałem większość dokumentacji z silnikiem fizyki pocisków, ale po prostu nie wydaje mi się, aby jabłko zachowywało się jak kartka papieru (2d-ish). Silniki fizyki Box2d i takie nie są tym, czego chcę. Nie lubię pudełek w prawdziwym życiu, a tym bardziej w cyberświatach.
Chcę, żeby jabłko opadło na ziemię, jakby kołysało się w przód iw tył, jak kawałek papieru. Ta strona zawiera przydatne informacje, które zintegrowałem z moim kodem: htp: //www.3dbuzz.com/vbforum/showthread.php? 50854-Please-HELP !! -Simulation-paper-floating-to-ground
Mam pomysł na grę, w której sprawiasz, że obiekty zachowują się jak inne typy obiektów, ale moje symulacje gry po prostu nie działają.
Przeszedłem zbyt wiele rodzajów jabłek, aby je policzyć, i żadne z nich nawet się nie zbliżyło. Próbowałem szukać innych osób, które próbowały podobnych rzeczy (używając Google, takich jak http://lmgtfy.com/?q=simluating+game+apples+in+real+life ), ale żadne jabłka nigdy nie są zwracane!
Dlatego myślę, że wchodzę tutaj na nowe terytorium (nie martw się, otworzę źródła moich technik) i właśnie dlatego rzeczy po prostu mi nie działają.
Próbowałem programować różne rodzaje jabłek, ale może potrzebuję cyber-jabłka? Nie wiem, skąd wziąć jeden z nich, może w takim miejscu: http://cyberapples.com/ Ta strona jest na razie niedostępna - mówi się tylko o jakimś śmietniku cgi lub czymś podobnym . Wszelkie wskazówki na ten temat?
To część mojego kodu, która zajmuje się jabłkiem symulującym grę:
///... /* 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!();
Jak widać, mam podstawowe pojęcia i jestem bardzo opisowy z moimi nazwami zmiennych i atrybutami obiektu. Ustawiam świat bardzo zwięźle i wyraźnie, chociaż uprościłem świat w grze w porównaniu do rzeczywistej kuchni.
Myślę, że problem wiąże paper_2d_behaving_apple
się z actual_existing_apple_on_myCounter
jabłkiem, a następnie przeniesieniem go do tego w powietrzu ( apple_now_inAir
);
Cokolwiek to jest i bez względu na to, jak dobrze wszystko sformatuję, nic się nie dzieje. Poniżej znajduje się obraz tego, jak uruchamiam program:
Czy ktoś już na to wpadł? Z góry dziękuję. Zaczynam od programowania gier, ostatnio zmieniłem karierę, więc nie czuj się źle.
Dzięki, Bob
apple_now_inAir.Drop!();
- to zamieszki. Jest coś w tym poście - ambitny, zdezorientowany, skazany na porażkę ...Odpowiedzi:
Główny problem, jaki tu widzę, polega na tym, że używasz systemu Windows. Ten system operacyjny działa najlepiej do symulacji takich rzeczy, jak okna i drzwi (nieorganiczne). Musisz przełączyć się na komputer Macintosh , są wyjątkowe z symulacją jabłek. Najnowsza wersja systemu operacyjnego nie tylko symuluje jabłka, ale ma także dodatkowe wsparcie dla dużych kotów, zwłaszcza lwów górskich. Jeśli jednak chcesz nadal korzystać z systemu Windows, musisz wprowadzić pewne zmiany. Najpierw pobierz Visual Studio , jego głównym zastosowaniem jest wizualizacja kodu. W twoim przypadku wizualizuje twoje jabłka.
Następnie musisz posadzić drzewo binarne, aby Twoje jabłka odpowiednio dojrzały. Pamiętaj, aby dodać dużo liści, aby drzewo rosło silnie (upewnij się również, że dajesz mu duży korzeń). Aby przetestować dojrzałość jabłek, możesz pobrać jeden bajt z jednego i przekazać bity przez
tasteTest()
funkcję. Teraz masz jabłka! Ale powiedziałeś, że chcesz, żeby były jak papier, prawda? Będziesz chciał przenieść je do płaskiego pliku, aby osiągnąć ten efekt. Nie używaj bazy danych do przechowywania jabłek, nie będą one wystarczająco płaskie.Wreszcie, aby spławić jabłka, brakuje jednego kluczowego kroku w kodzie! Zapomniałeś dodać:
To błąd nooba, ale to OK. Na koniec upewnij się, że umieściłeś jabłko u góry ekranu, aby miało ono gdzieś upaść. Jimmy zasugerował, że możesz również odwrócić monitor do góry nogami, jeśli jabłko jest po niewłaściwej stronie, ponieważ dopiero zaczynasz, to może się zdarzyć.
Dodatkową korzyścią jest to, że ponieważ używasz systemu Windows, jeśli chcesz utworzyć wykres szarlotki w programie Microsoft Excel, możesz łatwo symulować okno, aby je ochłodzić.
Alternatywnie istnieje znacznie łatwiejszy sposób na zrobienie tego, jeśli chcesz wydać trochę pieniędzy.
Istnieje urządzenie zwane wówczas ENCOM Digitizing Molecular Laser. Widziałem już, jak kiedyś digitalizował jabłka, i myślę, że przydałby ci się. Nie musiałbyś nawet wpisywać wszystkich tych zmiennych, skaner zrobiłby to za Ciebie. Oto jest w akcji:
źródło