J'essaie de créer un jeu avec la physique newtonienne.
Avant de lire le reste de ceci, c'est ma principale question à laquelle j'essaie de trouver une réponse:
- Je continue à recevoir une erreur qui apparaît dans une fenêtre après avoir essayé et exécuté mon code. Quelle bibliothèque ou dll me manque?
J'ai une pomme, une orange et un crayon. J'ai lu la plupart de la documentation avec le moteur de physique des balles, mais je n'arrive pas à faire en sorte que la pomme se comporte comme un morceau de papier (2d-ish). Les moteurs physiques Box2d et autres ne sont pas ce que je veux. Je n'aime pas les boîtes dans la vraie vie, et encore moins dans les cyber-mondes.
Je veux que la pomme flotte jusqu'au sol, se balançant d'avant en arrière comme le ferait un morceau de papier. Ce site a donné quelques informations utiles que j'ai intégrées dans mon code: htp: //www.3dbuzz.com/vbforum/showthread.php? 50854-Please-HELP !! -Simulating-paper-floating-to-ground
J'ai cette idée d'un jeu où vous faites en sorte que les objets se comportent comme d'autres types d'objets, mais mes simulations du jeu ne fonctionnent tout simplement pas.
J'ai traversé trop de types de pommes pour les compter, et aucune d'entre elles ne s'en approche. J'ai essayé de chercher d'autres personnes qui ont essayé des choses similaires (en utilisant des googles comme http://lmgtfy.com/?q=simluating+game+apples+in+real+life ), mais aucune pomme n'est jamais retournée!
Ainsi, je pense que je vais dans un nouveau territoire ici (ne vous inquiétez pas, je vais ouvrir mes techniques), et c'est pourquoi les choses ne fonctionnent tout simplement pas pour moi.
J'ai essayé de programmer différents types de pommes, mais j'ai peut-être besoin d'une cyber pomme? Je ne sais pas où en trouver un, peut-être dans un endroit comme celui-ci: http://cyberapples.com/ Ce site est en panne pour le moment - il ne parle que d'une poubelle cgi ou quelque chose du genre . Des conseils à ce sujet également?
C'est la partie de mon code qui traite de la pomme simulant un truc de jeu:
///... /* 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!();
Comme vous pouvez le voir, j'ai les concepts de base, et je suis très descriptif avec mes noms de variable et les attributs d'objet. J'ai configuré le monde de manière très succincte et claire, bien que j'aie simplifié le monde dans le jeu par rapport à la cuisine réelle.
Je pense que le problème lie le paper_2d_behaving_apple
à la actual_existing_apple_on_myCounter
pomme, puis le transfère à celui en l'air ( apple_now_inAir
);
Quoi qu'il en soit, et peu importe à quel point je formate tout, rien ne semble se produire. Ci-dessous est une image de la façon dont je lance le programme:
Quelqu'un a-t-il déjà rencontré cela? Merci d'avance. Je commence tout juste à programmer des jeux, ayant récemment changé de carrière, alors ne vous sentez pas mal.
Merci, Bob
apple_now_inAir.Drop!();
- est une émeute. Il y a quelque chose à propos de ce post - ambitieux, confus, condamné ...Réponses:
Le principal problème que je vois ici est que vous utilisez un système Windows. Cet OS fonctionne mieux pour simuler des choses comme les fenêtres et les portes (non organiques). Vous devez passer à un ordinateur Macintosh , ceux-ci sont exceptionnels avec la simulation de pommes. La dernière version de l'OS simule non seulement les pommes, mais elle prend également en charge les gros chats, en particulier les lions de montagne. Cependant, si vous souhaitez continuer à utiliser votre système Windows, vous devrez apporter quelques modifications. Téléchargez d'abord Visual Studio , son utilisation principale est la visualisation de code. Dans votre cas, il visualisera vos pommes.
Ensuite, vous devez coder un arbre binaire pour que vos pommes mûrissent correctement. Assurez-vous d'ajouter beaucoup de feuilles pour que l'arbre devienne fort (assurez-vous également de lui donner une grosse racine). Pour tester la maturité des pommes, vous pouvez en prendre un octet et passer les bits à travers la
tasteTest()
fonction. Maintenant, vous avez des pommes! Mais, vous avez dit que vous vouliez qu'ils soient comme du papier, non? Vous voudrez les porter dans un fichier plat pour obtenir cet effet. N'utilisez pas de base de données pour stocker les pommes, elles ne seront pas assez plates.Enfin, pour faire flotter les pommes, il vous manque une étape critique dans votre code! Vous avez oublié d'ajouter:
C'est une erreur noob, mais c'est OK. Enfin, assurez-vous de placer la pomme en haut de l'écran afin qu'elle ait un endroit où tomber. Et Jimmy a suggéré, vous pouvez également renverser le moniteur si la pomme est du mauvais côté, puisque vous venez de commencer, cela risque de se produire.
En bonus, puisque vous utilisez Windows, si vous souhaitez créer un graphique à secteurs de pommes dans Microsoft Excel, vous pouvez facilement simuler une fenêtre pour la refroidir.
Alternativement, il existe un moyen beaucoup plus facile de le faire si vous voulez dépenser un peu d'argent.
Il y a un appareil appelé alors ENCOM Digitizing Molecular Laser. Je l'ai déjà vu pour numériser des pommes, et je pense que cela vous serait utile. Vous n'auriez même pas à taper toutes ces variables, le scanner le ferait pour vous. Le voici en action:
la source