GameMaker Studio 2

创建于:2017-04-19

创建人: dougen

192 信息 1091 成员
游戏开发工具 GameMaker Studio 2 的讨论小组

RPG_Basic(27): 发射炮弹Projectiles

Linpean 2017-10-19

Youtube视频地址:HeartBeast


实现效果如下:

Image title

创建一个新对象obj_projectile,它和obj_damage类似。在create事件中,初始化

creator = noone;

knockback = 10;

phy_bullet = true;


实际上游戏引擎上的物体移动不是现实生活中连续运动的,而是闪烁移动的,从某个点接着闪烁到某个点,所以有时候会在游戏引擎内看到如果运动的速度太快,会导致物体穿过一面墙的错误。

这里会用到phy_bullet变量来设置为true.这个变量能够帮助我们穿墙的问题,然后对该对象的物理属性进行设置,除了Density密度,其他都设置为0

然后勾选Sensor,这意味着它不会与其他物体发生实体碰撞,而仅仅只是检测到物体之间的重叠。

然后添加和obj_wall的collision事件

instance_destory()

添加和obj_lifeform_parent形式的碰撞事件(对生命体进行伤害,计算击退距离)


我们需要使炮弹击中敌人时,对敌人造成伤害,然后移除,但是这个移除并不是立刻的,因为我们想要在击中的时刻也对附近的敌人造成伤害,所以我们并不打算在碰撞检测到的事件中立刻将敌人删除,而是在下一帧中移除,所以这里引入了一个alarm[0]变量,并创建alarm[0]事件。在该事件中来移除实例对象。


这样它就会击中多个对象。


设置obj_projectile的经理为黑色的圆形spr_damage,并且确保碰撞遮罩形状选取为circle



obj_projectile已经完成了,所以接下来是怎么在游戏中创建该实例,首先,在输入检测脚本scr_get_input中,增加spell_key来控制发射炮弹



炮弹的发射是角色来触发的,所以在角色的行动状态scr_move_state脚本,在attack_key检测后面,增加发射炮弹的spell_key的检测。以20的速度发射,然后分解到x和y方向上的速度,然后使用with语句,对炮弹实例施加冲击力。



到此,发射炮弹的即完成了。

近期喜欢的会员

 

加入 indienova

  • 建立个人/工作室档案
  • 建立开发中的游戏档案
  • 关注个人/工作室动态
  • 寻找合作伙伴共同开发
  • 寻求线上发行
  • 更多服务……
登录/注册