Ich versuche ein Spiel mit Newtonscher Physik zu erstellen.
Bevor Sie den Rest lesen, ist dies meine Hauptfrage, auf die ich eine Antwort finden möchte:
- Ich erhalte immer wieder eine Fehlermeldung, die in einem Fenster angezeigt wird, nachdem ich versucht habe, meinen Code auszuführen. Welche Bibliothek oder DLL fehlt mir?
Ich habe einen Apfel, eine Orange und einen Bleistift. Ich habe den größten Teil der Dokumentation mit der Bullet Physics Engine gelesen, aber ich kann den Apfel einfach nicht dazu bringen, sich wie ein Stück Papier zu verhalten (2d-ish). Box2d-Physik-Engines und dergleichen sind nicht das, was ich will. Ich mag keine Kisten im wirklichen Leben, geschweige denn in Cyberwelten.
Ich möchte, dass der Apfel zu Boden schwebt und wie ein Stück Papier hin und her schwingt. Diese Seite gab einige nützliche Informationen, die ich in meinen Code integriert habe: htp: //www.3dbuzz.com/vbforum/showthread.php? 50854-Please-HELP !!
Ich habe diese Idee für ein Spiel, bei dem Objekte sich wie andere Objekttypen verhalten, aber meine Simulationen des Spiels funktionieren einfach nicht.
Ich habe zu viele Apfelsorten durchlaufen, um sie zu zählen, und keine davon kommt mir auch nur nahe. Ich habe versucht, nach anderen Leuten zu suchen, die ähnliche Dinge ausprobiert haben (mit Brillen wie http://lmgtfy.com/?q=simluating+game+apples+in+real+life ), aber es werden nie Äpfel zurückgegeben!
Daher denke ich, dass ich hier Neuland betrete (keine Sorge, ich werde meine Techniken als Quelle öffnen), und deshalb funktionieren die Dinge für mich einfach nicht.
Ich habe versucht, verschiedene Apfelsorten zu programmieren, aber vielleicht brauche ich einen Cyberapfel? Ich weiß nicht, wo ich eines davon bekommen kann, vielleicht an einem Ort wie diesem: http://cyberapples.com/ Diese Seite ist jedoch momentan nicht verfügbar - es geht immer nur um einen CGI-Mülleimer oder so. Irgendwelche Tipps dazu?
Dies ist der Teil meines Codes, der sich mit dem Apfel befasst, der ein Spiel simuliert:
///... /* 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!();
Wie Sie sehen können, habe ich die grundlegenden Konzepte festgelegt und bin mit meinen Variablennamen und den Objektattributen sehr beschreibend. Ich habe die Welt sehr prägnant und klar eingerichtet, obwohl ich die Welt im Spiel im Vergleich zur tatsächlichen Küche vereinfacht habe.
Ich denke, das Problem besteht darin, das paper_2d_behaving_apple
an den actual_existing_apple_on_myCounter
Apfel zu binden und es dann auf den in der Luft zu übertragen ( apple_now_inAir
);
Was auch immer der Fall ist und egal wie gut ich alles formatiere, es scheint nichts zu passieren. Unten sehen Sie ein Bild davon, wie ich das Programm ausführe:
Hat das schon mal jemand gemacht? Danke im Voraus. Ich fange gerade mit dem Programmieren von Spielen an, nachdem ich kürzlich die Karriere gewechselt habe, also fühle dich nicht schlecht.
Danke, Bob
apple_now_inAir.Drop!();
- ist ein Aufstand. Es gibt etwas an diesem Beitrag - ehrgeizig, verwirrt, zum Scheitern verurteilt ...