×

Langue

Fermer
Atelier 801
  • Forums
  • Dev Tracker
  • Connexion
    • English Français
      Português do Brasil Español
      Türkçe Polski
      Magyar Română
      العربية Skandinavisk
      Nederlands Deutsch
      Bahasa Indonesia Русский
      中文 Filipino
      Lietuvių kalba 日本語
      Suomi עברית
      Italiano Česky
      Hrvatski Slovensky
      Български Latviešu
      Estonian
  • Langue
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [Script] Intersección de líneas
[Script] Intersección de líneas
Haku
« Sénateur »
1393318620000
    • Haku#0807
    • Profil
    • Derniers messages
#1
  0
Este es un script de ejemplo que muestra como detectar la intersección de líneas rectas y curvas (círculos), calculando el punto en donde una trayectoria recta chocaría con los suelos del mapa.

• El script lee el xml de cualquier mapa cargado.
• Calcula y almacena la posición de todos los vértices de los suelos rectangulares.
• También guarda la posición y tamaño de los suelos circulares.
• Calcula el punto en que una línea se cruza con cada pared de cada suelo.
• También hace el cálculo correspondiente para los círculos.

También existen tres tipos de trayectorias para la línea que se forma entre el ratón y el puntero del mouse: un segmento, un rayo o una recta completa.

El script básicamente mostrará partículas en los puntos donde intersectará nuestra línea con cada suelo, al hacer click en cualquier parte del mapa.


Posibles aplicaciones
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Las funciones en este script podrían utilizarse para varios fines:

• Sistemas de disparos
• Detección de trayectorias de objetos (como las runas)
• Movimiento de partículas
• Etc.


Scripts
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

• https://paste.moepl.eu/view/0777b29f

• https://paste.moepl.eu/view/ae1c67c2 - Esta versión además encuentra el punto más cercano, para usarlo como detector de colisiones.


Puedes activar el debugMode para mostrar los vértices de los rectángulos y los círculos. También puedes cambiar el tipo de línea modificando la variable lineType (0 segmento, 1 rayo, 2 recta). Y por supuesto, puedes probar y modificar el script a tu antojo para usarlo en tus proyectos.

En un futuro posiblemente desarrolle una explicación del script y los cálculos que se llevaron a cabo. Si alguien tiene dudas o está interesado al respecto siéntase libre de comentarlo.
Zutto
« Citoyen »
1393342920000
    • Zutto#4451
    • Profil
    • Derniers messages
    • Tribu
#2
  0
o.o

En cuanto me conecté lo voy a probar, tiene buena pinta.

¡Muchas gracias!

Con esto aprenderé más lua :p
Tocutoeltuco
« Censeur »
1393345260000
    • Tocutoeltuco#0000
    • Profil
    • Derniers messages
#3
  0
Es perfecto!
Me ayudará en un futuro con mis mapas mecanismos!
Muchisimas gracias Hina!
Haku
« Sénateur »
1393356660000
    • Haku#0807
    • Profil
    • Derniers messages
#4
  0
Añadí una v2, que también busca el punto más cercano de todos los que encontró, y luego se puede usar fácilmente modificando la parte que dice --do stuff.

https://paste.moepl.eu/view/ae1c67c2

//
Nótese que el script sirve con absolutamente cualquier mapa que tenga suelos, con lo único que no sirve es con diseños Viprin y con suelos dinámicos por razones lógicas.

Simplemente probar con el comando /np @mapa para probar.

Nota: ¡no sirve con mapas vanilla! No se puede acceder al xml de esos mapas.
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [Script] Intersección de líneas
© Atelier801 2018

Equipe Conditions Générales d'Utilisation Politique de Confidentialité Contact

Version 1.27