elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Simulación de choques desde atrás.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Simulación de choques desde atrás.  (Leído 816 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.460


Hackentifiko!


Ver Perfil
Simulación de choques desde atrás.
« en: 17 Noviembre 2024, 07:53 am »

Barriles aparecen desde la izquierda, moviéndose a la derecha. Quiero que en vez de poder ocupar el mismo espacio (es un mundo 2d, los barriles están acostados y se ve su parte circular, como si fuese una rueda) y que uno pase al otro como si nada, se choquen, y que el de atrás pierda velocidad ¿se detenga? y el otro gane ¿lo mismo que la otra perdió? Pregunto porque no sé cómo sería más realista.

El principal problema que tengo es quizá por no saber Física. Se me ocurre algo así:
Se mueve el barril que está más a la izquierda.
luego el siguiente, y así sucesivamente hasta el más derecho.
Luego se va mirando desde la izquierda, a ver si quedó tocando a uno de delante, en cuyo caso el de atrás pierde velocidad y el de delante gana.
El problema es que a altas velocidades puede ocurrir algo así:
O sea, son 2 momentos distintos. En el 1ero, arriba, no se chocaron.
Abajo, se movieron, como indiqué, pero el de más izquierda se movía mucho más rápido que el del medio, que era más rápido que la derecha, así que quedaron tocándose los 3. Si en el programa pongo que I se detenga por tocar a M, y M se detenga por tocar a D, entonces I y M van a quedarse tocando y quietos, lo cual no es físicamente posible, sería que estén ocupando el mismo espacio.

¿Cómo lo hago bien?


En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.460


Hackentifiko!


Ver Perfil
Re: Simulación de choques desde atrás.
« Respuesta #1 en: 19 Noviembre 2024, 16:28 pm »

A la izquierda se notan problemas a medida que avanza el juego, pero más allá de eso se volvió más aburrido, es como que sólo se mueve un barril a la vez :/
¿Así es realista o hice algo mal?

https://youtu.be/Ouy3ysDW6L0

Código
  1. function MoveBarriles () {
  2. // Empieza desde 2 porque el 1 no existe, porque cada objeto tiene una "profundidad" que determina cual aparece delante/atrás y se basa en el número del barril, para más facilidad, pero el número 1 está reservado para el personaje.
  3. Moved = 1;
  4. do {
  5. Moved++;
  6. // I es un objeto donde van las imágenes, es útil para eliminarlas todas a la vez, por ejemplo.
  7. BarrilaMover = "I.Barril"+Moved;
  8. BarrilSpeed = BarrilaMover+"Speed";
  9. EvaluedBarrilSpeed = eval(BarrilSpeed);
  10. // Aplicar rozamiento:
  11. if (EvaluedBarrilSpeed > 0) {
  12. EvaluedBarrilSpeed = EvaluedBarrilSpeed/1.0025;
  13. if (EvaluedBarrilSpeed < 0.05) {
  14. EvaluedBarrilSpeed = 0;
  15. }
  16. set(BarrilSpeed, EvaluedBarrilSpeed);
  17. }
  18. setProperty (BarrilaMover, _x, getProperty(BarrilaMover, _x)+EvaluedBarrilSpeed);
  19. // Resumen:
  20. Res = BarrilaMover+".Part";
  21. // El barril no se gira sino que se gira una parte suya, porque como no es redondo no se ve bien cuando se gira. Lo copié de un juego y lo quiero así a pesar de sus defectos.
  22. setProperty (Res, _rotation, getProperty(Res, _rotation)+EvaluedBarrilSpeed*2);
  23. // Si tocan al personaje y él se está moviendo:
  24. if (I.Player.hitTest(eval(BarrilaMover)) == true && I.Player.Action == "Walking") {
  25. // Game over:
  26. gotoAndStop (3);
  27. break;
  28. } else {
  29. // Ver si tocó al barril anterior, que está delante:
  30. BarrilAnterior = "I.Barril"+(Moved-1);
  31. if (eval(BarrilaMover).hitTest(eval(BarrilAnterior)) == true) {
  32. // Pasarle la velocidad:
  33. set(BarrilAnterior+"Speed", eval(BarrilAnterior+"Speed")+EvaluedBarrilSpeed);
  34. // Quedar sin velocidad:
  35. set(BarrilSpeed, 0);
  36. }
  37. }
  38. } while (Moved<Barriles);
  39. }

Si hay algo del código que no entiendan pueden preguntar.


« Última modificación: 19 Noviembre 2024, 16:33 pm por Tachikomaia » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Juego de simulacion
Juegos y Consolas
gamer12 1 2,711 Último mensaje 6 Noviembre 2010, 18:57 pm
por Castiblanco
Simulación con Pspice
Electrónica
Constantinoplero 8 7,435 Último mensaje 11 Marzo 2013, 14:58 pm
por Constantinoplero
[Aporte] Temporizadores con cuenta atrás desde una Fecha [PHP]
PHP
z3nth10n 0 2,535 Último mensaje 16 Agosto 2013, 13:09 pm
por z3nth10n
simulacion de planta
Java
HunterLuis 1 1,664 Último mensaje 17 Marzo 2015, 18:19 pm
por Usuario Invitado
Evitar choques de carro con sensores
Foro Libre
Jose1514 3 1,543 Último mensaje 8 Noviembre 2019, 05:00 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines