发个精简的完美解决8方向自由移动的代码
gamemaker吧
全部回复
仅看楼主
level 8
anheimfb 楼主
随便怎么按都是你想要的方向,只要键盘不冲突
create:
vy=0
vx=0
step:
hspeed=0
vspeed=0
//////////////////////////////////////////////////////up down
if keyboard_check(vk_up)&&!keyboard_check(vk_down)
{vspeed=-v;vy=v}
if keyboard_check(vk_down)&&!keyboard_check(vk_up)
{vspeed=v;vy=-v}
if keyboard_check(vk_up)&&keyboard_check(vk_down)
{vspeed=vy}
//////////////////////////////////////////////////////left right
if keyboard_check(vk_left)&&!keyboard_check(vk_right)
{hspeed=-v;vx=v;image_xscale=-1}
if keyboard_check(vk_right)&&!keyboard_check(vk_left)
{hspeed=v;vx=-v;image_xscale=1}
if keyboard_check(vk_right)&&keyboard_check(vk_left)
{hspeed=vx;image_xscale=vx/v}
2014年10月13日 03点10分 1
level 8
anheimfb 楼主
不知道别人是怎么解决的,我自己琢磨了好久想出来的
2014年10月13日 03点10分 2
忘记把v=4放在 create 了
2014年10月13日 03点10分
level 11
不错,加油[NORTH WEST ARROW](^ω^)[NORTH EAST ARROW]
2014年10月13日 03点10分 3
[正Music]
2014年10月13日 06点10分
level 10
顶一个,加油[哈哈]
2014年10月13日 03点10分 4
[正Music]
2014年10月13日 06点10分
吧务
level 13
已经是STEP事件的话……操作speed和操作x,y没啥区别了吧。
感觉代码略臃肿……错觉么
2014年10月13日 11点10分 5
吧务
level 13
八方向移动+斜方向不加速+SHIFT半速代码:
Create:
sp=4; //此速度可定义
Step:
var dirr;
var spdd;
dirr=5;
spdd=sp;
if(keyboard_check(vk_shift)){spdd=spdd/2;}
if(keyboard_check(vk_up)){dirr=dirr-3;}
if(keyboard_check(vk_down)){dirr=dirr
+3
;}
if(keyboard_check(vk_left)){dirr=dirr-1;}
if(keyboard_check(vk_right)){dirr=dirr+1;}
switch(dirr)
{
case 1:x=x-0.7*spdd;y=y-0.7*spdd;break;
case 2:y=y-spdd;break;
case 3:x=x+0.7*spdd;y=y-0.7*spdd;break;
case 4:x=x-spdd;break;
case 6:x=x+spdd;break;
case 7:x=x-0.7*spdd;y=y+0.7*spdd;break;
case 8:y=y+spdd;break;
case 9:x=x+0.7*spdd;y=y+0.7*spdd;break;
}
2014年10月13日 11点10分 6
吧务
level 13
看样子LZ是想设计出“同时按下上下或同时按下左右时向原来的相反方向运动(就是按下右不抬起的时候按下左会向左走)……反正东方系列的操作不是这样的。如果同时按下判定为停止的话……
LZ代码里同时按下的判定、VX、VY以及围绕这两个变量的计算貌似都没啥用了呢。
2014年10月13日 12点10分 7
1