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.

Temas - JackGA17

1
Preguntas y respuestas / Problema con colisiones
Enero 21, 2019, 09:40:30 PM
Hola, verán hace un tiempo pedí ayuda para hacer que mi personaje se moviera con un código especifico, ahora viene algo parecido
//sprites
sprite[0] = argument0; //Derecha
sprite[1] = argument1; //Arriba-Derecha
sprite[2] = argument2; //Arriba
sprite[3] = argument3; //Arriba-Izquierda
sprite[4] = argument4; //Izquierda
sprite[5] = argument5; //Abajo-Izquierda
sprite[6] = argument6; //Abajo
sprite[7] = argument7; //Abajo-Derecha

//Acciones
var up = keyboard_check(vk_up);
var down = keyboard_check(vk_down);
var left = keyboard_check(vk_left);
var right = keyboard_check(vk_right);

//Lados
var Hor = right - left;
var Ver = down  - up;

//Angulo
var angle = point_direction(0, 0, Hor, Ver);

//¿Está activo?
if global.player = 'enabled'{
    //Cambio de animacion y movimeinto
    if abs(Hor) or abs(Ver) {
        image_speed = 0.25;
        sprite_index = sprite[ (angle/ 45) % 8 ];
        x += dcos(angle)*4;
        y -= dsin(angle)*4;
    }else{
        image_speed = 0;
        image_index = 0;
    }
}

Todo ese código está dentro de un script para usar más de un personaje (uno a la vez) sin usar más objetos, mi problema ahora es que he estado intentando combinaciones para las colisiones y nada me funciona, cuando uno funcionó resultó que el personaje se pilla desde arriba de donde colisiona.
Los pongo más en situación, he hecho pruebas para hacer diálogos, pero ahora mi problema es que el personaje debe detenerse al estar cerca de un NPC o de algún objeto con el que va a interactuar. Pero sigue atravesándolo y en la ultima prueba que hice (que después borré el código) se trababa al colisionar desde arriba.

¿Alguien puede ayudarme? Gracias de antemano.
2
Verán mi problema es este: Tengo este código de movimiento para movimientos fluidos de forma vertical, horizontal y diagonal

//Movimiento
Up = keyboard_check(vk_up);
Down = keyboard_check(vk_down);
Left = keyboard_check(vk_left);
Right = keyboard_check(vk_right);

Total_lados = Up + Down + Left + Right;

if (Total_lados > 0 && Up + Down != 2 && Left + Right != 2) {
    Angulo = degtorad((Up*(90) + Left*(180) + Down*(270) + Right*(360)*Down)/Total_lados);
    x += cos(Angulo)*4;
    y -= sin(Angulo)*4;
}


pero no sé como manipular la animación de movimiento del personaje.

Gracias de ante mano para aquellos que me puedan ayudar.