Estou tentando criar um jogo com a física newtoniana.
Antes de ler o restante, esta é minha principal pergunta, para a qual estou tentando encontrar uma resposta:
- Eu continuo recebendo um erro que aparece em uma janela depois de tentar executar meu código. Que biblioteca ou dll estou faltando?
Eu tenho uma maçã, uma laranja e um lápis. Li a maior parte da documentação com o mecanismo de física de balas, mas parece que a maçã não se comporta como um pedaço de papel (2d-ish). Motores de física Box2d e esses não são o que eu quero. Não gosto de caixas na vida real, muito menos em mundos cibernéticos.
Quero que a maçã flutue no chão, meio que balançando para frente e para trás como faria um pedaço de papel. Este site forneceu algumas informações úteis que integrei ao meu código: htp: //www.3dbuzz.com/vbforum/showthread.php? 50854-Please-HELP !! -Simulating-paper-floating-to-ground
Eu tenho essa idéia para um jogo em que você faz com que os objetos se comportem como outros tipos de objetos, mas minhas simulações do jogo simplesmente não estão funcionando.
Já passei por muitos tipos de maçãs para contar, e nenhuma delas chegou nem perto. Eu tentei procurar outras pessoas que tentaram coisas semelhantes (usando googles como http://lmgtfy.com/?q=simluating+game+apples+in+real+life ), mas nenhuma maçã é devolvida!
Portanto, acho que estou entrando em um novo território aqui (não se preocupe, vou abrir minhas técnicas de código-fonte), e é por isso que as coisas simplesmente não estão funcionando para mim.
Eu tentei programar diferentes tipos de maçãs, mas talvez eu precise de uma maçã cibernética? Eu não sei onde conseguir um desses, talvez em um lugar como este: http://cyberapples.com/ Esse site está fora do ar por enquanto - está apenas falando de algum lixo cgi ou algo assim. Alguma dica sobre isso também?
Esta é a parte do meu código que lida com a maçã simulando coisas do jogo:
///... /* 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 você pode ver, eu tenho os conceitos básicos e estou sendo muito descritivo com meus nomes de variáveis e os atributos do objeto. Eu configurei o mundo de maneira muito sucinta e clara, embora tenha simplificado o mundo no jogo em comparação com a cozinha real.
Acho que o problema é obrigatório o paper_2d_behaving_apple
à actual_existing_apple_on_myCounter
maçã, e, em seguida, transferir isso para o um no ar ( apple_now_inAir
);
Seja qual for o caso, e não importa o quão bem eu formate tudo, nada parece acontecer. Abaixo está uma imagem de como executo o programa:
Alguém já se deparou com isso antes? Desde já, obrigado. Estou começando a programar jogos, tendo mudado de carreira recentemente, então não se sinta mal.
Obrigado Bob
apple_now_inAir.Drop!();
- é uma revolta. Há algo sobre este post - ambicioso, confuso, condenado ...