:-[ sigo con mis problemas ???
Alguien sabe como puedo hacer una colisión perfecta en un cenital pero con movimiento con el mouse?
El código que utilizo para el movimiento es este:
if distance_to_point(mouse_x,mouse_y)>=35
{if (mouse_check_button(mb_left))
{acc=1;
if (x != mouse_x) && (y != mouse_y)
{ move_towards_point(mouse_x,mouse_y,5);
};
};
};
if (mouse_check_button_released(mb_left)) || (distance_to_point(mouse_x,mouse_y)<=0.1)
{acc=0;
speed=0;
};
PD: probé el código de Twister (http://www.comunidadgm.org/index.php?topic=10823.msg77462#msg77462) que aparece en los resultados de búsqueda pero no eh sabido implementarlo para este tipo de movimiento :'(
EDIT: Agregué el código que uso para el movimiento
Para empezar tu no eras el que preguntaba por el movimiento sin diagonales?, intentaré hacer el código para que funcione SIN diagonales y así responder a la otra pregunta, si lo quieres de otro modo avisas.
[gml]
if distance_to_point(mouse_x,mouse_y)>=35
{if (mouse_check_button(mb_left))
{acc=1;
if (x != mouse_x)
{
var d;
d=mouse_x-x;
//reemplaza lo 5 por la velocidad
if d<=5{
x+=sign(d)*5;
}else{
x=mouse_x;
}
repeat(5){
if !place_free(x, y) break;
x-=sign(d);
}
}else
if y!=mouse_y{
var d;
d=mouse_y-y;
//reemplaza lo 5 por la velocidad
if d<=5{
y+=sign(d)*5;
}else{
y=mouse_y;
}
repeat(5){
if place_free(x, y) break;
y-=sign(d);
}
}
};
};
if (mouse_check_button_released(mb_left)) || (distance_to_point(mouse_x,mouse_y)<=0.1)
{acc=0;
speed=0;
};
[/gml]
Y eso es todo
primero que nada gracias por responder :DD. si soy haha xD y no ah funcionado): el jugador ahora se teletransporta hasta donde esta el mouse y solo en Y Positivo, en negativo no se mueve y en el eje X tampoco se mueve.
Uh, perdón, así debería de funcionar.
[gml]
if (mouse_check_button(mb_left))
{
if (x != mouse_x)
{
var d;
d=mouse_x-x;
if abs(d)>5{
x+=sign(d)*5;
}else{
x=mouse_x;
}
repeat(5){
if place_free(x, y) break;
x-=sign(d);
}
}
else if (y != mouse_y){
var d;
d=mouse_y-y;
if abs(d)>5{
y+=sign(d)*5;
}else{
y=mouse_y;
}
repeat(5){
if place_free(x, y) break;
y-=sign(d);
}
}
};
[/gml]
:o es perfecto(: pero al darle prioridad al eje Y se estacan contra las paredes si no le permiten moverse en ese eje xD supongo q estoy pidiendo de mas(:
Nah, es error mio no había pensado en eso.
Cita de: brunoxzx en Marzo 06, 2013, 04:35:16 AM
Uh, perdón, así debería de funcionar.
[gml]
if (mouse_check_button(mb_left))
{
var a;
a=true;
if (x != mouse_x)
{
var d;
a=false;
d=mouse_x-x;
if abs(d)>5{
x+=sign(d)*5;
}else{
x=mouse_x;
}
repeat(5){
if place_free(x, y) break;
x-=sign(d);
a=true;
}
}
if ( (y != mouse_y) && a ){
var d;
d=mouse_y-y;
if abs(d)>5{
y+=sign(d)*5;
}else{
y=mouse_y;
}
repeat(5){
if place_free(x, y) break;
y-=sign(d);
}
}
};
[/gml]
Supongo que así debería de solucionarse :-[.