Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 4193 miembros registrados.
El último usuario registrado es Godot.

Nuestros miembros han publicado un total de 85209 mensajes en 12131 argumentos.

Sistemas de detección; un manual de referencia

Ver el tema anterior Ver el tema siguiente Ir abajo

Sistemas de detección; un manual de referencia

Mensaje por silvanash el 2017-02-13, 23:32

Como parece que la gente se lía mucho con sistemas de visión, he decidido escribir un tocho-post y spammearlo según necesite. Antes de leer este tocho-post, recomiendo echarle un vistazo al tocho-post que escribí sobre coordenadas y variables, para ahorrarme la explicación básica de cómo se usan las coordenadas.

Todos los sistemas asumen que el límite de acción del jugador es de 3 tiles. Digamos que ese límite es el rango al que puede hacer daño una bomba si el jugador la activa sobre sí mismo. Esta bomba no depende de la dirección en la que esté mirando el jugador, sino que afectará a cualquier cosa que esté dentro de su límite de acción.

Al ajo.

1) Acción en línea recta.


La versión más simple del sistema. Se basa en comprobar si uno de los ejes vale 0, y luego si el otro eje está dentro del límite de visión. Algo así:

Diferencia de Coordenada_X es igual a 0?
# Ambos eventos están en el mismo punto del eje X, pero pueden estar en distintos puntos en el eje Y.
-> Diferencia de Coordenada_Y es menor o igual a 3?
-> -> El evento está dentro del límite de acción.
-> Excepción
-> -> Diferencia de Coordenada_Y es mayor o igual a -3?
-> -> -> El evento está dentro del límite de acción.
-> -> Fin de condiciones
-> Fin de condiciones
Fin de condiciones

Para facilitar la operación, se trabaja en valores absolutos. Es decir, convertir todos los valores a números positivos (vale, técnicamente, números sin signo). Asumiendo que la variable[1] guarda la diferencia de coordenadas en el eje X, convertirla a valor absoluto es así:

Condiciones y efectos: var[1] menor que 0
-> var[1] multiplicar por [-1]
Fin de condiciones

Teniendo valores absolutos, el pseudo-código anterior queda:

Convertir coordenadas a valores absolutos.
Diferencia de Coordenada_X es igual a 0?
-> Diferencia de Coordenada_Y es menor o igual a 3?
-> -> El evento está dentro del límite de detección
-> Fin de condiciones
Fin de condiciones

No hace falta comprobar el valor negativo de la coordenada Y, porque el evento estaría dentro del rango (3 tiles) independientemente del signo.

2) Acción en cuadrado.


El siguiente sistema más simple. Tras convertir las coordenadas a valores absolutos, basta con comprobar si ambas coordenadas están dentro del límite de acción, tal que:

Convertir a valores absolutos.
Coordenada_X menor o igual a 3
-> Coordenada_Y menor o igual a 3
-> -> Dentro del límite de detección
-> Fin de condiciones
Fin de condiciones

Para entender este sistema, echadle un vistazo a esto:


En ese diagrama hay marcado un área que está a 3 tiles de distancia del personaje (la cruz roja), tanto en el eje X como en el eje Y. El tile más alejado que se encuentra en ese cuadrado es el que está marcado en azul, y ese tile cumple las condiciones de que X e Y sean menores o iguales al límite de acción. El tile rojo, que tiene diferencias de X e Y inferiores a 3, se encuentra dentro del cuadrado y también cumple las condiciones.

Este sistema presenta un inconveniente obvio: da mucho más alcance de detección en las esquinas que en los lados. Para que se entienda mejor:


Imaginemos que extendemos una cerda desde la cruz roja hasta el punto A. Este punto A está a 3 tiles del centro, así que la cuerda mide 3 tiles de largo. Ahora tiramos esa cuerda hasta el punto B. Como podréis imaginar, la cuerda traza un cuarto de círculo desde el punto A hasta el punto B, porque la cuerda no puede extenderse. Ese cuarto de círculo es toda la distancia a la que debería poder afectar un evento con 3 tiles de radio de acción. El cuadrado azul, muy evidentemente, está fuera de ese rango. Para corregir esto está el siguiente sistema.

3) Acción en círculo.


Tras convertir a valores absolutos, comprobamos si la suma de coordenadas está dentro del límite.

Convertir a valores absolutos.
Coordenada_X sumar Coordenada_Y
Coordenada_X menor o igual a 3?
-> Dentro del límite de acción
Fin de condiciones

Para entender cómo funciona el "círculo" está esto:


En esa imagen he marcado la distancia que hay entre el centro y distintos tiles. Todos esos tiles están a 3 "pasos" de distancia del centro. Esos 3 tiles de distancia máxima se corresponden con la suma de valores absolutos de las coordenadas.

4) Acción en cono.


Engine hecho aquí: http://www.mundo-maker.com/t9935-engine-vision-en-cono-para-los-npcs#79583

Explicar cómo está hecho sería demasiado largo, así que dejo la demo y listos.


Última edición por silvanash el 2017-02-14, 16:23, editado 1 vez
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 1621

Gracias : 227

Volver arriba Ir abajo

Re: Sistemas de detección; un manual de referencia

Mensaje por xXIsrael0499Xx el 2017-02-13, 23:48

Wao...Muy Buen Aporte Aplauso...Sinceramente no me hace falta XD Aunque algún Día lo necesitare así que muy bueno...sinceramente te lo curraste...lo tendré en mi lista de engine a utilizar....Y Gracias Por Preocuparte por nosotros XD...y tomarte el tiempo y la dedicación de explicar esto...Te Ganaste Mi Like (Gracias)... Warrior Espero volver a ver otra vez este tipo de aportes...
avatar
xXIsrael0499Xx
Principiante
Principiante

0/3

Créditos 981

Gracias : 45

Volver arriba Ir abajo

Re: Sistemas de detección; un manual de referencia

Mensaje por alex1633 el 2017-02-14, 13:18

Esto es lo que he hecho, funciona un poco raro, abajo me toma bien el radio, pero por algunos lados, el radio llega a +3 +4 +5.... y no comprendo del todo cuál es el fallo.

avatar
alex1633
Soñador
Soñador

0/3

Créditos 404

Gracias : 15

Volver arriba Ir abajo

Re: Sistemas de detección; un manual de referencia

Mensaje por alex1633 el 2017-02-14, 13:21

Supongo que toma mal dependiendo del lado en el que estoy porque si al personaje le digo que le reste su Y a la del enemigo, si personaje está en Y50 y enemigo en Y48, el resultado es 2, pero si personaje está en Y48 y enemigo en Y38 el resultado es -10, por lo que es menor a 3 y sigue actuando, pero está a una distancia de 10 tiles, ese es el problema que tengo.
avatar
alex1633
Soñador
Soñador

0/3

Créditos 404

Gracias : 15

Volver arriba Ir abajo

Re: Sistemas de detección; un manual de referencia

Mensaje por Producciones The Golden el 2017-02-14, 15:14

Comentario editado para evitar confusión.


Última edición por Producciones The Golden el 2017-02-14, 17:29, editado 1 vez
avatar
Producciones The Golden
Veterano
Veterano

0/3

Créditos 640

Gracias : 60

Volver arriba Ir abajo

Re: Sistemas de detección; un manual de referencia

Mensaje por silvanash el 2017-02-14, 16:28

silvanash escribió:Convertir a valores absolutos.
Coordenada_X menor o igual a 3
-> Coordenada_Y menor o igual a 3
-> -> Dentro del límite de detección
-> Fin de condiciones
Fin de condiciones

Antes de hacer la comprobación de coordenadas, tienes que convertirlas a valores absolutos. De esa forma, evitas el problema de los números negativos.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 1621

Gracias : 227

Volver arriba Ir abajo

Re: Sistemas de detección; un manual de referencia

Mensaje por alex1633 el 2017-02-14, 19:45

Eso es lo que había visto y me había dejado perdido, eso de valores absolutos como funciona? No existen los -1, -2....? Cómo se configura eso?
avatar
alex1633
Soñador
Soñador

0/3

Créditos 404

Gracias : 15

Volver arriba Ir abajo

Re: Sistemas de detección; un manual de referencia

Mensaje por silvanash el 2017-02-15, 16:40

silvanash escribió:Condiciones y efectos: var[1] menor que 0
-> var[1] multiplicar por [-1]
Fin de condiciones

Cuando multiplicas un número negativo por otro número negativo, el resultado es un número positivo. Para convertir un número negativo en su versión positiva, lo multiplicas por -1.

Técnicamente, eso no es obtener un valor absoluto, porque los valores absolutos no tienen signo, ni positivo ni negativo, pero a efectos del Maker, el número positivo te sirve como un valor absoluto.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 1621

Gracias : 227

Volver arriba Ir abajo

Re: Sistemas de detección; un manual de referencia

Mensaje por alex1633 el 2017-02-15, 20:00

Explico paso a paso lo que he hecho: (Por supuesto, sigue sin funcionarme)

He creado el evento enemigo y le he puesto sus dos variables, su X y su Y
Este evento - Coordenada X
Este evento - Coordenada Y

Luego he puestos las coordenadas al personaje:
Personaje - Coordenada X
Personaje - Coordenada Y

Finalmente he hecho la resta entre las variables para tener un número de coordenada final.

Coordenada Enemigo X (Resta) Coordenada Personaje X
Coordenada Enemigo Y (Resta) Coordenada Personaje Y

Ahora he hecho lo de convertir en valores abosultos:
Si el número de la X o de la Y es menor a 0, que haga una multiplicación de x -1 para que de un número positivo, entonces:

Condiciones:
Enemigo X >=0
Enemigo X * -1
Excepción
Fin

Condiciones:
Enemigo Y >=0
Enemigo Y * -1
Excepción
Fin

Ahora ya una vez hecho el cálculo para evitar números como -4 -5 -6.... se pasa a lo del distanciamiento de hasta 3:

Condiciones: Enemigo X >=3
Condiciones: Enemigo Y >=3
Texto: Pillado
Excepción
Fin
Excepción
Fin

Pongo en marcha y sigue sin funcionar, miro que el interruptor esté bien y todo eso, y no veo nada, me lo he mirado unas cuantas veces pero no logro comprender donde está el error.





Edito: Fallo estúpido en menor que, pero de todas maneras, va algo mejor, pero no hace un cuadrado como debe ser, es más bien un rectángulo apuntando hacia abajo.
avatar
alex1633
Soñador
Soñador

0/3

Créditos 404

Gracias : 15

Volver arriba Ir abajo

Re: Sistemas de detección; un manual de referencia

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


Permisos de este foro:
No puedes responder a temas en este foro.