necesito ayuda!!

Publicado por roy_focker, Octubre 11, 2021, 03:28:58 AM

Tema anterior - Siguiente tema

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

roy_focker

Hola, queria pedir su ayuda ya que me trabe en una parte, tengo un personaje principal que cuando presiona la tecla E agarra un arma, hasta ahi todo bien logre que dispare y todo pero tengo el inconveniente de que el arma se mueve y no mantiene la posicion que le di por que no puede seguir a la misma velocidad al personaje principal, por mas que le ponga la velocidad 100mil veces superior vuelve a su posicion cuando freno, la idea es que se mantenga siempre en la misma posicion, bueno eso es todo al que me de una mano con esto le estare agradecido





if object_exists(obj_player){
if activar = true

{


if balas >= 1{
if mouse_check_button(mb_left)
                                                  {
                                                  alarm[0]=1.49;
                                                  }   
}
if balas =0{
}
                                                 
                                             
                                                 
                                                  friction= false;
x=obj_alma.x;
y=obj_alma.y;
speed=100000000000;                                                 

}


if balas =0{
}

else {speed = 0;}




(el obj_alma no es el arma puse asi para que cuando el personaje principal muera los enemigos esten mirando ese objeto, el obj_alma si esta pegado al obj_player )

Alemar5

Que onda amigo! Hace tiempo me pasó un problema similar, la solución que le encontré fue poner los códigos de las coordenadas x, y en un end step, eso hizo más preciso el movimiento, intenta con eso y me cuentas, un saludo! :3

roy_focker

Hola, ahi probe eso pero aunque lo haga me sale el mismo error que en step,igualmente gracias por la respuesta para asi ir descartando

Alemar5

hmm, ya veo..
mira, pienso que la variable speed esta de mas en este código, has probado no usar speed?

roy_focker

Fue lo primero que hice, solo la agregue despues pero el resultado es el mismo

AlexWood

Prueba poniendo el código en los 3 eventos steps

Jeffrey Faper

#6
a mi me pasaba algo parecido con la hitbox de mi personaje esta  lo seguía pero un poco atrasada a la posición indicada
mi solución fue re-posicionar los objetos en la carpeta objects ya que primero había creado el objetoHitbox y después al objetoJugador
cambiando el orden osea el jugador al inicio y después todo lo demás , fue como se soluciono el problema supongo que sera un bug de Game Maker
o literalmente hay que posicionar los objetos  en cierto orden 


knd144

Bueno, el código está complicado de leer  :-[ Tampoco entiendo cuál es el objetivo que quieres conseguir, pero de momento veo que según tu código el arma sólo sigue al jugador si la variable "activar" está en "true" ¿Es así?

roy_focker

Cita de: knd144 en Octubre 19, 2021, 11:25:53 PM
Bueno, el código está complicado de leer  :-[ Tampoco entiendo cuál es el objetivo que quieres conseguir, pero de momento veo que según tu código el arma sólo sigue al jugador si la variable "activar" está en "true" ¿Es así?

si esa esa linea de codigos pertenece al arma, que se activa cuando el objeto player se posiciona sobre el arma y se presiona la letra E y se activa, el problema es que tiene como un pequeño delay el arma cuando se mueve el player(no importa la velocidad que se le de al objeto arma o si no se le da una velocidad, siempre tiene ese delay para posicionarse )

roy_focker

Cita de: Jeffrey Faper en Octubre 18, 2021, 08:33:08 PM
a mi me pasaba algo parecido con la hitbox de mi personaje esta  lo seguía pero un poco atrasada a la posición indicada
mi solución fue re-posicionar los objetos en la carpeta objects ya que primero había creado el objetoHitbox y después al objetoJugador
cambiando el orden osea el jugador al inicio y después todo lo demás , fue como se soluciono el problema supongo que sera un bug de Game Maker
o literalmente hay que posicionar los objetos  en cierto orden


bueno en mi caso siempre creo el objeto player al principio y los mantengo ordenados en carpetas y el orden lo posiciona al player como prioritario, pero creo que esa posicion  debe ser de lectura al inicio no creo que de prioridad, aun asi voy a probar y despues te digo(aunque a la inversa en este caso)

roy_focker

Cita de: roy_focker en Octubre 24, 2021, 07:37:27 AM

bueno en mi caso siempre creo el objeto player al principio y los mantengo ordenados en carpetas y el orden lo posiciona al player como prioritario, pero creo que esa posicion  debe ser de lectura al inicio no creo que de prioridad, aun asi voy a probar y despues te digo(aunque a la inversa en este caso)

probe lo que dijiste(cambiando la escala de prioridades) pero el resultado es el mismo, aun asi gracias, me sirve para ir descartando distintas alternativas.

Jeffrey Faper

Cita de: roy_focker en Octubre 24, 2021, 08:36:50 AM
probe lo que dijiste(cambiando la escala de prioridades) pero el resultado es el mismo, aun asi gracias, me sirve para ir descartando distintas alternativas.

sabia que no funcionaria es que yo uso Game Maker Studio, parece que el problema esta en su codigo ya que anclar la posición de un objeto a otro es muy sencillo
a intentado poner su código de esta manera
[gml]
if object_exists(obj_player){
if activar = true
{
    x=obj_alma.x;
    y=obj_alma.y
   //Y DESPUES LO QUE SIGUE
[/gml]
otra solucion es que use items de powerUp estos contendrán el tipo de arma y munición  que el jugador obtendrá
al colisionar y presionar E  creara el arma en la posición deseada  el item de  powerUp se destruirá
de esa manera no tendrá que verificar si el arma esta activa, yo creo que esa parte del código es la causa de su problema


knd144

Es raro que haya ese delay, la verdad.

¿Y si lo intentas "al revés"? O sea, que sea en el evento del step del jugador donde se indique las coordenadas del objeto.

prácticamente puedes usar el mismo código si usas la sentencia "with":

[gml]
with(obj_arma)
{
    x = obj_alma.x; //Recuerda que dentro de la sentencia with, juegas con el scope del objeto con el que interactúas
    y = obj_alma.y;
}
[/gml]

O directamente agregas nuevo código sin usar la sentencia with

[gml]
if(instance_exists(obj_arma))
{
    obj_arma.x = x;
    obj_arma.y = y;
}
[/gml]


Yo intentaría algo así, poniéndolo en el "end_step" del jugador.  :-[ Ya dados a buscar parches...

Powered by EzPortal
SMF spam blocked by CleanTalk