Página 1 de 1

Videojuego Blender Game Seguimiento del enemigo, PROBLEMA

Publicado: Mié Dic 06, 2017 3:29 am
por Garviazul
Buenos días a todos
vereis uno de los ultimos proyectos en los que estoy metido consiste basicamente en un pacman pero en 3 dimensiones, le he dado un aspecto en 3D y admenas he hecho que el escenario sea una esfera, pues vereis esto me esta dadondo mas problemas de lo que yo imaginaba ya que al princio tube que alinear cada uno de los personajes con el eje z que tienen cada uno mediante el siguiente script:
from bge import logic
from mathutils import Vector

cont = logic.getCurrentController()
own = cont.owner
scene = logic.getCurrentScene()

for obj in scene.objects:
if"gravity" in obj:

pull = Vector(obj.getVectTo(own)[1])
pull.magnitude = own["gAmount"]
obj.applyForce(pull)

player = scene.objects["Player"]
align = own.getVectTo(player)[1]
player.alignAxisToVect(align, 2, 1)


Bueno una vez esto solucionado tengo que hacer ahora que cada uno de los enemigos persiga a mi personaje, pero claro no lo puedo hacer con una maya de navegación porque es en 2D y necesito una en 3D. Habia pensado en hacerla con 2 pero sinceramente no tengo ni idea de como empezar.
He intentado hacer también un track to a mi personaje pero digamos que eso hace que la gravedad del planeta (del escenario) deje de afectarle.
Espero que alguien me pueda ayudar,
Mushisimas gracias, Un saludo.

Os dejo unas imágenes del juego ara que os hagáis la idea

Re: Videojuego Blender Game Seguimiento del enemigo, PROBLEM

Publicado: Mié Dic 06, 2017 12:12 pm
por juani
Hola, podrías usar el actuador Steering,Imagino que lo conoces ya que hablas de malla de navegación.

Re: Videojuego Blender Game Seguimiento del enemigo, PROBLEM

Publicado: Jue Dic 07, 2017 11:15 am
por Garviazul
Muchas gracias por tu respuesta juani,
Ya lo intente, pero el problema que tengo es que no me detecta bien cuando llego a ciertas partes de la esfera, concretamente solo funciona bien cuando nos encontramos en la parte elevada. Cree una maya de navegación que es exactamente igual que la esfera le puse el steering que siguiera a mi personaje a partir de la maya, pero en ciertos momentos empieza a volar por los aires y a dar vueltas como loco.( te lo muestro en la imágen.)
Un saludo.

Re: Videojuego Blender Game Seguimiento del enemigo, PROBLEM

Publicado: Jue Dic 07, 2017 12:45 pm
por juani
Hola, veo fallos en el script, no está muy claro lo que debe de hacer.Entiendo que los objetos son dinámicos o rigid body prueba a poner a uno de los fantasmas además del steering un sensor alwais con un actuador motion, en el actuador en Force le pones - 20 a z, esto aplicará una fuerza constante en - z y hará que siempre esté pegado a la esfera, en Loc le pones la velocidad que tu quieras, creo que te funcionará, esto es lo que deberiá de hacer el script, si te funciona y lo quieres con script, lo hacemos.
Te comento un poco el script que has puesto.

from bge import logic
from mathutils import Vector #Este módulo no hace falta

cont = logic.getCurrentController()
own = cont.owner
scene = logic.getCurrentScene()

for obj in scene.objects: # recorre todo los objetos de la escena
if"gravity" in obj: #Si el objeto tiene la propiedad "gravity"

pull = obj.getVectTo(own)[1] # obtén el vector de posición del objeto
pull.magnitude = own["gAmount"] #magnitud es igual a la propiedad "gAmount " , no la veo en la imagen de depuración que as puesto, este sería el valor de la fuerza a aplicar en z supongo, no se si es que no la tiene o no le has dado a la casilla de depuración y no está representada

obj.applyForce(pull) #Aquí Pull es el vector de posición del objeto no hace nada, en todo caso sería (pull.magnitud) o (own["gAmount"])

player = scene.objects["Player"] # De la escena coge el objeto Player
align = own.getVectTo(player)[1] #Obtén el vector de posición de Player
player.alignAxisToVect(align, 2, 1)# alinea Player con su propio vector en el eje z (Esto no tiene sentido)

Re: Videojuego Blender Game Seguimiento del enemigo, PROBLEM

Publicado: Vie Dic 08, 2017 11:20 am
por juani
Olvidé decirte que la malla de navegación es opcional en el actuador steering no pongas malla de navegación, intenté hacer un ejemplo y lo que también puede ocurrir es que el planeta (esfera) tenga las colisiones como Box en vez de Sfere, si es así cámbialo (Collision Bounds = Sfere).

Re: Videojuego Blender Game Seguimiento del enemigo, PROBLEM

Publicado: Lun Dic 11, 2017 4:11 am
por Garviazul
Muchas gracias pero lo he intentado todo y me sigue ocurriendo lo mismo, cuando he estado tocando el código del script he probado a dejar todo sin gravedad al planeta, y me he dado cuenta que pero sigo teniendo la gravedad por defecto en blender , a pesar de la que tengo en el planeta y por eso creo que estoy teniendo los fallos que tengo, puede ser?? alguien sabe como poder desactivarla??
saludos :P

Re: Videojuego Blender Game Seguimiento del enemigo, PROBLEM

Publicado: Lun Dic 11, 2017 4:46 am
por juani
Captura de pantalla (1).png

Re: Videojuego Blender Game Seguimiento del enemigo, PROBLEM

Publicado: Lun Dic 11, 2017 10:28 am
por soliman
.....

Re: Videojuego Blender Game Seguimiento del enemigo, PROBLEM

Publicado: Lun Dic 11, 2017 11:49 am
por juani
Gracias Soliman por la aclaración, no se como lo puse en Blender Render pero no tiene que ver con Game Engine.
Saludos.

Re: Videojuego Blender Game Seguimiento del enemigo, PROBLEM

Publicado: Lun Dic 11, 2017 4:20 pm
por soliman
:)

Re: Videojuego Blender Game Seguimiento del enemigo, PROBLEM

Publicado: Mar Dic 12, 2017 1:07 pm
por Garviazul
Vale chicos muchas gracias a todos ya esta solucionado el asunto al final a cada uno de los enemigos fantasmas los programe por bloques de lógica y no por pyton para que se pegaran a la superficie, y mediante el steering hice que me persiguieran al jugador muchas gracias a todos!!.
Saludos ! :) :)