Comunidad de diseño web y desarrollo en internet online

ayuda razonamiento matematico

Citar            
MensajeEscrito el 15 Oct 2008 03:40 pm
hola espero que esten bien

Estoy programando un juego de disparos en 2d en AS2, resulta, que quiero hacer que, cuanto mas cerca pega el disparo del centro de la cabeza de la victima, mas vida le quita.

la cabeza del personaje al que se le dispara tiene el punto de registro en el centro de la cabeza así que, lo prepare para que, cuanto mas cerca del centro de la cabeza pega la bala, devuelve un numero mas pequeño de la coordenada (por que esta mas cerca del punto de registro del mc de la cabeza).
Hasta ahí todo perfecto, ahora mi problema surge a la hora de traducir eso al daño que se le hace al personaje, necesito un razonamiento matemático para eso, osea resumiendo necesito una formula al que le damos un numero y cuanto mas pequeño es el mismo, un valor mas grande nos devuelve ej:
si el valor que le damos es 0 nos devuelve 100 (por ejemplo)
si el valor que le damos es 0.5 nos devuelve 99.5 (ejemplo)
si el valor que le damos es 50 nos devuelve 6
si el valor que le damos es 70 nos devuelve 0
si el valor que le damos es 99999 nos devuelve -300000 (son ejemplos)

Se que no es tan complicado pero creanme, mi cerebro no es compatible con este tipo de razonamientos, alguien me ayuda?
un saludo gente

Por fermmm

Claber

122 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Oct 2008 05:07 pm
con una regla de tres, cuales son tus valores tope?

si valor=0, entonces 100 (maximo)
valor es el que estara cambiando...

cual es tu valor minimo? estas usando negativos? (-30000)

sacando un porcentaje de 0 a 100 del valor (segun la cercania del impacto), entonces lo conviertes al rango que tienes de puntos

:roll: ....seria una opcion

Por comicSans

Claber

151 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Oct 2008 06:09 pm
gracias por tu respuesta comic sans, pero necesitaria algo mas concreto, los valores maximo minimo yo despues los modifico, lo que necesito es la formula. Pero bueno para poner algo... el valor que se le da a la formula es entre 0 y 25 y nos tiene que devolver un valor entre 0 y 100, no necesito que salgan numeros negativos.

osea:
valor A ----- entre 0 y 25
valor B ----- entre 0 y 100

si A = 0 entonces B = 100
si A = 25 entonces B = 0

esos son los extremos, pero si a = 12 entonces B = ?????wtf

Necesitaria si alguien puede pasarme la formula o el razonamiento para desvelar la incognita un saludo y gracias por la respuesta.

Por fermmm

Claber

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Oct 2008 06:59 pm
resuelto:

B = margen_B / (0 - margen_A) * (A - margen_A)

Por fermmm

Claber

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Oct 2008 07:07 pm
Mmmm.... obteniendo la diferencia del valor total, todo convertido en porcentajes, quizas luego lo convierta a otros

... en valor A tu maximo es 25 (tu 100%)
p.e. valor_A= 7 formula_A = (7*100)/25 ...esto es igual a 28
... en B el maximo es 100 (se puede tomar como escala de porcentaje100%)
formula_B = 100 - formula_A ...esto es 100-28 = 72

entonces si A = 7 entocnes B = 72
si A = 0 [ 100-(A*100/25) ] entonces B = 100
si A = 12 [ 100-(A*100/25) ] entonces B = 52
si A = 17.5 [ 100-(A*100/25) ] entonces B = 30
si A = 23.5 [ 100-(A*100/25) ] entonces B = 6
si A = 24.75 [ 100-(A*100/25) ] entonces B = 1

Por comicSans

Claber

151 de clabLevel



 

msie7
Citar            
MensajeEscrito el 16 Oct 2008 11:11 am
gracias igual pero fíjate que ya lo había resuelto con la formula que postié antes.
var margen_B = 100
var margen_A = 25

var A = 12.5 //La mitad de los 25, osea que B tiene que dar 50 y asi lo comprobamos facilmente

B = margen_B / (- margen_A) * (A - margen_A)

trace(B) //Devuelve 50 =D

// Osea que si le damos el disparo a medio camino entre el borde de la cabeza y el centro le quitamos la mitad de la vida al personaje.
La formula me la hizo sin complicarse un amigo ingeniero, no usa ni porcentaje ni nada entonces es tan flexible que se pueden meter todos los decimales que quieras y eso hace al juego mas domináble para los jugadores experimentados, es una forma de funcionar muy importante para que un juego sea bueno, a los que hacen juegos les va a servir.

Por fermmm

Claber

122 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.