GameMaker Studio 2—制作横版射击游戏教程-HeartBeast 短期小结2

这期视频主要讲了枪和子弹的实现。

枪的绘制

/// @description Draw the gun
var dir = point_direction(x, y, mouse_x, mouse_y);
var flipped = (mouse_x > x) * 2 -1;

//draw the player
draw_sprite_ext(s_player, 0, x, y, 1, 1, 0, image_blend, image_alpha);

//draw the gun
draw_sprite_ext(s_gun, 0, x - 4*flipped, y-sprite_height/2, 1, flipped, dir, image_blend, image_alpha);

首先我们要把枪画出来,而且要实现枪和人物随鼠标转动。

这里先将人物和鼠标连线的角度(即鼠标的方向)赋值给 dir ,然后定义一个 flipper 变量,用于检测鼠标在人物的那一边。

最后用 draw_sprite_ext 方法绘制人物和枪,注意,这里两者的顺序不可以改变,否则人物会覆盖住枪。

draw_sprite_ext 的参数依次为(绘制的精灵,绘制图像的编号,绘制位置的横坐标,绘制位置的纵坐标,横向缩放比,纵向缩放比,方向, 混合精灵的颜色,透明度)。

为了使枪的位置更合理,横坐标和纵坐标做了相应的调整,最后两个参数使用默认设置。

子弹的实现

首先在子弹的 create 事件里写入如下代码:

speed = 5;
direction = point_direction(x, y, mouse_x, mouse_y);

这里使用的是内置的属性 speeddirection

然后要在 o_player 里新建一个全局的 Left Preesed 事件用于创建子弹,代码如下:

var dir = point_direction(x, y, mouse_x, mouse_y);
var flipped = (mouse_x > x) * 2 -1;
var gun_x = x - 4*flipped;
var x_offset = lengthdir_x(20, dir);
var y_offset = lengthdir_y(20, dir);

instance_create_layer(gun_x + x_offset, y- sprite_height/2 + y_offset, "Instances", o_bullet);

当计时器到达0时,自动执行如下代码。

dirflipped 分别是方向和鼠标在人物左右的判断,gun_x 是枪口位置的横坐标。

x_offsety_offset 是枪口和枪位置的偏移量(“枪口”实际上并不存在,20是对枪长度的粗略估计)。

然后使用 instance_create_layer 创建子弹,四个参数依次为(创建位置横坐标,创建位置纵坐标, 所在的图层,创建的对象)。

但是仅仅是这样的话,子弹会被挡住,所以这里要调整子弹的深度。

depth = -1;

当子弹撞上墙时,要销毁子弹,所以这里创建一个和 o_solidcollision 事件,写入如下代码:

instance_destroy();

至此,枪和子弹实现完毕。

原文地址:https://www.cnblogs.com/2ufun/p/12384225.html

时间: 2024-08-29 21:33:47

GameMaker Studio 2—制作横版射击游戏教程-HeartBeast 短期小结2的相关文章

Unity3D开发一个2D横版射击游戏

教程基于http://pixelnest.io/tutorials/2d-game-unity/ , 这个例子感觉还是比较经典的, 网上转载的也比较多. 刚好最近也在学习U3D, 做的过程中自己又修改了一些地方, 写篇文和大家一起分享下, 同时也加深记忆. 有什么纰漏的地方还请大家多包涵. 1.创建第一个场景 新建工程,在Project面板创建文件夹, 是为了更好的规划管理资源文件. 接着在Hierarchy面板上创建多个空对象(这样的结构也是清晰了整个游戏的层次, 对象之间的关系一目了然),

日式横版射击游戏《天蓝色ElexiaJ》的资源解包

----------------------------------------------------------------------- !!警告!! 游戏资源所有权,归游戏开发商所有: 以下解包算法仅供学习交流,请勿用于商业与非法用途: 由此产生的一切后果,与博主(我)无关: ----------------------------------------------------------------------- 废话不多说,游戏的封包以 pack 为后缀名,内存布局很简单,首先是一

简易2D横版RPG游戏制作

Unity学习笔记1 简易2D横版RPG游戏制作 http://m.blog.csdn.net/article/details?id=24601905

横版格斗游戏 cocos2d-x游戏源码

请大家赏个脸,如果感兴趣的看一下,含金量非常高的横版格斗游戏源码,  我的淘宝网址: Beat 'Em Up Game 名将.恐龙.拳皇.三国战纪.战国传承,一个个响当当的名字,承载了80后多少儿时的梦想.横版格斗过关游戏,曾经是最受大众欢迎的一种类型,拳拳到肉的打击感,轻风飘逸的一招一式,还有怒涛般的连击技,令无数玩家如痴如醉.这种游戏也一度是游戏性最强的游戏,但在卡牌横行,快餐文化泛滥的今天,这种游戏已经失去了往日的光彩,但这不是游戏本身的错,而主要在于游戏厂商的急功近利.这种游戏不同于纯界

Beat 'Em Up Game Starter Kit (横版格斗游戏) cocos2d-x游戏源码出售

请大家赏个脸,如果感兴趣的看一下,含金量非常高的横版格斗游戏源码,  我的淘宝网址: Beat 'Em Up Game 名将.恐龙.拳皇.三国战纪.战国传承,一个个响当当的名字,承载了80后多少儿时的梦想.横版格斗过关游戏,曾经是最受大众欢迎的一种类型,拳拳到肉的打击感,轻风飘逸的一招一式,还有怒涛般的连击技,令无数玩家如痴如醉.这种游戏也一度是游戏性最强的游戏,但在卡牌横行,快餐文化泛滥的今天,这种游戏已经失去了往日的光彩,但这不是游戏本身的错,而主要在于游戏厂商的急功近利.这种游戏不同于纯界

Beat 'Em Up Game Starter Kit (横版格斗游戏) cocos2d-x游戏源码

浓缩精华,专注战斗! 游戏的本质是什么?界面?养成?NoNo! 游戏来源于对实战和比赛的模拟,所以它的本源就是对抗!就是战斗!是挥洒热血的一种方式! 一个游戏最复杂最难做的是什么?UI?商城?各种升级系统?NoNo,还是战斗! 名将.恐龙.拳皇.三国战纪.战国传承,一个个响当当的名字,承载了80后多少儿时的梦想.横版格斗过关游戏,曾经是最受大众欢迎的一种类型,拳拳到肉的打击感,轻风飘逸的一招一式,还有怒涛般的连击技,令无数玩家如痴如醉.这种游戏也一度是游戏性最强的游戏,但在卡牌横行,快餐文化泛滥

【独立游戏】Sunset——二次元横版动作游戏

SUNSET是一个动漫风横版动作同人游戏,讲述了在虚拟现实发达的未来,白帽黑客们与骇客的斗争 游戏中你不仅可以获得传统动作游戏的爽快打击感,还能运用各种科技道具体验到不一样的快感 游戏由南昌大学游戏部的sols&茶炉推出 下载地址:https://pan.baidu.com/s/1eS85ZcI 茶炉大大画的封面图~ 爽快的技能和酷炫的特效 可选4个角色 可以双人游戏 原文地址:https://www.cnblogs.com/sols/p/8449360.html

【我的第一款App(“跑酷好基友” 英文名:BothLive) 登录App Store(一)】使用iOS7推出的Sprite Kit框架制作一款横版小游戏

从本篇文章开始,我将陆续用至少三篇文章介绍一下我个人的第一款上线App Store的游戏:“跑酷好基友”,英文名BothLive.从游戏制作.社交分享.App上传审核,以及版本更新迭代(如果有)几个方面来介绍.目前,这只是一个非常非常easy的超轻量级游戏. 说来也很有意思,本人一直从事iOS应用客户端的开发,对于iOS游戏制作从来也没花时间和心思.但是一个偶然的机会:2014年3月份公司派我去南京晓庄学院做一场开发讲座,讲座中需要向同学们演示一个小游戏的开发过程,于是我便利用iOS7推出的全新

用canvas制作酷炫射击游戏--part3

今天介绍下 游戏中的sprite模块,也就是构建玩家及怪物的模块.有了这个模块,就可以在咱们的游戏里加入人物了. 想必用过css的朋友都知道sprite,一种将需要加载的图片拼接在一张图里以减少请求的css性能优化的方法.在游戏中的sprite,指游戏里有行为.有模样的对象.也就是人物或怪物. 源码见game-engine第598行.这里截取下目前需要的部分 加以说明. // 精灵构造器 var Sprite= function (name,context,painter,behaviors)