Estoy tratando de crear un juego con física newtoniana.
Antes de leer el resto de esto, esta es mi pregunta principal a la que estoy tratando de encontrar una respuesta:
- Sigo recibiendo un error que aparece en una ventana después de intentar ejecutar mi código. ¿Qué biblioteca o dll me estoy perdiendo?
Tengo una manzana, una naranja y un lápiz. He leído la mayor parte de la documentación con el motor de física de bala, pero parece que no puedo hacer que la manzana se comporte como un papel (2d-ish). Los motores de física Box2d y demás no son lo que quiero. No me gustan las cajas en la vida real, y mucho menos en los cibermundos.
Quiero que la manzana flote hacia el suelo, balanceándose de un lado a otro como lo haría un trozo de papel. Este sitio proporcionó información útil que integré en mi código: htp: //www.3dbuzz.com/vbforum/showthread.php? 50854-Please-HELP !! -Simulating-paper-floating-to-ground
Tengo esta idea para un juego en el que haces que los objetos se comporten como otros tipos de objetos, pero mis simulaciones del juego simplemente no funcionan.
He pasado por muchos tipos de manzanas para contar, y ninguna de ellas se acerca. He intentado buscar a otras personas que hayan intentado cosas similares (usando google como http://lmgtfy.com/?q=simluating+game+apples+in+real+life ), ¡pero nunca se devuelven manzanas!
Por lo tanto, creo que voy a entrar en un nuevo territorio aquí (no te preocupes, abriré el código fuente de mis técnicas), y es por eso que las cosas simplemente no funcionan para mí.
He intentado programar diferentes tipos de manzanas, pero ¿tal vez necesito una manzana cibernética? No sé dónde conseguir uno de esos, tal vez en un lugar como este: http://cyberapples.com/ Ese sitio está caído por ahora, sin embargo, solo se trata de un contenedor de basura cgi o algo así. ¿Algún consejo sobre esto también?
Esta es la parte de mi código que trata con la manzana que simula cosas del juego:
///... /* 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!();
Como puede ver, tengo los conceptos básicos, y estoy siendo muy descriptivo con mis nombres de variables y los atributos del objeto. Configuré el mundo de manera muy sucinta y clara, aunque he simplificado el mundo en el juego en comparación con la cocina real.
Creo que el problema es atar la manzana paper_2d_behaving_applea la actual_existing_apple_on_myCountermanzana y luego transferirla a la que está en el aire ( apple_now_inAir);
Cualquiera sea el caso, y no importa qué tan bien formatee todo, nada parece suceder. A continuación se muestra una imagen de cómo ejecuto el programa:

¿Alguien se ha encontrado con esto antes? Gracias por adelantado. Estoy comenzando con la programación de juegos, habiendo cambiado recientemente de carrera, así que no te sientas mal.
Gracias Bob
apple_now_inAir.Drop!();es un motín. Hay algo en esta publicación: ambicioso, confuso, condenado ...
