如何用GMS2做微信飞机大战(2)

in wherein •  2 months ago  (edited)

如何用GMS2做微信飞机大战游戏(2)

Player已经有了,现在我们是时候添加一个敌人了。
相同的方法添加一个敌人的物体,或者你会发现,飞机大战里的敌人小飞机只会一直往下冲,那么,我们只需要把子弹里的代码复制到敌人里就可以了,只是把方向改为往下就可以了。
【创建】事件代码:

direction=270;//角度为下
speed=2; //速度为2,因为子弹的速度为4,所以飞机的速度比子弹慢一点比较好

【触碰边界】事件代码:

instance_create_depth(x,y,1,obj_boom);//生成一个爆炸动画
instance_destroy()//****接触就消灭自己

以上代码都跟子弹一样,但它是敌人,我们肯定要消灭它对吧,所以我们再加一个
2.png
【碰撞】事件:

instance_create_depth(x,y,1,obj_boom);//生成一个爆炸动画
instance_destroy()//****接触就消灭自己

其实代码跟触碰边界事件是一样的,原理就是碰到Player的子弹时,播放一个爆炸动画并删除自己。

那么你会不会觉得这样非常无聊,根本就是跟前一篇没多大区别嘛,好的那我就更改一下敌人的移动轨迹吧。
【创建】事件代码改为:

randomize();//重置随机数
direction=240+irandom(60);//角度240+随机(0-60)
speed=2; //速度为4

因为GMS2默认每次的随机数都会相同,所以开始前先重置一下随机数,避免每次都出现相同的角度

【触碰边界】事件代码改为:

direction =direction*2;//角度乘以2

让触碰时角度进行反射
3.png
再加一个【离开房间】事件:

instance_destroy()//****接触就消灭自己

虽然碰撞后角度会反射,但有时可能会移出房间,那我们就将这些逃出去的小飞机删除掉。

好啦,是时候给它加个子弹啦,方法跟第一篇里一样,先添加一个敌人的子弹物体,在用和Player一样的方法添加,步骤我就不说了,忘了的话就回去看第一篇吧。
4.png

但你还需要在子弹里添加一个【碰撞】事件

instance_create_depth(x,y,1,obj_boom);//生成一个爆炸动画
instance_destroy()//****接触就消灭自己

让子弹碰撞之后消失,所以这一步在敌我的子弹里都要添加。

那么敌人的子弹也有了,那就是去Player那里添加一个与敌人子弹的【碰撞】事件:

game_restart();//游戏重开

以上代码意思就是,碰到敌人的子弹就重新开始游戏。当然,如果你想给Player,添加HP等数值的话,我们就得先在【创建】事件里加一个HP的变量:

HP=5;//血量=5

【碰撞】事件改为:

HP-=1;
if HP<=0 game_restart();//游戏重开

每与敌人子弹碰撞一次就减1HP,如果HP小于等于0,重启游戏。

再来就是讲一下如何让敌人出现,我们首先新建一个物体,名字随便,不过我一般喜欢把它改为SYSTEM,游戏的核心。
在这个物体里【创建】代码里:

timer=0;

【步】

if timer =0  //如果时间等于0
{
  instance_create_depth(irandom(768),30,1,obj_diren); //在自身X轴随机和Y轴=30,深度1的位置,生成一个敌人
  timer=100; //将时间变成100,也就是每100帧出现一个敌人
}

if timer>0 timer-=1; //如果时间大于0,时间每帧减1。

是不是觉得这个代码很眼熟?对,其实跟生成子弹的代码是一样的,只是我在X,Y轴那里做了一点改变,Y轴固定在30的位置,也就是上面。X轴随机。
5.png
好了,今天就写到这里吧,有兴趣的朋友记得关注我并给一个大赞,谢谢~

来自于 [WhereIn Android] (http://www.wherein.io)

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!