创建一个obj_player 对象,添加create事件,添加下面的代码:
hp=10; spd=5;
添加移动代码,只要按下方向键,就会往左或往右。添加事件key down-left,代码如下
if(x>0+sprite_width/2) { x-=spd; }
添加事件key down-right,代码如下
if(x<room_width-sprite_width/2) { x+=spd; }
把这个对象,放到房间里。
下面是敌人的代码,创建一个obj_enemy_red 对象,添加create事件,添加下面的代码:
hp=1; atk=1; spd=3; dir=1; start_x=sprite_width/2; end_x=room_width-sprite_width/2; move_down_speed=room_speed*5; alarm[0]=move_down_speed;
上面的代码用到了alarm这个闹铃,所以添加alarm0这个事件,这样指定时间5秒后,就会执行这个事件里的代码。添加如下代码到这个事件里:
y+=30; alarm[0]=move_down_speed;
这个表示,5秒后,敌人就往下跳一行。
敌人可是会左右自动移动,并往下跳。继续添加step事件,添加如下代码:
if(x<=start_x or x>=end_x) { dir*=-1; } x+=spd*dir;
到这里为止,先测试看看,按F5,运行游戏。不要忘了,把obj_enemy_red放到房间里,对应的敌人贴图也要加上的。效果如下:
射击系统之子弹功能
射击功能实现的前提是,我方和敌方都要有攻击力atk,创建一个子弹对象,obj_bullet_player,用于我方的武器。添加create事件,添加如下代码:
atk=1; spd=10;
增加collision事件,当子弹碰到外星飞船时触发下面的代码,选择obj_enemy_red。
添加如下代码:
other.hp-=atk; instance_destroy(id,true);
other是一个关键字,意思是子弹碰撞到的那个对象,这里指外星飞船。碰撞后,对方HP-1,然后,子弹对象消失,并触发destroy 事件。
我们在destroy事件里,添加一个粒子效果,代码如下
effect_create_above(ef_firework, x, y, 0.1, c_yellow);
系统自带的粒子效果,可以满足我们的游戏要求。
射击系统之玩家控制
修改我方飞船的create事件,修改后如下
hp=10; spd=5; atk=1; can_shoot=true; shoot_delay=room_speed*2;
添加一个子弹发射的按钮,空格键,只要按下就射出一颗子弹。在Key down-Space事件里,添加如下代码:
if(can_shoot) { can_shoot=false; var bullet=instance_create_layer(x,y,"Instances",obj_bullent_player); bullet.atk=atk; bullet.direction=point_direction(x,y,x,y-1); bullet.speed=bullet.spd; alarm[0]=shoot_delay; }
上面的代码了用到了闹铃,添加alarm0事件,增加如下代码:
can_shoot=true;
这样,玩家每发射一颗子弹,要过2秒后,才能再次发射。
按F5,我们测试一下。
测试后,我们发现,虽然,敌人被打中了,但是,还是活着,没有死掉。那么,这里就要增加一个敌人消失的代码 ,在obj_enemy_red对象的step事件里,最下面添加如下代码:
if(hp<=0) { instance_destroy(id,true); }
还要添加Destroy事件,增加如下的粒子效果
effect_create_above(ef_explosion,x,y,1,c_dkgray);
再次测试一下。
这样,我方就可以对敌人大开杀戒了。但是,敌人还不能进行还击。所以后面我们要继续增加一些功用。
暂无关于此日志的评论。