Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - knd144

241
Bueno, es una buena opcion la de usar funciones matem?ticas; pero igualmente puedes usar la estructura Switch para la variable global.hpmax (si vas a usar este nombre para la nueva variable de vida)
la cosa seria as?:

switch (level)
{
  case: 1
    {
       global.hpmax=100;
       break;
     }
  case: 2
     {
       global.hpmax=110;
       break;
      }
  case: 3
      {
        gloal.hpmax=120;
        break;
       }
  ...
}

seria algo asi lo que deberia estar en el step.

Y bueno, usa la opcion que te paresca m?s c?moda
242
con una funci?n y listo.
La funcion se debe amoldar a tus necesidades, as? como de lo que pretendas. Digamos que quieres que la velocidad maxima que obtendr? el objeto 1 ser? de 20, y como la speed es igual a la variable vel, entonces:
speed=vel
vel=20/(point_distance(x,y,obj_2.x,obj_2.y))

De esta manera, entre m?s lejos est?, m?s lento ir?, aun que existe el problema a que a una distancia mayor de 20 pixeles, la velocidad ser? de menos de 1.
Para eso le pondemos mejorar a que cambie velocidad cada 15 pixeles, entonces:
vel=20/(point_distance(x,y,obj_2.x,obj_2.y)/15)

de esta manera a una distancia de 150 pixeles, tendr? una velocidad de 10, a una distancia de 1 pixel tendr? una distancia muy aproximada a los 20, y a una distancia de 300 pixeles tendr? una distancia de 1, a distancias mayores de 300, tendra velocidades muy menores a 1. Podremos redondear el resultado y hasta la divisi?n, como mas te guste.
Hay otras formas de realizar la funcion, como dije anteriormente, eso ya dependeria de como lo quieras.

espero y te haya servido, saludos  ;)
243
Preguntas y respuestas / Re: romper terreno
Enero 06, 2010, 02:14:23 AM
bueno, la verdad si tienes que usar el buscador...

A mi parecer, bueno yo lo haria haciendo varias instancias peque?itas que se destruyan al colisionar con el objeto al explotar...  ???
No se si a ti te parece
244
que no el da?o se expresa en la parte "ataque +=1" ?

Si es as?, tal acci?n no est? en el c?digo al recibir el ataque especial  :)
245
Bueno, gracias por responder:

MONT: quit? el image_speed para tomar tu consejo, pero no funciona la animaci?n  :-\

omick: lo que quiero es que la imagen cambie dependiendo de la direcci?n con respecto al mouse, no que siga al raton.

Y darkkRuler, tecnicamente ese es mi c?digo, solo que despu?s lo cambi? a tal y como lo muestro al principio del post.

Como dije gracias por responder, pero me las ingeni? creando 2 objetos personaje uno mirando a la derecha y otro hacia arriba que van cambiando el uno al otro dependiendo de la direcci?n. Esto mientras encuentro alguna manera de hacer m?s sencillo. :P
246
En unas pruebas de juego, me encontr? con un problema que no entiendo por qu? ocurre y es el siguiente:
Tengo 2 sprites del personaje caminando: uno que mira a la derecha y otro a arriba, manejo los sprites correspondientes con image_xscale e image_yscale, tiene el sprite camiando a la derecha por defecto. Aqu? el problema es que se supone que puse que para cuando el mouse est? entre 45? y 135? o este entre 225? y 315? de direcci?n del personaje cambie de sprite al que camina hacia arriba, ya despu?s lo controlo con image_yscale, pero tal cambio no ocurre, o sea se mantiene siempre con el mismo sprite, lo que si ocurre es que realiza el image_yscale pero con el sprite de caminando a la derecha. Adem?s de que tiene por defecto la image_speed=0.3 pero no se realiza la animaci?n.
Aqu? les pongo los c?digos que puse en el step del personaje:
el sprite:  spr_personaje es el que mira a la derecha y el spr_personaje2 es el que mira a la izquierda.

Citarimage_speed=0.3

Citarif ((point_direction(x,y,mouse_x,mouse_y)>45 && point_direction(x,y,mouse_x,mouse_y)<135) or (point_direction(x,y,mouse_x,mouse_y)>225 && point_direction(x,y,mouse_x,mouse_y)<315))
{
  image_index=spr_personaje2
}
else
{
  image_index=spr_personaje
}

Citarif ((point_direction(x,y,mouse_x,mouse_y)>45 && point_direction(x,y,mouse_x,mouse_y)<135) or (point_direction(x,y,mouse_x,mouse_y)>225 && point_direction(x,y,mouse_x,mouse_y)<315))
{

  if (mouse_y<y)
  {
    image_yscale=1
    direction=90
  }
  if (mouse_y>y)
  {
    image_yscale=-1
    direction=270
  }
}
else
{

  if (mouse_x<x)
  {
    image_xscale=-1
    direction=180
  }

  if (mouse_x>x)
  {
    image_xscale=1
    direction=0
  }
}

Le he estado buscando el error pero no le encuentro  :-\
247
Otra forma es darle prioridad a las multiples acciones que puede realizar tu IA, eso si, debes saber las posibles circunstancias que pueden ocurrir. Una forma de hacerlo es decidir varias circunstancias y aplicarlas en profundidades de un If, por ejemplo:

if (obj_personaje.vida=100)
{
  accion...
}
else
{
  if (obj_personaje.level>3)
  {
     accion2...
  }
  else
  {
     if (obj_personaje.energia>50)
     {
         accion3...
     }
     else
     {
         accion4 por default....
     }
   }
}

o bien puedes usar un switch.... la idea en este caso es que la acci?n de la IA sea un poco m?s manipulable dependiendo las circunstancias.
248
Wadk, la funci?n move_bounce_solid(false) solo redirecciona de manera sim?trica, sin tomar en cuenta la velocidad del objeto al colisionar, y es que f?sicamente no es lo mismo la direcci?n que toma un objeto que choca a 10km/h a uno que choca a 60km/h. Ni tampoco si el objeto contra el que colisiona tiene el suficiente peso como para rechazarlo o si bien no pesa lo suficiente y es empujado... Para ello la funci?n del escript, para calcular la redirecci?n exacta (mas o menor  :-[ ) tomando en cuenta estos factores.
249
nadie tiene ni idea de como solucionarlo?  ???

o no me di a entender :-[
250
a ver, supongo que quieres decir que cuando una instancia "porder" choca contra un "enemigo" este retrocede un poco... ?Has intentado con un while?
en el evento de colision:
while (distance_to_object(obj_poder)<1)
{
 //lo que pongas para que retroceda...
}

Y supongo que de esta manera solo retrocederia una vez.  :-\
251
hola
Resulta que estoy intentando hacer un script que devuelva la direcci?n resultado de un objeto al rebotar contra otro (como un bloque, por ejemplo) considerando una variable que represente la resistencia que opone el objeto golpeado (en este caso la variable peso, aun que no refiere especificamente al peso real  :P ); la cosa es que ya tengo las cuentas hechas y el script listo, perooooo pasa que la direcci?n que toma despu?s de la colision es algo erronea si lo consideramos desde el punto de vista real.

Lo que fallan no creo que sean los calculos que los he repasado un par de veces, lo que veo es que al considerar la fuerza que ejerce el bloque hacia el objeto (en este caso un balon) se considera la direcci?n desde el centro del bloque en lugar de tomar encuenta la direcci?n desde el punto de colision con el balon, o sea que si el balon golpea a un bloque casi por la esquina izquierda por la parte superior, no se considera que el bloque ejerce una resistencia en direcci?n de 90 grados sino a un grado superior como de 140 grados, lo que nos d? un ?ngulo m?s agudo en lugar de uno obtuso como deberia ser  :'(

Para que vean el problema ustedes mismos, les pongo el programa con el script y todo.

El balob se ueve con las flechas y se puede reiniciar con la tecla R y con S se detiene

Adjunto una imagen que aclara mas mi problema, en el se ve al balon golpeando al bloque y la direcci?n que tiene (en este caso hacia abjo) se muestra con la flecha negra, y la flecha verda muestra la fuerza que ejerce el bloque con el rebote; la primera imagen muestra la direccion que ejerce el bloque desde el centro hacia el balon, y la segunda imagen muestra el como deberia ser la direccion de la fuerza  :'(
252
pues gracias bonachiu por quitarme la duda y darme casi resuelto el problema  :-[
No habia pensado eso de vspeed y hspeed, voy a ver si lo puedo aplicar sin ningun problema.

Tambien gracias alfonsos y soujiro. Las funciones de markus no me acordaba de ellas  XD pero vaya que me van a quitar de lios.

P.D.: Ya correji lo del iconito, no me acorde de cambiarlo

SALUDOS
253
Estoy haciendo un trabajillo con el Game Maker y necesito utilizar las funciones de seno, coseno y tangente pero en el manual me encontr? con que devuelve (en caso del seno) el seno de x pero que x en radianes  ???
La verdad no entiendo a que se refiere con eso, yo lo que quiero es realizar calculos vectoriales, o sea tendiendo un vector, sacarle los componentes horizontales y verticales, y para eso necesito el seno y el coseno pero no entiendo eso de los radianes. Encontr? despues una funcion que me convierte los radianes en grados y los grados en radianes pero no se como me pueden ayudar.
Adem?s de que tengo otro prop?sito para la tangente que es sacar la inversa a la tangente, o sea tan-1 y de eso menos viene explicado en el manual  :'(
Toda via hay cosas que no entiendo de como funciona bien el GM por eso pido esta ayuda.

Desde ya gracias  ;)
254
Preguntas y respuestas / Re: colision de un coche
Diciembre 08, 2009, 03:58:07 PM
xuturk, por ahora no te fijes en el c?digo; no se que me fum? ayer que comet? un error grueso  :-[ .

el COS point_colision.... es sacar el coseno de la funcion point_colision(....) . Siento nop haberme explicado.

Pero como dije, por ahora no le mires bien que veo en primera 1 error adem?s de que no es muy espec?fico, y bueno cuando haga una funci?n coherente te la envio por MP que no creo me tarde mas de 1 d?a en resolverlo (lo que pasa es q por ahora no tengo 1 d?a de tiempo  XD ), espero y no te hurga mucho.

SALUDOS  ;)
255
Preguntas y respuestas / Re: colision de un coche
Diciembre 07, 2009, 08:57:38 PM
Bueno, no me he podido descargar el ejemplo por que no tengo el GM a la mano, pero te puedo ayudar un poco con la din?mica de direccion del auto al colisionar, creo  :-[ :

a ver...

primero necesitamos definir la resistencia del objeto a colisionar (que va a ser la fuerza que este opondr?).
Suponemos que el objeto edificio tiene una resistencia de 30. entonces en el objeto edificio definimos la variable en create:

Citarf=30 //pongo f por que para mi es mas facil recordar la f que resistencia  XD

ahora en el evento colisi?n del auto con el edificio:

Citar
direction= ((obj_edificio.f Cospoint_direction(obj_edificio.x,obj_edificio.y,x,y)) + (-1(obj_edificio.fSenpoint_direction(obj_edificio.x,obj_edificio.y,x,y)) + (speedCospoint_direction(obj_edificio.x,obj_edificio.y,x,y)) ) + (speedsenpoint_direction(obj_edificio.x,obj_edificio.y,x,y)) ))


Te explico el funcionamiento de este chorizote de c?digo:
simple, saca el vector final del auto al chocar (considera que el vector representa la direcci?n) considerando la velocidad y direcci?n del auto con la direcci?n (tomando en cuenta el punto 0 el edificio . Aun que esto es en teor?a por que jam?s lo habia intentado hacer, dejame checar mis apuntes de f?sica y ver? si le puedo agregar o modificar algo. Igual me parece muy ambiguo y tendr? que modificarlo, pero pruebalo si quieres y me dices que problemas tiene  :-[

Aun que creo (mas no estoy muy seguro) de que la parte: point_direction(obj_edificio.x,obj_edificio.y,x,y) podria darte problemas al haber varios objetos obj_edificios, as? que intentalo con un other.x o algo as?.

;)