Ir al contenido

publicidad

Foto

iniciacion en ogre


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
43 respuestas en este tema

  • davidlie

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.066
#31

Escrito 02 julio 2009 - 11:38

OK buena idea, sin utlizar blender se puede hacer asi que probare.

otra cosa en la que tengo problemas es situar los objetos mediante las coordenadas no me situo bien XD


-----------------------------------------------------------------------------
Imagen Enviada
entra en el clan de ps3 last unit assault, todos los juegos disponibles, si no esta create tu clan LUA(recien empezamos) pinchen aqui



  • Ellolo17

  • Heraldo de la Muerte

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#32

Escrito 02 julio 2009 - 12:20

Eso es facil.

¿Recuerdas el nethack con eso de dos dimensiones que hacias? Pues eso, ahi tienes ya dos dimensiones. Pero en vez de hacerlo con dimensiones X e Y, como en 3d el Y es la altura, usa X y Z para el ancho y el fondo, y la Y para cuando tengan que elevarse o algo de eso.

¿Has oido el truco de la mano derecha?
Como esto:
Imagen Enviada
Pero con el pulgar para arriba. El pulgar representa el eje y, la altura. El corazon, que estará apuntando hacia la izquierda representa el eje x, y el indice el eje z.

Con eso te ayudas a orientarte al mover por ejemplo. Si para avanzar se mueve en direccion hacia z, entonces mueve la mano hacia donde señala el indice.

Si se le añade una cantidad al eje X y al Y, mueve la mano lo que seria equivalente hacia donde apuntan el corazon y el pulgar.

Mas o menos.

Un saludo.

PD: Ya he sacado un minijuego, voy a currarme la entrada ;)

  • davidlie

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.066
#33

Escrito 02 julio 2009 - 12:27

no si eso lo entiendo es mas por ejemplo a la hora de poner cuando lo quiero mover en el eje y que igual pongo 100 y me e pasado o quiero que doscosas esten algo separadas y quedan muy juntas, pero es cuestion de practica

gracias por el truco ese :P


-----------------------------------------------------------------------------
Imagen Enviada
entra en el clan de ps3 last unit assault, todos los juegos disponibles, si no esta create tu clan LUA(recien empezamos) pinchen aqui



  • Ellolo17

  • Heraldo de la Muerte

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#34

Escrito 02 julio 2009 - 12:47

Om, eso es mas facil: Create un sistema metrico.

Esto lo aprendi cuando me lei una guia oficial para crease los mapas del Halo 1 para pc: En ese juego, MasterChief media 1 unidad de alto estando de pie y 0,5 estando agachado, por lo tanto se tenia que hacer todo teniendo en cuenta que 1 unidad -1 coordenada- = 2 metros. Mas o menos.

Yo en cambio lo tengo hecho pensando que 1 unidad = 1 metro.

Luego como suelo poner que se sincronice -renderice- la escena 30 veces al segundo -que tenga esos fps- si la velocidad al andar es de 1 metro al segundo, tengo que hacer que por cada vez que se renderice avance un poco para que al final haya avanzado 1 unidad en 30 vueltas al bucle, asi que la velocidad sería 0,03 unidades tendria que moverse por bucle para que tenga esa velocidad.

¿Lo pillas? - mas o menos.

Por ejemplo, en mi ultimo juego el tanque se mueve a 0.1 unidades por cada bucle, el juego se ejecuta a 30fps, asi que en un segundo habrá avanzado 3 unidades.

A veces esta bien aumentar la velocidad para mejorar la jugabiidad. Nadie quiere jugar con personajes lentos. En todos los juegos incluso andando vas mas rapido que en la realidad ;)

Un saludo.

  • davidlie

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.066
#35

Escrito 02 julio 2009 - 13:14

si lo entiendo, pro eso se puede modificar en opciones o es mediante algún algoritmo matemático??
ya lo mirare :P

por cierto empece cono el scene manager de terreno. donde te crea un terreno y tu puedes editar unas configuraciones y las texturas ect para darle la forma adecuada.
pero no sera menos laborioso hacer tu un terreno y tratarlo en ogre como una entidad?


-----------------------------------------------------------------------------
Imagen Enviada
entra en el clan de ps3 last unit assault, todos los juegos disponibles, si no esta create tu clan LUA(recien empezamos) pinchen aqui



  • Ellolo17

  • Heraldo de la Muerte

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#36

Escrito 02 julio 2009 - 13:40

Eso no sabria decirte. Siempre he hecho el terreno en Blender y luego por colisiones y raycasting he ido colocando las otras entidades.

Supongo que si el Ogre va con eso es porque le va bien ;)

  • davidlie

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.066
#37

Escrito 03 julio 2009 - 13:07

ya empiezo con lo dificil jaja.

sinceramente me entere de muy poco en este turorial, con lo bien qie iba XD

en este ya empezaba a cambiar entre 2 camaras, usar el raton para encender una luz , si pulsas el boton izquierdo. usar el boton derecho para rotar la camara y las flechas o w,a,s,d para moverse

me lo tomare con calma esta parte, es realmente importante


-----------------------------------------------------------------------------
Imagen Enviada
entra en el clan de ps3 last unit assault, todos los juegos disponibles, si no esta create tu clan LUA(recien empezamos) pinchen aqui



  • Ellolo17

  • Heraldo de la Muerte

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#38

Escrito 03 julio 2009 - 15:37

Eso es facil. Cuando empieces con la programacion modular y empieces a ver las funciones que debes hacer, ponerles nombres, jugar con las variables globales y locales etc...

En cuanto empiezas a jugar con esas cosas veras lo que es bueno. Y lo peor es que es necesario porque si lo pones todo en un solo archivo y en la funcion main... vas listo. Te pasará como me pasa a mi en mi plataformas que comenzó en una tarde que estaba aburrido -como mi ultimo juego- y me cree asi de mal un motor con el que una bola saltaba por unas plataformas y luego a base de añadir modelos, texturas, 9 etapas mas, dejarlo bonito, programar los cambios de etapas, mejorar las colisiones -con eso me pasé un huevo de tiempo porque al principio me habia hecho niveles con rampas y usaba las funciones basicas del motor. Al final tuve que rehacer las etapas con rampas y cambiar el sistema de colisiones que me habia currado por otro usando raycast en vez de esferas y cajas de colisiones-...

En fin, que empecé en abril y aun me queda retocar el jefe final, añadir que pueda matarte, etc... Y el salto que ha pegado el proyecto me deja con mas de mil lineas de codigo que te vuelves loco buscando donde puede estar el fallo por no tenerlo organizado por funciones y otras cosas. Y por usar el maldito go to del basic que si, en proyectos pequeños ayuda pero al hacerse grandes ya no ayuda tanto.

Un saludo.

  • davidlie

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.066
#39

Escrito 03 julio 2009 - 15:43

de momento tengo todo dentro del main, pero bueno supongo que avanzando un poco te explicaran como hacerlo mejor y eso
de momento lo mas "dificil" que e echo es algo tal que asi

eso si todo con tutoriales XD

[code:1]#include "ExampleApplication.h"

class TutorialFrameListener : public ExampleFrameListener
{
public:
TutorialFrameListener(RenderWindow* win, Camera* cam, SceneManager *sceneMgr)
: ExampleFrameListener(win, cam, false, false)
{
mMouseDown = false;
mToggle = 0.0;


mCamNode = cam->getParentSceneNode();
mSceneMgr = sceneMgr;


mRotate = 0.13;
mMove = 250;
}


bool processUnbufferedKeyInput(const FrameEvent& evt)
{
return true;
}


bool processUnbufferedMouseInput(const FrameEvent& evt)
{
return true;
}

bool frameStarted(const FrameEvent &evt)
{
mMouse->capture();
mKeyboard->capture();
if(mKeyboard->isKeyDown(OIS::KC_ESCAPE))
return false;

bool currMouse = mMouse->getMouseState().buttonDown(OIS::MB_Left);
if (currMouse && ! mMouseDown)
{
Light *light = mSceneMgr->getLight("Light1");
light->setVisible(! light->isVisible());
} // if

mMouseDown = currMouse;
mToggle -= evt.timeSinceLastFrame;


if ((mToggle < 0.0f ) && mKeyboard->isKeyDown(OIS::KC_1))
{
mToggle = 0.5f;
mCamera->getParentSceneNode()->detachObject(mCamera);
mCamNode = mSceneMgr->getSceneNode("CamNode1");
mCamNode->attachObject(mCamera);
}

else if ((mToggle < 0.0f) && mKeyboard->isKeyDown(OIS::KC_2))
{
mToggle = 0.5f;
mCamera->getParentSceneNode()->detachObject(mCamera);
mCamNode = mSceneMgr->getSceneNode("CamNode2");
mCamNode->attachObject(mCamera);
}

Vector3 transVector = Vector3::ZERO;

if (mKeyboard->isKeyDown(OIS::KC_UP) || mKeyboard->isKeyDown(OIS::KC_W))
transVector.z -= mMove;

if (mKeyboard->isKeyDown(OIS::KC_DOWN) || mKeyboard->isKeyDown(OIS::KC_S))
transVector.z += mMove;

if (mKeyboard->isKeyDown(OIS::KC_LEFT) || mKeyboard->isKeyDown(OIS::KC_A))
transVector.x -= mMove;
if (mKeyboard->isKeyDown(OIS::KC_RIGHT) || mKeyboard->isKeyDown(OIS::KC_D))
transVector.x += mMove;

if (mKeyboard->isKeyDown(OIS::KC_PGUP) || mKeyboard->isKeyDown(OIS::KC_Q))
transVector.y += mMove;
if (mKeyboard->isKeyDown(OIS::KC_PGDOWN) || mKeyboard->isKeyDown(OIS::KC_E))
transVector.y -= mMove;



mCamNode->translate(transVector * evt.timeSinceLastFrame, Node::TS_LOCAL);

if (mMouse->getMouseState().buttonDown(OIS::MB_Right))
{
mCamNode->yaw(Degree(-mRotate * mMouse->getMouseState().X.rel), Node::TS_WORLD);
mCamNode->pitch(Degree(-mRotate * mMouse->getMouseState().Y.rel), Node::TS_LOCAL);
}
return true;

return ExampleFrameListener::frameStarted(evt);
}
protected:
bool mMouseDown;
Real mToggle;
Real mRotate;
Real mMove;
SceneManager *mSceneMgr;
SceneNode *mCamNode;
};

class TutorialApplication : public ExampleApplication
{
public:
TutorialApplication()
{
}

~TutorialApplication()
{
}
protected:
void createCamera(void)
{
mCamera = mSceneMgr->createCamera("PlayerCam");
mCamera->setNearClipDistance(5);

}

void createScene(void)
{
mSceneMgr->setAmbientLight(ColourValue(0.25, 0.25, 0.25));
Entity *ent = mSceneMgr->createEntity("Ninja", "ninja.mesh");
SceneNode *node = mSceneMgr->getRootSceneNode()->createChildSceneNode("NinjaNode");
node->attachObject(ent);


Light *light = mSceneMgr->createLight("Light1");
light->setType(Light::LT_POINT);
light->setPosition(Vector3(250, 150, 250));
light->setDiffuseColour(ColourValue::White);
light->setSpecularColour(ColourValue::White);



node = mSceneMgr->getRootSceneNode()->createChildSceneNode("CamNode1", Vector3(-400, 200, 400));
node->yaw(Degree(-45));
node->attachObject(mCamera);

node = mSceneMgr->getRootSceneNode()->createChildSceneNode("CamNode2", Vector3(0, 200, 400));



}

void createFrameListener(void)
{
mFrameListener = new TutorialFrameListener(mWindow, mCamera, mSceneMgr);
mRoot->addFrameListener(mFrameListener);
mFrameListener->showDebugOverlay(true);
}
};

#if OGRE_PLATFORM == PLATFORM_WIN32 || OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"

INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT)
#else
int main(int argc, char **argv)
#endif
{
// Create application object
TutorialApplication app;

try {
app.go();
} catch(Exception& e) {
#if OGRE_PLATFORM == PLATFORM_WIN32 || OGRE_PLATFORM == OGRE_PLATFORM_WIN32
MessageBox(NULL, e.getFullDescription().c_str(), "An exception has occurred!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
#else
fprintf(stderr, "An exception has occurred: %s\n",
e.getFullDescription().c_str());
#endif
}

return 0;
}
[/code]


-----------------------------------------------------------------------------
Imagen Enviada
entra en el clan de ps3 last unit assault, todos los juegos disponibles, si no esta create tu clan LUA(recien empezamos) pinchen aqui



  • Ellolo17

  • Heraldo de la Muerte

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#40

Escrito 03 julio 2009 - 16:04

Pues mas adelante las clases pondrias cada una en un archivo distinto cada una.

Un saludo.

  • davidlie

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.066
#41

Escrito 03 julio 2009 - 16:06

si, supongo que seria lo mejor ^^
bueno ya os seguiré contado mi avance


-----------------------------------------------------------------------------
Imagen Enviada
entra en el clan de ps3 last unit assault, todos los juegos disponibles, si no esta create tu clan LUA(recien empezamos) pinchen aqui



  • davidlie

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.066
#42

Escrito 06 julio 2009 - 12:29

que significa el operador logico &&!
&& y por seprado ! se lo que es pero asi junto... :S


-----------------------------------------------------------------------------
Imagen Enviada
entra en el clan de ps3 last unit assault, todos los juegos disponibles, si no esta create tu clan LUA(recien empezamos) pinchen aqui



  • Ollydbg

  • Jockey

  • vida restante: 100%
  • Registrado: 05 sep 2008
  • Mensajes: 6.259
#43

Escrito 06 julio 2009 - 13:17

que significa el operador logico &&!
&& y por seprado ! se lo que es pero asi junto... :S


Pues si && es el operador AND ("y" lógico) y ! es el operador NOT ("negación lógica"), el "operador" &&! será el operador AND NOT

De todos modos es && !, no &&!. Nótese la diferencia.

No te lo tomes a mal, pero tal y como ya te he comentado alguna vez, si no tienes claros determinados conceptos, no vas a aprender nada de nada. Antes de correr hay que aprender a andar.

Saludos.

  • davidlie

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.066
#44

Escrito 06 julio 2009 - 13:21

si lo es es separado. vamos que viene a significar lo que suponia, si es esto y no esto que aga esto :P
no creo que vaya corriendo, simplemente me lo encontre por primera vez y queria asegurarme


-----------------------------------------------------------------------------
Imagen Enviada
entra en el clan de ps3 last unit assault, todos los juegos disponibles, si no esta create tu clan LUA(recien empezamos) pinchen aqui




Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad