新人求助,各位走过路过的都来看下,给帮个忙指点下
gamemaker吧
全部回复
仅看楼主
level 3
wghwyl 楼主
我新学GM,在做一个练习中需要做一个双击跑动的指令,然后我在站立obj中添加了如下代码
先给站立obj添加一个creat 然后是一个alarm0, 然后添加step事件
大体思路是,添加一个时钟,然后判断如果在30左右的事件内按了D键两次,而且满足D键没有松开的条件下,替换人物动画有跑动的动画,然后添加速度等等其他的
我在step事件中添加了如下代码片段
if(keyboard_check(ord('D'))&& jump =0)
{
alarm=30
var times
times=0
times=times+1
},然后在时钟里面添加了如下代码
if(times>=2)&& keyboard_check_pressed(ord('D'))=true
{
sprite_index=spr_pao
}
else sprite_index=spr_zhanli
可是运行的时候总是提示自定义的变量times未知
改了好多次,都不行,求大神指点下
2017年01月13日 11点01分 1
level 10
嗯 看出点问题 哈哈
2017年01月13日 13点01分 3
level 11
特别大的问题啊。
alarm=30 是什么鬼…
而且逻辑上写得也有问题
2017年01月14日 05点01分 5
level 11
我觉得你应该设置个变量来计算他按了那个按键之后过了多少步。
那就是times没错吧?但是,你写错了。
你不应该这样写的,这样的话,无论怎么样,你第一次按的时候他是走路的。
第二次按的时候他是跑步的,但以后按的多少下都是跑步,不会再走了。
所以你应该这么写。
create事件
runtimer=0
step事件
runtimer+=(runtimer+1<=room_speed)
if keyboard_check(移动按键){
if runtimer <=room_speed/2 {//如果按键间隔在0.5秒内
移动速度1移动,精灵改变为跑步
}else{
移动速度2,精灵改变为走路
}
runtimer=0 //因为我们已经按下了移动键,所以这个要重新计算,归零
}else{//如果没有按下移动按键
改变精灵为站立精灵
}
2017年01月14日 05点01分 7
这样写你明白了吗,甚至连alarm也不需要。
2017年01月14日 05点01分
level 3
wghwyl 楼主
谢谢各位,麻烦你们了,我是新手,还在摸索中呵呵
2017年01月14日 12点01分 9
level 11
不谢,我好奇的是你做的什么游戏。
2017年01月14日 12点01分 10
呵呵,是一个2D过关游戏,还有个问题要问你啊
2017年01月14日 13点01分
level 3
wghwyl 楼主
呵呵,是一个2D过关游戏,跳跃方面遇到一个问题,因为主角可以上下移动的,所以落地点不可能是固定的,我的思路是先得到主角未跳跃时候的Y坐标,然后落地判断的时候让Y不能大于先前得到的Y坐标,可是我不知道怎么获取未跳跃时候的坐标啊?如果用变量的话,主角跳跃的时候Y坐标又变了,变量的值也会跟着变,怎么解决这个问题呢??
2017年01月14日 13点01分 11
level 11
你这思路的话,不就只能越跳越高了吗?
你弄的那个记录变量,只在玩家跳起来的时候才记录数值
就比如
if 按下跳跃键&&不在跳跃状态{
记录变量=y值
进入跳跃状态
}
这样不就行了吗?这样就会只记一次了。
2017年01月14日 13点01分 12
level 11
2017年01月14日 13点01分 13
能解释下runtimer+=(runtimer+1<=room_speed)这句的意思么??
2017年01月14日 14点01分
@wghwyl 当 runtimer+1小于房间每秒步数(也就是一秒的时间)的时候,runtimer就会+1,即他只会计时记到一秒的步数,往后就不会再记了,当然你也可以直接写runtimer+=1,只是数字会变得很大我不喜欢而已。
2017年01月14日 15点01分
level 3
wghwyl 楼主
弱弱问一句,如果一个精灵的图片是多副图,如果我想在按下某个按键的时候指定某副图显示,用什么语句呢??
比如我想在按下A的时候显示精灵 obj_1的第三幅图片
2017年01月17日 08点01分 14
1