Menú

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.

Menú Mostrar Mensajes

Mensajes - FernandoNavarro

#31
Cita de: masalaja en Marzo 28, 2020, 07:23:47 AM
al final consegui avanzar mucho en mi juego poniendo escaleras y nadando ni idea como lo consegui a base de ver a uno y otro mezclaba codigos y me termino saliendo ahora tengo otra duda haber si saben, quiero que cuando el personaje dispare se quede quieto y cree un movimiento, pero en vez de eso el personaje sigue caminando y dispara pero sin verse el movimiento cuando camina solo se aprecia cuando se queda quieto, les agradeceria si alguien sabe.


saludos

Hola, es menos complicado de lo que parece, necesitas que la variable que usas para mover al personaje se actualice sólo mientras no estés atacando, de esa forma el personaje se queda quieto, realiza el ataque y vuelve a moverse cuando finalice la animación.
#32
Hola, gracias a ambos. La fórmula que puse es una que había usado una vez pasada para que un objeto orbitara alrededor de otro.

Para ponerlos en contexto, estaba jugando Warcraft III y se me vino a la mente cómo hacer una torre de vigilancia. Entonces me puse a calcular ángulos en función de la posición del objeto al que la torre deba lanzar el proyectil. Hice algo así, luego lo optimizo:

Tengo tres variables que son de referencia para un triángulo.

Ax = x;
Ay = y;
Cx = objEnemy.x;
Cy = objEnemy.y;
AB = abs(Ax - Cx);
BC = abs(Ay - Cy);
Hyp = sqrt(power(AB, 2) + power(BC, 2);
Angle = arcsin(BC/Hyp);

¿Me podrían dar una ayuda con lo del ángulo? Hasta ahora va bien, pero algo me falta porque llega a 90° y comienza a bajar nuevamente el valor del ángulo, la idea sería que pueda calcular los 360°
#33
Hola buenas. Tengo una consulta, ¿cómo puedo invertir la fórmula: X = Xo + cos(ángulo) * radio para calcular el ángulo teniendo dos puntos?
#34
Hola, puedes crear un ejecutable haciendo clic en File>Create application, o presionando Ctrl + Alt + C.

Para agregar imágenes haz clic en Opciones Adicionales y luego donde dice Elegir Archivo.

Espero haber ayudado.
#35
Preguntas y respuestas / Re:Crear fuente escalable
Marzo 19, 2020, 01:17:19 AM
La fuente la tengo en sprite, por eso uso la función font_add_sprite_ext.
#36
Preguntas y respuestas / Re:Crear fuente escalable
Marzo 18, 2020, 02:15:13 PM
Gracias, ¿dónde está la opción del antialiasing?
#37
Preguntas y respuestas / Crear fuente escalable
Marzo 17, 2020, 01:04:16 PM
Hola buenas.

Tengo una duda sobre si se puede añadir una fuente con font_add_sprite_ext, y que se pueda aumentar y disminuir el tamaño sin tener que hacer la fuente en distintos tamaños.
#38
Hola, ¡Felicitaciones! Aunque te recomiendo usar nombres distintos para los recursos, es más fácil reconocerlos después. Por ejemplo, usar abreviaturas al inicio de los nombres, algo así:
spr los sprites, obj para los objetos y así con los demás, así después al ver los nombres puedes saber que tipo de recurso es (sprite, sonido, fondo, room, fuentre, timeline, etcétera).

Cita de: masalaja en Marzo 14, 2020, 06:04:24 PM
[gml]
if (place_meeting(x,y,Escalera_)){
vspeed=0
gravity=0

if (keyboard_check(vk_up)){
    vspeed = -2;
   sprite_index=Sube_Escaleras_Mov
    image_index=3
   }
   
if (keyboard_check(vk_down)){
    vspeed = 2;
    sprite_index=Sube_Escaleras_Mov
    image_index=3   
    }
    }
[/gml]

Saludos.
#39
Hola.

Primero, para el audio quizá tengas algún código de inicio de room que haga detener la música.

Y segundo lo del sprite. En el objeto del objeto que te sigue deberías tener algún código que cambie o invierta el sprite según hacia que lado estás mirando (recomiendo crear una variable en el objeto jugador). Puedes usar image_xscale o image_yscale para invertir el sprite según tus necesidades.
#40
Preguntas y respuestas / Re:CREAR ACELERACION
Marzo 02, 2020, 03:01:48 AM
Hola nonoroman.

Hasta ahora yo me he servido de un código muy útil que ví hace un tiempo en unos tutoriales de TheMontyDrake. Es algo así:

[gml]
if (argument0 < argument1)
   return min(argument0 + argument2, argument1);
else
   return max(argument0 - argument2, argument1);
[/gml]

Le doy a la variable de velocidad el valor que devuelva el script y al final del step le sumo el valor a la x e y depende del caso.
#41
Hola Tomás.

Te recomiednprecurrir a dos variables auxiiares, puedes llamarlas como intMoveX, intMoveY, declarándolas a cero en el evento create. Luego en el evento step te recomiendo crear variables locales para manipular las pulsaciones, al menos yo lo hago así, me resulta más práctico. Es algo así:

Create
[spoiler]
[gml]
intMoveX = 0;
intMoveY = 0;
[/gml]
[/spoiler]

Step
[spoiler]
[gml]
var keyLeft, keyRight, keyUp, keyDown;
keyLeft = -keyboard_check(vk_left);
keyRight = keyboard_check(vk_right);
keyUp = -keyboard_check(vk_up);
keyDown = keyboard_check(vk_down);

if (intMoveY == 0) intMoveX = keyLeft + keyRight;
if (intMoveX == 0) intMoveY = key+ keyDown;

//Cambio de dirección
if (intMoveX < 0)
{
    dir = "IZQUIERDA";
}

if (intMoveX > 0)
{
    dir = "DERECHA";
}

if (intMoveY < 0)
{
    dir = "ARRIBA";
}

if (intMoveY > 0)
{
    dir = "ABAJO";
}

//Movimiento
if (estado != ATACANDO)
{
    if (intMoveX != 0) && (place_free(x - vel * intMoveX, y))
    {
        x += vel * intMoveX;
        estado = CAMINANDO;
    }

    if (intMoveY != 0) && (place_free(x, y - vel * intMoveY))
    {
        y += vel * intMoveY;
        estado = CAMINANDO;
    }
}

if (intMoveX == 0 && intMoveY == 0) estado = "PARADO"
[/gml]
[/spoiler]
#42
Hola.

Tu problema está en que estás sumando la variable intMove.
[gml]
//Velocidad horizontal
if (intMove != 0) intVX = scrApproach(intVX, intVXMax + intMove, intTempAcc);
else intVX = scrApproach(intVX, intVXMax + intMove, intTempFric);
[/gml]
Eso produce que tu personaje se mueva a velocidad máxima sin tomar en cuenta el valor de intMove, me explico mejor:
Si por ejemplo tienes una velocidad máxima de 4, el objeto comienza a moverse a velocidad base de cuatro más el valor de intMove, que puede ser 1, 0 o -1, por lo que siempre devolverá um resultado mayor a 0, en cambio al multiplicar, invierte el signo y si no presionas ninguna tecla lo deja en cero.

Inténtalo así:
[gml]
if (intMove != 0) intVX = scrApproach(intVX, intVXMax * intMove, intTempAcc);
else intVX = scrApproach(intVX, intVXMax * intMove, intTempFric);
[/gml]

Espero te sirva, hasta luego.
#43
Cita de: T789 en Febrero 08, 2020, 05:56:30 AM
En un rpg los llamaba verficando la vspeed y el hspeed
If (vh == 0 & vv == 0) estado = parado

[quote_author=T789]
link=topic=31763.msg139091#msg139091
date=1581137790]
Pero como ya dije no es igual, no es el mismo funcionamiento y lo que buscaba es como llamar los estados
[/quote]

Hola T789.

Si entendí bien quieres ""ejecutar"" los estados. Pues para eso sólo necesitas tener en cuenta que condiciones son necesarias para cada estado, por ejemplo:

Para que el personaje se mueva necesitas presionar una tecla puedes manejarlo con usando variables que manejen hacia que lado quieres que se mueva como:

[spoiler]
[gml]
///Create
intMove = 0;
[/gml]

[gml]
///Step
var keyLeft, keyRight;
keyLeft = -keyboard_check(vk_left); || -keyboard_check(ord("A"));
keyRight = -keyboard_check(vk_right); || -keyboard_check(ord("D"));
[/gml]
[/spoiler]

Pero bueno, al grano. Decidí usar eso para explicar mejor. Como bien dijiste, al ser un juego de plataformas necesitas manejar distintos estados, como "parado" o "idle, "corriendo" o "running", etcétera. Como decía antes, sólo necesitas concentrarte en que debe suceder para usar cada estado, yo uso algo así:

[spoiler]
[gml]
if (vhspeed == 0) //Verifico si no está en el aire, puedes cambiar la condición según tu caso
{
    if (intMove == 0)
    {
        staPlayer =statePlayer.idle; //statePlayer es el nombre de mi enumerador, y staPlayer una variable que uso para llamarlo
    } //Aquí ejecuto todo lo que debería suceder en caso de no estar quieto ni en el aire
    else staPlayer = statePlayer.walk;
} //Aquí lo que pasa estando en al aire
else staPlayer = statePlayer.falling;
sprite_execute(staPlayer);
[/gml]
[/spoiler]
#44
Hola BssString.

Eso lo entiendo, y me ha sido muy útil. Pero lo que busco es saber la posición en x de la letra, por ejemplo:

"Hola mundo"

La letra "a" está 20 píxeles a la derecha de la "H".

Creo que no es posible saber tal valor.

Gracias de todos modos
#45
Hola Fabriyin.

Vengo del futuro 23 días después a preguntar, ¿lo solucionaste?
Powered by EzPortal
SMF spam blocked by CleanTalk