Paquete Computacional Videojuego MATYA3D Este documento describe los componentes que se utilizan en el videojuego MATYA3D. Se incluye el manual de usuario. Dr. Francisco Madera Ramírez M.C. Luis Ramiro Basto Díaz M.C. Genny Rocío Uicab Ballote M.C. María del Pilar Rosado Ocaña Manual Técnico y Manual de Usuario March 7 2011
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Paquete Computacional
Videojuego MATYA3D
Este documento describe los componentes que se utilizan en el
videojuego MATYA3D. Se incluye el manual de usuario.
Dr. Francisco Madera Ramírez
M.C. Luis Ramiro Basto Díaz M.C. Genny Rocío Uicab Ballote
M.C. María del Pilar Rosado Ocaña
Manual Técnico y Manual de Usuario
March 7
2011
1
1. Arquitectura del Videojuego.
Fig1. Arquitectura del Videojuego. Componentes principales del videojuego.
1.1. Componentes del videojuego. La lista de componentes que integran el videojuego es la siguiente.
SkinningSample
SkinnedModelPipeline
SkinnedModel
Menu
MensajeDelJuegoV2
Videojuego
SkinningSample SkinnedModelPipeline SkinnedModel Menu MensajeDelJuegoV2
2
1.2. Componentes del SkinningSample.
Fig2. Arquitectura del componente SkinningSample. La funcionalidad de estos componentes son
explicados a continuación.
SkinningSample
BaseCamera
Colision
Envoltura
Escenario
Juegos
Juego01
Juego02
Juego03
Juego04
Juego05
Juego06
Juego07
Juego8
Juego09
objDinamico
Pelota
SkinningSample
3
1.3 Descripción de los Componentes de SkinningSample
1.3.1 Avatar.cs
public void Reset() Reinicia la posición y dirección del avatar.
public void Update(GameTime gameTime, MouseState currentMouseState) Actualiza el movimiento del avatar, y captura eventos de teclado y mouse, para que el usuario mueva el avatar.
1.3.2 BaseCamera.cs Es la cámara principal del videojuego. Su funcionalidad primordial es perseguir al avatar,
“grabando”” todo el mundo tridimensional durante todo el videojuego.
1.3.3 Colision.cs
Private void Colision_Avatar_ModelTzomplantli() Detecta colisión del avatar con el edificio Tzomplantli
{ if (BVBoxModelTzompantli[0].Intersects(BVSphereAvatar)) { Linea = Avatar.Position - Center_BVBoxModelTzompantli[0]; Linea.Normalize(); Avatar.Position += Linea * 0.2f; } else if (BVBoxModelTzompantli[1].Intersects(BVSphereAvatar)) { Linea = Avatar.Position - Center_BVBoxModelTzompantli[1]; Linea.Normalize(); Avatar.Position += Linea * 0.2f; } }
private void Colision_Avatar_ModelAguilas() Detecta colisión del avatar con el edificio águilas. { if (BVBoxModelAguilas.Intersects(BVSphereAvatar)) {
4
Linea = Avatar.Position - Center_BVBoxModelAguilas; Linea.Normalize(); Avatar.Position += Linea * 0.2f; } }
private void Colision_Avatar_ModelGuerreros() Detecta colisión del avatar con el edificio de guerreros. { if (BVBoxModelGuerreros.Intersects(BVSphereAvatar)) { Linea = Avatar.Position - Center_BVBoxModelGuerreros; Linea.Normalize(); Avatar.Position += Linea * 0.2f; } }
private void Colision_Avatar_ModelVenus() Detecta colisión del avatar con el venus.
{ if (BVBoxModelVenus.Intersects(BVSphereAvatar)) { Linea = Avatar.Position - Center_BVBoxModelVenus; Linea.Normalize(); Avatar.Position += Linea * 0.2f; } }
privatevoidColision_Avatar_ModelMesas() Detecta colisión del avatar con las mesas del cuadrado Mágico.
{ if (BVBoxModelMesas.Intersects(BVSphereAvatar))
{ Linea = Avatar.Position - Center_BVBoxModelMesas; Linea.Normalize(); Avatar.Position += Linea * 0.2f;
5
} }
private void Colision_Avatar_ModelChinchancob() Detecta la colisión entre el avatar y el edificio chinchancob
{ if (BVBoxModelChinchancob.Intersects(BVSphereAvatar)) { Linea = Avatar.Position - Center_BVBoxModelChinchancob; Linea.Normalize(); Avatar.Position += Linea * 0.2f; } }
privatevoidColision_Avatar_ModelOsario() Detecta la colisión del avatar con el osario. { if (BVBoxModelOsario.Intersects(BVSphereAvatar)) { Linea = Avatar.Position - Center_BVBoxModelOsario; Linea.Normalize(); Avatar.Position += Linea * 0.2f; } }
privatevoidColision_Avatar_ModelObservatorio() Detecta la colisión entre el avatar y el edificio observatorio { if (BVBoxModelObservatorio.Intersects(BVSphereAvatar)) { Linea = Avatar.Position - Center_BVBoxModelObservatorio; Linea.Normalize(); Avatar.Position += Linea * 0.2f; }
}
6
privatevoidColision_Avatar_ModelMonjas() Detecta la colisión del avatar con el edificio de las monjas { if (BVBoxModelMonjas.Intersects(BVSphereAvatar)) { Linea = Avatar.Position - Center_BVBoxModelMonjas; Linea.Normalize(); Avatar.Position += Linea * 0.2f; } }
privatevoidColision_Avatar_ModelIglesia() Detecta la colisión del avatar con la iglesia. if (BVBoxModelIglesia.Intersects(BVSphereAvatar)) { Linea = Avatar.Position - Center_BVBoxModelIglesia; Linea.Normalize(); Avatar.Position += Linea * 0.2f; }
1.3.4 Envoltura.cs
Esta clase representa las envolturas o cascarones que tienen los modelos 3D en el
videojuego.
public static BoundingSphere LoadModelWithBoundingSphere(ref Matrix[]
protected override void Update(GameTime gameTime) Este método actualiza el flujo del videojuego. Se encarga de detectar si el usuario realizo una acción en el videojuego. Si el usuario desencadeno un evento se llama al modulo en cuestión para ejecutar la acción que el usuario requiera. Por ejemplo: Este método detecta si el usuario presiono una tecla determinada, dependiendo de la tecla presionada el videojuego realizará una acción.
protected override void Draw(GameTime gameTime) Dibuja todos los edificios, animaciones, torres, plantas etc. existentes en el videojuego.
1.3.9 Juegos.cs
1.3.9.1 Juego01.cs
privatevoid juego1_mueve_pelota() Este método mueve la pelota del juego 1. Para que la pelota se mueva necesita haber colision.La
colisión es la siguiente.
Si la pelota intersecta con el aro se realiza una anotación.
Pelota.Position += 0.2f * Pelota.Direction;
if (BVaro.Intersects(BVSpherePelota))
{ colision = 0;
Pelota.Position = new Vector3(-22f, 0.15f, 10.0f);
BVSpherePelota.Center = Pelota.Position;
Pelota.Direction = new Vector3(0, 0, 0);
10
scorejuego1 += 1;
}
privatevoid juego1_colision_Avatar_Pelota() { Mueve la pelota cuando existe colisión con el avatar del videojuego
if (BVSphereAvatar.Intersects(BVSpherePelota) && colision == 0)
{ Rumble = true;
Vector3 C = BVSpherePelota.Center - BVSphereAvatar.Center;
C.Normalize();
Pelota.Position += C / 2;
#region Checa si la pelota esta cerca de algun aro para preparar el enceste
privatevoid IniciaJuego2() Crea las columnas con determinada altura en m2. Para asignarles altura a estas, se
utiliza Random para generar valores al azar.
Random r = new Random(DateTime.Now.Millisecond);
int NumAleatorio;
RandomNumber = r.Next(3); RandomNumber = RandomNumber + 3; //El primer cilindro tendra a lo mas 5 divisiones de 8 NumAleatorio = r.Next(5); alturaCilindro = Dame_Fraccion(NumAleatorio);
private float Dame_Fraccion(int NumAleatorio) De acuerdo al numAleatorio, devuelve un valor, que será la fracción de cada columna float valor;
11
if (NumAleatorio == 0) valor = 0.25f;
else if (NumAleatorio == 1) valor = 0.5f;
else if (NumAleatorio == 2) valor = 0.75f;
else if (NumAleatorio == 3) valor = 1.0f;
else if (NumAleatorio == 4) valor = 1.25f;
else valor = 1.5f;
return valor;
}
private bool colision_Avatar_Cilindro() Como su nombre lo indica, detecta si ocurrio colisión del avatar con alguna columna. if (BVSphereAvatar.Intersects(BVSphereCilindro)) { Avatar.Position += Avatar.Direction * 0.5f;
bandera = true;
} else if (BVSphereAvatar.Intersects(BVSphereCilindro1)) { Avatar.Position += Avatar.Direction * 0.5f; bandera = true; }
private void juego02_Colision_Cilindro01()
private void juego02_Colision_Cilindro02()
private void juego02_Colision_Cilindro03()
private void juego02_Colision_Cilindro04() Estos métodos detectan si ocurre colisión del avatar con cada cilindro. Si ocurre la colisión el avatar carga el cilindro o la columna. En caso de que ya exista colisión el videojuego actualiza el avatar y el cilindro para determinar si este ya soltó el cilindro. if (!ColisionConCilindro01) { if (!ColisionConCilindro02 && !ColisionConCilindro03 && !ColisionConCilindro04) if (BVSphereAvatar.Intersects(BVSphereCilindro7)) { ColisionConCilindro01 = true; //carga cilindro juego02_Actualiza_Cilindro01(); animationPlayer.StartClip(clip[4]); accion = 4; } }
12
else //si estas cargando el cilindro { juego02_Actualiza_Cilindro01(); //actualiza sus coordenadas if (currentKeyboardState.IsKeyDown(Keys.Space) || currentGamePadState.Buttons.RightShoulder == ButtonState.Pressed) { if (ColisionConCilindro) //coloca el cilindro encima del cilindro base { animationPlayer.StartClip(clip[0]); accion = 0; //ColisionConCilindro01 = false; juego02_Arriba_Cilindro01(); subeCilindro7 = true; //ConAguaLec01 = false; //ContenidoLec += 100; } else //coloca el cilindro en el piso { //ColisionConCilindro01 = false; agarraCilindro7 = 0.2f; animationPlayer.StartClip(clip[0]); accion = 0; } ColisionConCilindro01 = false; //ahora ya puedes agarrar el cilindro nuevamente Avatar.Position += Avatar.Direction * 0.5f; //el avatar se hace un poco para atras } Rumble = true; } }
1.3.9.3 Juego03.cs
privatevoid IniciaJuego3()
Carga un arreglo de boléanos para mostrar las flores rojas, moradas, amarillas y naranjas. Si
la variable booleana es igual a true, muestra la flor.
El tamaño de cada arreglo, es la cantidad de flores que será desplegado en el cenote.
{ for (int i = 0; i < Numflor1; i++)
flor1Despliega[i] = true;
13
for (int i = 0; i < Numflor2; i++)
flor2Despliega[i] = true;
for (int i = 0; i < Numflor3; i++)
flor3Despliega[i] = true;
for (int i = 0; i < Numflor4; i++)
flor4Despliega[i] = true;
}
privatebool juego3_colision_Avatar_Cenote() Detecta si existe colision o no del avatar con el cenote.
En el juego existen 4 lecs o vasos de madera, este método, carga los 4 lecs con sus propios atributos
Lec01 = Content.Load<Model>("Lec/lec");
// Lec01
PelotaLec01 = new Pelota(this, Lec01);
PelotaLec01.Position = v[9];
PelotaLec01.Position.X -= 2;
PelotaLec01.Position.Z -= 3;
PelotaLec01.Position.Y -= 0.3f;
BVSphereLec01 = new BoundingSphere(PelotaLec01.Position, 1);
BVSphereLec01.Radius = 0.25f;
// Lec02
PelotaLec02 = new Pelota(this, Lec01);
PelotaLec02.Position = v[9];
14
PelotaLec02.Position.X -= 2;
PelotaLec02.Position.Z -= 4.5f;
PelotaLec02.Position.Y -= 0.3f;
BVSphereLec02 = new BoundingSphere(PelotaLec02.Position, 0.25f);
privatevoid juego04_Colision_Lec01()
privatevoid juego04_Colision_Lec02()
privatevoid juego04_Colision_Lec03()
privatevoid juego04_Colision_Lec04()
Estos cuatro métodos, detectan si existe colision o no del avatar con cada uno de los lecs. Por ejemplo el metodo“void juego04_Colision_Lec01()” detecta si el avatar tuvo colision o no con el lec01 o vaso 1.
1.3.1.1 Juego05.cs
privatevoid juego5_Colision_Avatar_Escaleras() Detecta si existe colisión del avatar con las escaleras de la pirámide. Si existe colisión el avatar sube las escaleras o colisiona con las escaleras. privatevoid juego05_Actualiza_Block0() Actualiza el movimiento del block con el avatar, si existe colisión del avatar con el block, el avatar captura el block. privatevoid juego05_Valida_Bordes_Escaleras() Se encarga de hacer que el avatar no se salga por los lados de las escaleras privatevoid juego05_Valida_Limite_Escaleras() Se encarga de validar que el avatar no se de los extremos de las escaleras.
15
1.3.1.2 Juego06.cs
privatevoid IniciaJuego6() Este método inicia las cuatro piedras existentes en el juego del venado. Cada piedra con sus propias características y atributos. Tambien carga e inicia los cuernos de cada venado. BVSpherePiedra[0] = new BoundingSphere(PelotaLec.Position + new Vector3(-1, 0.1f, -2), 0.2f); BVSpherePiedra[1] = new BoundingSphere(PelotaLec.Position + new Vector3(-2, 0.1f, -2), 0.2f); BVSpherePiedra[2] = new BoundingSphere(PelotaLec.Position + new Vector3(-3, 0.1f, -2), 0.2f); BVSpherePiedra[3] = new BoundingSphere(PelotaLec.Position + new Vector3(-4, 0.1f, -2), 0.2f); BVSpherePiedra[4] = new BoundingSphere(PelotaLec.Position + new Vector3(-5, 0.1f, -2), 0.2f); Random r = new Random(DateTime.Now.Millisecond); //Activalo Cuerno= r.Next(5); //Cuerno = 4; if (Cuerno == 0) { RespCuerno = 3; //es el BV a escoger ListaTextura[0] = 5; ListaTextura[1] = 9; ListaTextura[2] = 3; ListaTextura[3] = 0; ListaTextura[4] = 6; } else if (Cuerno == 1) { RespCuerno = 2; //es el BV a escoger ListaTextura[0] = 4; ListaTextura[1] = 6; ListaTextura[2] = 1; ListaTextura[3] = 2; ListaTextura[4] = 3; } else if (Cuerno == 2) { RespCuerno = 4; //es el BV a escoger ListaTextura[0] = 1; ListaTextura[1] = 7; ListaTextura[2] = 3; ListaTextura[3] = 5; ListaTextura[4] = 2; } private void Colision_Avatar_Piedra(int Num)
16
Si la variable j es negativa indica que el avatar no esta cargando la piedra, por lo tanto si no estás cargando la piedra, puede existir colisión, tal como se expresa en el condicional if if (j == -1) //si no estás cargando piedra alguna { if (BVSphereAvatar.Intersects(BVSpherePiedra[Num])) { //agarras la piedra ColisionPiedra[Num] = true; animationPlayer.StartClip(clip[5]); accion = 5; } } En caso de que no se cumpla la condicional anterior, quiere decir que estoy cargando la piedra. Por lo tanto si estoy cargando la piedra puede haber la acción de que el avatar suelte la piedra.Tal como lo muestra la condicional “ if (currentKeyboardState.IsKeyDown(Keys.Space) || currentGamePadState.Buttons.RightShoulder == ButtonState.Pressed)” else if (j == Num) { juego6_Actualiza_PiedraBV(Num); if (currentKeyboardState.IsKeyDown(Keys.Space) || currentGamePadState.Buttons.RightShoulder == ButtonState.Pressed) { ColisionPiedra[Num] = false; BVSpherePiedra[Num].Center.Y = PelotaLec.Position.Y + 0.1f; //el avatar en posicion de standby animationPlayer.StartClip(clip[0]); accion = 0; }
1.3.1.3 Juego07.cs
privatevoid IniciaJuego7() Crea los mangos y todos sus atributos, también inicializa el árbol que contiene estos mangos.
private void Aparece_Mango(GameTime gameTime)
Este método se encarga de desaparecer y reaparecer los mangos del árbol. Para realizar esto el método utiliza intervalos de tiempo para aparecer y reaparecer mangos.
17
1.3.1.4 Juego08.cs
privatevoid IniciaJuego8()
Crea los diamantes y meteoros con todos sus atributos, dirección y ubicación.
Este método se encarga de mover aleatoriamente los meteoritos.
Para esto utiliza el Random y Time de Windows para mover los meteoritos por todos lados.
1.3.1.5 Juego09.cs
privatevoid IniciaJuego9() Inicia todos los bloques participantes en el juego 9. Cargando un arreglo de varios bloques cada uno con su propia ubicación y demás atributos.
private void juego9_Actualiza_Block(int Num) Va moviendo los bloques que se le indiquen.
privatevoidColision_Avatar_Numero(intNum) Determina o detecta si existe o no colisión del avatar con los bloques. La siguiente condicional se cumple, si el avatar no está cargando el block, por lo tanto, existe la posibilidad de que pueda agarrar el block. Si la siguiente condicional no se cumple, quiere decir que el avatar ya tiene agarrado algún block. En el momento en que se haya agarrado el block se da la situación de que el avatar pueda soltarlo, esto se cumple en la siguiente condicional “ if (currentKeyboardState.IsKeyDown(Keys.Space) || currentGamePadState.Buttons.RightShoulder == ButtonState.Pressed)” if (j==-1) //si no estás cargando algún block { if (BVSphereAvatar.Intersects(BVSphereJuego9[Num])) { //agarras el Block ColisionBlockJuego9[Num] = true; animationPlayer.StartClip(clip[5]); accion = 5; } } else if(j==Num) //si estas cargando el block { juego9_Actualiza_Block(Num);
18
juego9_Actualiza_BV(Num); //suelta el block if (currentKeyboardState.IsKeyDown(Keys.Space) ||currentGamePadState.Buttons.RightShoulder == ButtonState.Pressed)
{ soundBank.GetCue("colocar piedra").Play();
1.4 Componentes SkinnedModelPipeline
19
Fig3. Arquitectura del componente SkinningModelPipeline. La funcionalidad de estos componentes son
explicados a continuación.
1.4.1 TypeWriter Para definir como la animación del esqueleto va a ser leído o escrito de un archivo binario, necesitamos
crear un TypeReader y un TypeWriter para cada clase que queramos crear para guardar datos de un
El primer parámetro es usado para escribir datos de objetos en un archivo binario. El segundo
es el objeto que será escrito.
SkinnedModelPipeline
TypeWriter
SkinnedModelProcessor
20
1.4.2 SkinnedModelProcessor Este módulo se encarga de convertir y guardar datos de un modelo a un modelo leíble
de un archivo para que se pueda ser compilado por XNA. Por ejemplo generar model.xnb del
model.fbx. El processor solo guarda datos de tipo “mesh”,” transformation”,” texture”.
En SkinnedModelProcessor nosotros escribimos un nuevo procesador de contenido.
public override ModelContent Process(NodeContent input, ContentProcessorContext context) Éste método sobrescribe la función Process. Esta función es llamada por el
SkinningModelPipeline.
Esta función necesita realizar lo siguiente.
1. Obtener la raíz del esqueleto // Find the skeleton. BoneContent skeleton = MeshHelper.FindSkeleton(input);
2. Hacer que ModelProcessor pueda Convertir datos de modelos ModelContent model = base.Process(input, context);
3. Validar el skinnedMesh
ValidateSkinnedMesh();
4. Aplicar transformaciones a las geometrías FlattenTransforms(input, skeleton);
5. Construir el Skinning y la animación BuildSkinningData(boneMap)
6. Procesar el modelo con la clase Base ModelContent model= base.Process(input, context);
7. Asociar Skinning y la Animacion al modelo.
Model.Tagg = new Skeleton(boneMap) static void ValidateMesh(NodeContent node, ContentProcessorContext context,string parentBoneName) Esta funcion recursivamente navega todos los nodos y remueve los “mesh” que no contienen datos pesados. Si un hueso tiene uno o mas hijos, esta función regresa false.
21
static void FlattenTransforms(NodeContent node, BoneContent skeleton) Esta funcion aplica transformaciones a los “meshes”.
22
1.5 Componentes SkinnedModel
.
Fig4. Arquitectura del componente SkinningModel. La funcionalidad de estos componentes son
explicados a continuación.
1.5.1 TypeReader.cs
1.5.2 SkinningData.cs Construye un nuevo objeto Skinning Data
Combina todos los datos necesarios para renderizar y animar un objeto skinned.
SkinningModel
TypeReaders
SkinningData
KeyFrame
AnimationPlayer
AnimationClip
23
Construye un Nuevo objeto skinning data. public SkinningData(IDictionary<string, AnimationClip> animationClips, IList<Matrix> bindPose, IList<Matrix> inverseBindPose, IList<int> skeletonHierarchy)
1.5.3 KeyFrame.cs Describe la posición de un hueso en un determinado punto en el tiempo.
Construye un Nuevo objeto keyframe. public Keyframe(int bone, TimeSpan time, Matrix transform) { boneValue = bone; timeValue = time; transformValue = transform; }
1.5.4 AnimationPlayer Se encarga de decodificar en matrices la posición del hueso
a partir de una secuencia de animación o AnimationClip.
public AnimationPlayer(SkinningData skinningData) Construye un nuevo AnimationPlayer public void StartClip(AnimationClip clip) Comienza con la decodificacion del AnimationClip especificado.
public void Update(TimeSpan time, bool relativeToCurrentTime, Matrix rootTransform) { UpdateBoneTransforms(time, relativeToCurrentTime); UpdateWorldTransforms(rootTransform); UpdateSkinTransforms(); }
public void UpdateWorldTransforms(Matrix rootTransform) Usado por el metodo update para refrescar los datos del worldTransforms
public void UpdateSkinTransforms()
24
Usado por el método update para refrescar los datos de SkinTransforms.
public void UpdateBoneTransforms(TimeSpan time, bool relativeToCurrentTime)
Usado por el metodo Update para refrescar los datos del BoneTransforms.
1.5.5 AnimationClip Es el equivalente en tiempo de ejecución del AnimationContentType Mantiene todos los keyframes necesarios para describir una animación simple.
25
1.6 Componentes Menu.
Fig5. Arquitectura del componente Menu. La funcionalidad de estos componentes son explicados a
continuación.
Menu Menu.cs
26
1.6.1 Menu.cs Es el componente principal del Menú, que se encarga de proveer todas las funcionalidades
del menú del juego.
La siguiente lista es un conjunto de texturas utilizadas para pintar los nueve iconos del juego. private Texture2D juego1; private Texture2D juego2; private Texture2D juego3; private Texture2D juego4; private Texture2D juego5; private Texture2D juego6; private Texture2D juego7; private Texture2D juego8;
private Texture2D juego9; Variable booleana que indica si el avatar esta en movimiento o no.
private Boolean isAvatarEnMovimiento; private Texture2D texturaMenu; La imagen del menú.
Numero de elementos que tiene este menú por el momento existen 9 elementos. private int number_elements;
El element_active indica que elemento del menu esta elegido. Si por ejemplo element_active=2, quiere decir que el juego 2 esta activado. private int element_active = 0;
Esta función se utiliza para preguntar al menú, si el usuario Presiono la tecla para evaluar el juego. public Boolean haElegidoEvaluar() { return userEligioEvaluar;
}
27
Regresa el elemento active que eligio el usuario a la hora de q cambiar de juego a traves del menu.
public int obtenerCualEligio() {
Éste método se encarga de cargar los elementos del menú. public void AddElement(int element_number, string element_name) {
Este método se encargar poner activo un determinado elemento del menú a través del juego
que elija el usuario.
public void setIdJuego(int idJuego) {
28
1.7 Componente Mapa (MapaDelJuegoV2).
Fig. Representa los módulos que integran el componente “Mapa”.
Los módulos son descritos a continuación.
Mapa
UbicacionAvatarEnMapaChico
PuntoDeActividad
PropiedadesMapa
MapaAdministrador
Mensajes
MensajeJuego
AdministradorMensajes
CounterGame3
CounterGame4
CounterGame7
CounterGame8
29
UbicaciónAvatarEnMapaChico.cs Su función principal es ubicar el avatar en el mapa del juego. Para ubicarlo necesita un vector3 del avatar en el juego. Esta función ubica el avatar en el mapa de acuerdo al juego que se este jugando. privatevoidcargarPuntoDeAcuerdoAJuego(intidJuego){ } Este método se encarga de detectar si el avatar del juego ha sido movido. Movido por el usuario. Tiene dos condicionales, la primera detecta si el avatar se ha movido hacia adelante, la otra condicional detecta si el usuario movió o caminó hacia atrás el avatar. Public void movingPuntoEnMapa(Vector3 positionTemporal){ ///Este una condicional que detecta si el avatar ha sido movido por el usuario if (positionOrigenAvatar.Z > positionTemporal.Z) {} else if (positionOrigenAvatar.Z<positionTemporal.Z) {}
PuntoDeActividad.cs Un punto de actividad es todo punto que se muestra en el mapa, tiene color, idActividad,y prendido. El color del punto, es el color que va a tener el punto en el juego. El idActividad, es la actividad a la que pertenece ese punto, en total hay 9 actividades en este juego. El atributo prendido, se utiliza para saber si el punto debe ser prendido o no en el mapa. Private void controlarColor(){} Este método se utiliza para hacer cambiar de color de algún punto. Cambiar de verde a amarillo, amarillo a verde, así sucesivamente.
PropiedadesMapa.cs Es una clase que maneja la configuración de la imagen2D que se utiliza en el mapa.
30
MapaAdministrador.cs Es la clase principal que se encarga de manejar todo lo relacionado con el mapa. Crea el mapa con sus
propiedades, lo pinta, y lo actualiza; También maneja un arreglo de PuntoDeActividad, lo inicializa y lo