Cita de: Zela en Diciembre 03, 2014, 05:27:44 AM
Hola Betox,
Tal cual como se ve, es muy bruta la caída.
Intentemos algo simple, he notado que el salto Original es con aceleración disminuida dando el efecto que se queda en la cresta del máximo salto.
Eso pasa porque la ecuación de movimiento de proyectil es defectuosa, ¿en que? pues cuando dejas de pulsar el botón de salto el mario Bruscamente se deja de mover verticalmente (vspeed = 0) provocando la caída al instante (dando el efecto bruto). lo único que debes hacer es suavizar la detención.
Pues si dejas pulsado el botón hasta q llega al suelo, el suavizado lo hace el motor de gravedad del objeto, pero no logras lo mismo con saltos pequeños.
En tanto lo único que hay q hacer es suavizar la detención en unos cuantos step's. (pero es complicado a simple vista)
¿Cómo lo logro entonces?
Pues pensemos que al saltar mario "recibe impulso de parte del botón" como si fuese una gravedad hacia el techo hasta q le corresponda. así conseguimos que cuando se suelte el teclado mario no Deva detenerse forzosamente sino que la gravedad del mismo lo realizara (el suavizado), entonces ordenémonos:
- Primera vez q se cliquea la tecla : mario recibe un impulso brusco "vspeed = -15" (para obtener un salto mínimo en caso de pulsar la tecla en un tiempo muy corto)
- si la tecla sigue presionada : le damos el micro impulso , ¿pero COMO? aquí un trukillo, mario en aquel instante dispone de una velocidad vertical determinada (vspeed) la cual aceleraremos pero ¿como se acelera en código?, pues cuando hacemos esto "vspeed += aceleración " ya conseguimos nuestro cometido. (La aceleración es negativa ojo con eso). un punto importante si la aceleración tiene el mismo valor en magnitud negativa que la gravedad delua objeto DEVIESE moverse con velocidad constante hacia el techo, por ende, debes usar valores mayores o iguales a la gravedad del objeto (en negativo). si es mayor dara un efecto de cohete!, en caso de menor un efecto de amortiguamiento por friccion (como subir con peso adicional), hay juégale con los valores.
.- si soltamos la tecla: no hacer nada. Porque la gravedad del objeto realizara el suavizado.
Otra cosilla encontré 2 bug's:
- al comenzar el juego, para matar el monito realice lo siguiente, al momento de saltar y topar al cubo con la flor por debajo y caer sobre el monito, tanto el monito como el mario mueren.
- al jugar con los saltos y movimientos, desde la posición del cubo de abajo de la bandera saltando hacia la pila de cubos en pirámide (dejando presionado el botón de salto y el de moverse horizontal), A veces se queda pillado el mario en la pila de cubos, en algunas ocasiones insalible y otras sale.
Saludos
Gracias amigo, muy buena la explicacion... jajaja....... pero no se donde meter todo lo que me explicas. Lo del enemigo se que esta mal , ya que cuando lo piso el enemigo solo cambia de sprite, pero sigue teniendo colision con Mario, entonnces este se muere. No queria crear 2 objetos del enemigo. Uno cuando esta vivo y que cambie x otro objeto cuando sea aplastado y qye no tenga colision con Mario. Lo de quedarse trabado tambien , ya probe cambiando las colisiones de cada sprite , alinie bien cada uno para que al cambiarse las colisiones sean las mismas.. tambien hice un sprite aparte que sea de colision para todo el objeto Mario.. y no logro hacer una colsion que no se quede trabado el Mario.. te puedo pasar el editable a ver si me puedes resolver solo el tema del saltito?-- Saludos.