关于墙壁碰撞移动问题(gm8)
gamemaker吧
全部回复
仅看楼主
level 2
请问如何做到类似贴模走的效果,与ut那种移动方式类似的,就算贴着墙壁也可以走
例如,在上方有一面墙,此时我按下↑键和→键,角色向上走被墙壁挡住后继续向右走(仍然是按着↑和→键)
现在我这问题就是操作人物走到墙边后如果不松开向墙的按键就会像被黏住一样不能走
2022年07月12日 05点07分 1
level 9
嗯。。不晓得使用的那种移动思路,姑且猜一下用的dnd,这样的话问题应该就是走到墙里面去了,修改下碰撞盒试试看,或者在按下键盘移动前进行一个碰撞检测。
2022年07月12日 12点07分 2
level 11
将移动拆分为两个方向,不要一次性走完
2022年07月12日 15点07分 3
level 5
var r,l,u,d,h,v,wall;//h代表horizontal,v代表vertical
//***八方朝向
r=keyboard_check(vk_right);
l=keyboard_check(vk_left);
d=keyboard_check(vk_down);
u=keyboard_check(vk_up);
switch(r+l*2+d*4+u*8){
case 1:h=1;v=0;break;
case 2:h=-1;v=0;break;
case 4:h=0;v=1;break;
case 8:h=0;v=-1;break;
case 5:h=1;v=1;break;
case 9:h=1;v=-1;break;
case 6:h=-1;v=1;break;
case 10:h=-1;v=-1;break;
default:h=0;v=0;
}
if(isFrozen){
h=0;
v=0;
}
//***碰到障碍物后停止(可贴近)
wall=instance_place(x+h*spd,y,obj_wall);
if(wall != noone){
x=wall.x-h*32;
h=0;
}
wall=instance_place(x,y+v*spd,obj_wall);
if(wall != noone){
y=wall.y-v*32;
v=0;
}
wall=instance_place(x+h*spd,y+v*spd,obj_wall);
if(wall != noone){
if(h!=0 && v!=0){
h=0;
v=0;
}
}
//***移动
if(h!=0&&v!=0){
x+=h*dspd;
y+=v*dspd;
}else{
x+=h*spd;
y+=v*spd;
}
,贴墙的效果,不知道是否是你需要的
2022年10月08日 06点10分 4
1