Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Temas - sanosuke

1
hola chicos, ante todo me gustaría daros a todos las gracias pues siempre que he planteado una duda en este foro se me ha respondido, prestándome ayuda o dándome consejos sobre como seguir, quería aclarar esto ya que la ultima vez que postee en el foro, no tuve ocasión de dar las gracias (problemas de internet).

y ahora mi nueva duda.

resulta que tengo tres tipos de enemigos diferentes: obj_ene1, obj_ene2 y obj_ene3
de cada tipo de enemigo se crean varias instancias en el juego; el personaje no tiene la capacidad de atacar pero puede, po asi decirlo, convencer a un enemigo para que ataque a los demás.
mi pequeño problema viene a la hora de que ese enemigo convencido escoja a quien atacar, he probado con instance_nearest pero de esta forma solo escoge a la instancia mas cercana de un obj_ene, lo que yo intento es que de todos los tipos de enemigo que existan en ese momento escoja al mas cercano y le ataque.
todo funciona bien si solo hay un tipo de enemigo por que le digo que coja la instancia mas cercana y punto.

alguna sugerencia?
2
Preguntas y respuestas / IA de los enemigos
Junio 24, 2014, 11:20:14 AM
 :GMS:

hola chicos, tengo un problemilla tengo este codigo para las ia´s de los enemigos:
sacado de este foro
//AI
//ATACAR
if instance_number(obj_alien)=0 //si no existe jugador
    {
        atacar= false        //atacar es falso
        global.ataquegranjero = false
    }   
if instance_number(obj_alien)>0//si hay por lo menos un jugador
    {
        if (distance_to_object(obj_alien)<250 //si la distancia al jugador es menor a 250
        and point_direction(x,y,obj_alien.x,obj_alien.y)>direction-45 // y la direction hacia el jugador esta entre los
        and point_direction(x,y,obj_alien.x,obj_alien.y)<direction+45)// 90� del angulo de vision
        //or distance_to_object(obj_alien)<6 // � si esta muy cerca
        then
        {
       
        {
                atacar=true //tiene que ataca
                pasear=false //debe dejar de estar paseando por el mapa
              }
        }
                   
        else //de lo contrario
              {
                if distance_to_object(obj_alien)>180 //si la distancia hacia el jugador es mayor a 200
                atacar=false                      //debe dejar de atacar
                global.ataquegranjero = false
               
              }
}

if atacar=true //si atacar es verdadero
    {
        move_towards_point(obj_alien.x,obj_alien.y,4);//debe moverse hacia el jugador.

        if collision_line (obj_granjero.x, obj_granjero.y, obj_alien.x, obj_alien.y, obj_heno3, true, true)
            {
                atacar = false
                global.ataquegranjero = false
            }

        if collision_line (obj_granjero.x,obj_granjero.y,obj_alien.x,obj_alien.y,obj_heno1,1,1)
            {
                atacar=false
                global.ataquegranjero = false
            }

        if collision_line (obj_granjero.x,obj_granjero.y,obj_alien.x,obj_alien.y,obj_heno2,1,1)
            {
                 atacar=false
                 global.ataquegranjero = false
            }
       
    }



//PASEAR
if  atacar=false //si no esta atacando

    {pasear=true}//puede pasearse por el mapa


if pasear=true //si pasearse es verdadero
    {
        if (xmove<x+1)and(xmove>x-1) and (ymove>y-1) and (ymove<y+1) and move=true //si esta hacia donde deber�a moverse y se puede mover
        {
       
        xmove=round(xstart+random(300)+random(200)) //a donde debe moverse es X un lugar aleatorio
        ymove=round(ystart+random(300)+random(200)) //a donde debe moverse es Y un lugar aleatorio
        move=false // se desactiva mover
        speed=0
        }
        if round(random(10))=10 and move=false // si de la posibilidad se da de 1 en 60
        {
        move=true //puede moverse
        }
    }
if pasear=true and move=true //si pasear esta activada y se puede mover
    {
        move_towards_point(xmove,ymove,1.7);//debe moverse hacia la variables xmove e ymove.
       
    }


el codigo esta en el evento step del enemigo


la mecanica es la siguiente, cuando entro en la linea de vision del enemigo este me ataca (atacar=true) cuando algo interrumpe su linea de vision deja de atacarme, mi personaje puede "poseer" al enemigo pero solo cuando no me esta atacando, es decir si voy por detras del enemigo y pulso una tecla la instancia enemigo se destruye y la instancia de mi personaje cambia a la que yo quiero.

todo funciona perfecto, salvo cuando hay mas de un enemigo en escena.

este codigo va en la colision del personaje con el enemigo y es el que hace que cambie mi instancia.
if keyboard_check(vk_space) 
{
    if global.ataquegranjero = false
        {
        instance_change (obj_granjero_pos,false)
        view_visible[0] = 0
        view_visible[1] = 1
        }


resumiendo cuando hay dos o mas enemigos en escena la variable global.ataquegranjero siempre es false, asi que si un enemigo me esta atacando y otro no, la instancia del personaje cambia pero el enemigo no es destruido.
no se si me he explicado bien ???

alguna sugerencia para evitar este problema?
3
hola a todos, a ver si me pueden ayudar, he instalado la version free del game maker studio en un ordenador con windows xp con sp3, esta todo actualizado. bueno el problema es que el programa arranca perfectamente y puedo crear un proyecto de forma normal, creo sprites, objetos, , rooms, eventos...todo bien pero cuando le doy al boton para probar mi juego y no lo ejecuta, he probado el modo debug y tampoco, tambien he probado a compilarlo y nada, no llega a arrancar, en el administrador de tares el proceso aparece escasamente 3 segundos y luego desaparece.

el ordenador cumple con los minimos requeridos por el programa, asi que no se que puede ser.

alguna sugerencia.