primero agradecer toda la ayuda y los ejemplos que hebeis hecho.Con la intencion, no solo de hacerlo,sino de saber que es lo que estoy haciendo he decidido ir avanzando pasito a pasito para saber bien bien donde estoy y cual es el siguiente paso.Bueno pues mirando los ejemplos y akgo de manual he hecho esto.

steep
[gml]if global.turno=1 and vida1a1 > 0{
instance_create(xstart,ystart,zona100)
if point_distance(xstart,ystart,lider_1a1.x,lider_1a1.y)<35



keyW=keyboard_check(ord("W"))
keyS=keyboard_check(ord("S"))
keyA=keyboard_check(ord("A"))
keyD=keyboard_check(ord("D"))
keyQ=keyboard_check(ord("Q"))
keyE=keyboard_check(ord("E"))
keyShift=keyboard_check(vk_shift)
keySpace=keyboard_check(vk_space)
keyEnter=keyboard_check(vk_enter)



if(keyW)     //avanzar
{
speed=1;}

else

if(keyS)     //retroceder
{
speed=-1;}

else

speed =0

if(keyA){   //rotar izquierda
direction+=2
image_angle=direction
}

if(keyD){   //rotar derecha
direction-=2
image_angle=direction
}

if keyboard_check_pressed(vk_space){
    if balas>0{bala=instance_create(x,y,Bala)  balas-=1
    bala.direction=direction
    bala.image_angle=direction
    disparos=instance_create(x,y,disparo)
    disparos.direction=direction
    disparos.image_angle=direction
    }

}
if keyboard_check_pressed(vk_enter) {global.turno+=1 keyboard_clear(vk_enter)}
if global.turno>global.maxturno {global.turno=1}

}


else {speed=0}
if vida1a1<=0 {instance_destroy() a=instance_create(x,y,muerto1a1)a.turno=1}
else
if point_distance(xstart,ystart,lider_1a1.x,lider_1a1.y)>35 {speed=0}[/gml]

se que no esta bien hecho pero ya empiezan a pasar cosas parecidas a lo que quiero y entiendo porque pero aun me debato cual es la solucon  :-[
lo primero que pasa pero que no pasa como debiera ser es que efectivamente cuando es el turno de este soldado aparece el circulo (zona100) y soy consciente que he puesto que aparezca en x.start e y.start del lider_1a1 con lo cual siempre aparece en el mismo sitio.....bueno es un mal menor porque intuyo que no estoy muy lejos de la solucion para esto (la esperanza es lo ultimo que se pierde)
llegados a este punto mi unica intencion fue comprobar si efectivamente alejando al lider_1a1 de x.start e y.start sucedia algo y a?adi las dos lines de if point_distance(xstart,ystart,lider_1a1.x,lider_1a1.y)<35 esta al inicio para que fuera la condicion para poder moverse
if point_distance(xstart,ystart,lider_1a1.x,lider_1a1.y)>35 {speed=0} y esta al final...en ese momento pense a modo de comprobacion ponerle el speed a cero y efectivamente se para.El problema esta en que como sigue estando a una distancia mayor de 35 el speed siempre va a ser cero y no me deja moverme hacia atras.Puedo rotar ,disparar y pasar turno....bueno pues ahi estoy...intentare buscar solucion a mis dos peque?as dudas y hsasta no conseguirlo no seguire avanzando....os lo adjunto pa que veais la que estoy liando jajajaja salud y gracias mil.

#17 Diciembre 27, 2010, 01:06:50 PM Ultima modificación: Diciembre 27, 2010, 03:19:53 PM por unbleached
he intentado esto pero tampoco funciona...cuando el objeto lider_1a1 esta mas lejos de 35 de x.tart e y.start sigue dejandome total libertad de movimientos y no va a x.previous e y.previous  :'(
[gml]if point_distance(xstart,ystart,lider_1a1.x,lider_1a1.y)>35 {x=xprevious;} {y=yprevious;}[/gml]

Ahora si espero que te sirva este nuevo ejemplo

Ahora si perfecto 3dgeminis....claro no habia caido en darle speed=1 mientras exista colision con zona100 y sino pues speed=0...muy buena me sirvio de mucho.mil gracias