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.

Mensajes - 11chrismaster22

1
Cita de: elviskelley en Noviembre 09, 2014, 09:27:03 PM
Este tipo de ia es muy facil. ahora trabajo en un manual cuya IA tenia solo 5 fases y ya voy por 8, y se me siguen ocurriendo ideas, en fin te dije esto para que entiendas que las IA se hacen por como yo las llamo "Fases" otros les dicen "Estados"
en fin tu Ia es super sencilla, pero te lo digo a modo de que aprendas.
tu Ia debe tener varias fases, cada una de las fases activa un Script de comportamiento.
Lo principal es la primera fase que seria; "contratake" esta debe ser la primera fase pues indicas que aun si sale de su rango pero lo atacas el siga persiguiendolo a modo de contratacar.
la segunda fase seria; "rangoZona" Esta fase controlaria un rango de alejamiento de la zona inicial del enemigo, es decir cuanto podra alejarse de su hogar, o zona de resguardo, pero ignora esta fase si esta contratacando.
La tercera Fase sera; "RadioAtk"  Este seria un radio de ataque o digamos de vision, si el enemigo esta cerca es decir dentro de este radio el lo seguira y atacara, pero si se aleja de la zona hogar ignora esta y activa la fase "rangoZona"
y como vez la fase rango zona es ignorada si contrataca. en pocas palabras las tres fases estan en cordinacion una a la otra.
Es de esta manera como se piensa al crear una IA.-

Ahora como llevarlo a codigo. pues veras como
claro ante todo debes haber declarado las variables de las fases en el event create.
contratake=0; rangoZona=0; RadioAtk=0;

Ahora creamos los scripts de cada fase, osea lo que va a hacer. Pero lo dejo de ultimo antes interactuamos con ellos como si los hubieras creado.
event de colision con alguna bala.
contratake=1; //la activamos para que contrataque.

event step
if contratake then {scrAtacar();}
//si esta activo contrataque va a atacar.

if (rangoZona=0 and RadioAtk=1) then {scrAtacar();}
//si no esta activo el regresar al hogar y el enemigo esta en su zona lo ataca.

if (rangoZona=1 and contratake=0) then {RadioAtk=0; scrRegresar();}
//si no contrataca y se alejo mucho de su hogar, activa el script de regresar.

//aca viste como funcionan los scripts de fases (estados) pero ahora debes crear los scripts mencionados y colocarlos.

//para verificar si se alejo del hogar "rangoZona"
if distance_to_point(xstart,ystart,x,y) > 200  then
{rangozona=1;}
//coloque 200 como distancia maxima de alejamiento pero coloca la que gustes.

//para verificar si esta en su rango de ataque.
var ene_id;
ene_id =instance_nearests(x,y,objEnemigo); //coloca el nombre del parent enemigo.
if distance_to_point(x,y,ene_id.x,ene_id.y) < 200  then
{RadioAtk=1;}
//coloque 200 como rango de vision ajustalo a gusto.

ahora solo crea los script que mencione y coloca los codigos de perseguir y dispara o regresar al inicio osea xstart y ystart. Espero entiendas saludos.

entendi todo lo de las fases y lo que explicaste y habia pensado lo mismo solo no savia como hacerlo en codigo, el codigo que pusiste lo entendi casi todo pero me da algunos errores epero me puedas contestar te mandare un mensage  :-\.
2
primero que nada gracias por comentarios.

bueno como dijo TheSandBoxMKG no es teletransportandose es volando o caminando como lo entiendan mejor, tambien intente usar move_towards_point pero no entiendo bien como funciona ni como usarlo y el xstart y ystart lo use pero no funciono  :'( .

use esto
if instance_exists(nave)
{if distance_to_object(nave) < 150
{move_towards_point(nave.x,nave.y,2)}}

nota:nave es el objeto del jugador
3
Como abran leido el titulo mi problema es que necesito un enemigo con inteligencia artificial que me siga hasta un rango y luego de ese rango se regrese a donde estaba al principio, ademas que me dispare y que si llega a los limites del rango pero yo le sigo disparando me siga siguiendo... espero me allan entendido ???.

hasta haora solo tengo esto :-\:
en step del enemigo

if instance_exists(nave)
{if distance_to_object(nave) < 150
{move_towards_point(nave.x,nave.y,2)}
else {speed=0}}


con esto me sigue y si yo me alejo mucho se detiene pero no vuelve a su inicio ademas no se como hacer que dispare, gracias de antemano y espero respuestas.
4
Cita de: ocarina en Marzo 18, 2014, 05:29:16 AM
a mi se me ocurre algo mas sencillo!!!
mira crea un objeto invisible y lo pones en el filo del barranco y le pones que cuando el enemigo colisione con este objeto que se devuelva jajajaja mas sencillo no!!!!

ademas de eso podrias hacer que el enemigo te siga hasta un punto osea despues de pasar una distancia vuelva a su lugar de inicio
5
Preguntas y respuestas / Re:Asteroides aleatorios
Noviembre 06, 2014, 07:44:41 PM
muchas gracias! me funciono perfectamente :D
6
Preguntas y respuestas / Re:Asteroides aleatorios
Noviembre 04, 2014, 12:49:41 AM
Cita de: TheSandBoxMKG en Noviembre 02, 2014, 03:37:48 PM
En un script llamado scr_create_outside pon esto:
[gml]var objspr,sprw,sprh,sprx,spry,perim,cenx,ceny,sprhw,sprhh,ranpos,tarx,tary,linh,linv;
objspr=object_get_sprite(argument0)
sprx=sprite_get_xoffset(objspr)
spry=sprite_get_yoffset(objspr)
sprw=sprite_get_width(objspr)
sprh=sprite_get_height(objspr)
sprhw=sprw/2
sprhh=sprh/2
cenx=sprhw-sprx
ceny=sprhh-spry
perim=sprhw*4+sprhh*4+room_height*2+room_width*2
linh=sprw+room_width
linv=sprh+room_height
randomize()
ranpos=irandom(perim)
if ranpos<linh then
{
    tarx=ranpos-sprhw
    tary=-sprhh
}
if ranpos>=linh then
{
    tarx=linh-sprhw
    tary=ranpos-linh-sprhh
}
if ranpos>=linh+linv then
{
    tarx=linh-sprhw-(ranpos-linh-linv)
    tary=linv-sprhh
}
if ranpos>=linh+linv+linh then
{
    tarx=-sprhw
    tary=linv-(ranpos-(linh+linv+linh))-sprhh
}
instance_create(tarx+cenx,tary+ceny,argument0)[/gml]

Como funciona:

Tiene una propiedad: el objeto a crear

Ejemplo:
scr_create_outside(obj_asteroide)

Un ejemplo de GMK8:

Gracias por el ejemplo pero no es lo que busco, ya resolvi que aparescan aleatoriamente y que se muevan...

haora tengo otro problema es que cuando inicia la habitacion los asteroides no se mueven y programe que se movieran ademas le puse una colicon que los ase moverse a otro lado aleatoriamente pero solo se mueven cuando ocurre esta colicion.

les dejo lo que llevo hasta haora asi me entenderan mejor... espero respuesta  :D

nota:los controles son las flechas con el mouse se apunta y del 1 al 4 se selecciona armas ademas si presionas shift la velocidad de movimiento aumenta.




7
Preguntas y respuestas / Re:AYUDA CON COCHES
Noviembre 01, 2014, 06:14:17 PM
hola  :) soy nuevo aqui pero te tengo una idea.

crea un objeto llamado coche o obj_coche_rojo
luego programa las calles y ponle una variable algo como camino
y pon el en coche que balla caminando por la calle  XD
programalo con IA asi si te paras enfrente que se detenga y programa como mejor te sirva.
8
Preguntas y respuestas / Asteroides aleatorios
Noviembre 01, 2014, 02:38:15 AM
bueno es mi primer tema o pregunta asi que espero respuesta  :), mi problema es el siguiente estoy creando un juego tipo asteroide (el clasico), cree 3 sprites el asteroide grande, mediano y pequeño, como adivinaran si se destruye el grande salen varios medianos y si se destruye un mediano saldran pequeños...

haora mi duda es como logro que eso pase y mas que cuando se destruya un grande aparesca otro grande en otro lugar aleatorio de la habitacion  :'( ya que la habitacion o la room sera bastante grande y como logro que cada asteroide necesite diferente cantidad de disparo por ejemplo que el grande necesite 5 disparos para explotar y los medianos 3 y los pequeños 1.

espero respuesta y gracias de antemano  :D.