Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Aceleración y fricción en 2D  (Leído 530 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Clamud

en: Octubre 04, 2015, 04:14:46 am
Hola a todos.

Estaba buscando ideas para programar un movimiento suave en 2D, para un shooter cenital. El personaje alcanza grandes velocidades y, para tener un buen control, es necesario un cambio gradual de velocidad, también se pretende simular al personaje derrapando porque no puede detenerse al instante. El programa también podría simular el desplazamiento sobre hielo.

Lo que se hace comúnmente para programar ese comportamiento es dar un valor a la variable friction y después sumar una velocidad para modificar las variables speed y direction. El valor de speed se incrementa en cantidades mayores a friction para poder contrarrestar la fricción, hasta alcanzar una velocidad máxima. Lo que no me agrada de este algoritmo es que el tiempo necesario para alcanzar la velocidad máxima es mayor al tiempo necesario para detenerse por completo, busco un algoritmo que permita acelerar y frenar en tiempos iguales. Además la dirección que se indica con los controles nunca se alcanza, a menos que se inicie el movimiento desde el reposo, la dirección se aproxima mucho, pero no es exacta.

Tengo un algoritmo que ha ido evolucionando conforme lo usaba en diferentes juegos, primero en un FPS, después en un plataformero 3D, y ahora en un shooter cenital. He logrado hacer que el tiempo para acelerar sea igual al tiempo para frenar, y es posible frenar más rápido si se mueve el joystick en la dirección contraria al movimiento. Pero no me gusta demasiado, creo que aún puede mejorar. En este sistema, la velocidad se obtiene como una suma vectorial de dos componentes que he llamado "empuje" e "inercia".

Espero que puedan ayudarme. Más tarde explicaré mi algoritmo.

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Ynfiniti

Respuesta #1 en: Octubre 04, 2015, 05:22:54 am
No sé si esto te pueda servir (Es gratis): https://marketplace.yoyogames.com/assets/2395/easing-and-tweening


Desconectado Clamud

Respuesta #2 en: Octubre 04, 2015, 04:27:58 pm
Gracias Ynfiniti, creo no voy a poder usar los scripts directamente, hay que hacer muchas modificaciones, sin embargo, me dieron la idea de representar el movimiento como un sistema con amortiguamiento.