游戏实践一

Construct 2 初学入门教程

新建工程

打开Construct 2,可以看到一个类似Microsoft Office 2010的界面。点击左上角File(文件)按钮打开“文件”菜单,选择New(新建)建立工程。
The File menu 'New' button.
新建工程窗口,你不需要更改任何东西。只要点击创建工程。Construct 2 会把工程变成 .capx 的格式。打开后你会看到空白的 layout——这是你创建物体的地方。想想怎么在这里制作关卡和菜单吧。在其他的制作工具里,这也会被叫成roomscene 或者 frame

插入对象

平铺壁纸

首先我们来为游戏添加背景。使用Construct 2里的Tiled Background对象(平铺壁纸相信大家都很熟悉。通俗点,就是一个图片可以向四方重复粘贴,和网页背景图类似,能防止游戏在加载时因图片太大而减慢速度),下面官方提供了素材——背景图,右击另存到你的计算机里:

The Tiled Background texture
现在,在layout画布里双击,弹出插入对象对话框。在该对话框中双击Tiled Background对象。

The Insert New Object dialog.


这时,鼠标指针形状变成了十字形,你可以在布局的任何位置点击,我们在布局中间差不多位置点击,弹出Texture editor对话框,我们点击打开文件夹图标,把刚才保存的背景瓦片载入。

Load texture from file
接下来单击对话框右上角X关闭对话框,如果提示保存图片,请保存!现在画布上出现了背景瓦片对象。选中它,在左边的Properties Bar属性面板里设置它的position位置为0,0(左上角),以及它的size大小为1280,1024(画布的大小)。

Tiled Background properties
背景创建完毕,你可以按CTRL+鼠标滚轮来放大缩小,或者点击view菜单-zoom命令来查看整体效果,你也可以按住space空格键,或者按下鼠标中键,来平移画布,很类似PS的操作。你也可以按CTRL+0或者view菜单-zoom to 100%命令来恢复画布1:1的视图模式。

The inserted tiled background.


这时,你可以点击run图标运行,浏览器(IE9或者Chrome,火狐最好也是新版本)将自动打开并展示游戏。

添加输入控制对象

回到画布中,同样双击插入另外一个对象,这次我们选择Mouse对象,我们需要鼠标输入控制。同样的添加Keyboard对象。
注意:这些对象不需要置于画布中,他们是隐藏的,自动在工程中起作用,现在工程中的所有层都可以使用鼠标和键盘输入控制了。

游戏对象

是时候来添加游戏对象了,如玩家角色,怪物角色,子弹,游戏特效等。下面是本例中要用的图片:

玩家:
Player texture
怪物:
Monster texture
子弹:
Bullet texture
爆炸特效:
Explosion texture
在CT2中,游戏中这些对象,我们将采用sprite(RPG中好些人称为精灵,在flash里成为元件)对象来置入。该对象用来显示图片(纹理,图像设计专业说法,在CT2里可以就认为图片),还可以移动,旋转或缩放。
接下来依次插入上面的几个对象,插入过程如下,和上面的操作一样,大致如下:
1、双击插入新对象
2、双击选择Sprite对象
3、当鼠标变成十字,在画布中点击
4、弹出对话框,点击open 图标,加载四张素材图片中的一张
5、保存并关闭对话框
注意:如果你觉得这样的操作方法太慢,繁琐,你可以直接把图片拖入到画布中,和PS操作差不多,Construct2会自动为该图片创建Sprite对象。

移动子弹和爆炸对象到画布外,这样游戏一开始,我们看不到这些对象。
默认CT2会自动把我们的对象命名为Sprite,Sprite2,Sprite3,Sprite4,我们可以在他们各自的Properties bar属性面板里的Name属性里更改。依次更改Player,Monster,Bullet,Explosion(玩家,怪物,子弹,爆炸特效)。

Renaming an object.


如何增加行为

我们给角色player添加8 direction movement行为:选中player,在properties bar属性面板里,找到Behaviors分类,点击Add/Edit弹出Behaviors行为对话框。

Opening the Behaviors dialog.
在对话框中,点击绿色+号-添加行为图标,在弹出的“Add behavior”对话框中双击8 direction movement

Adding the 8-direction movement.
接着以同样的方法给player添加Scroll ToBound to layout行为,此时"player:Behaviors"对话框如下:

The Player with all three behaviors added.
关闭行为对话框。点击运行查看游戏!此时我们已经可以移动角色,屏幕也跟随角色移动,而且通过设置Bound to layout行为后,角色也不能移出画布区域。

The Run button.

我们来编辑下怪物的行为,选中Monster怪物对象。看到properties bar属性面板中,我们会发现属性栏里多出了其他一些属性,这些属性是添加了行为后才有的。

Bullet behavior properties
更改speed速度为80(单位:像素/秒)
同样的方法给Bullet子弹对象的速度更改为400,Explosion对象的Fade行为的Fade out time淡出时间为0.5秒。


添加更多怪物

按住CTRL,拖拽Monster对象复制几个实例。他们都是Monster对象类型的。

我们来创建第一个事件
我们将使player(发射口)一直看向鼠标,这样我们点击发射子弹的时候,子弹将发往鼠标方向。如下:

The completed event.
记住:每次屏幕被重绘的时候,tick(一个内部循环中,每秒几帧屏幕重绘,百度一下吧,囧)将会运行(tick下的事件都会运行一次)。所以如果我们强制player每帧都朝向鼠标,那么player将一直朝向鼠标。

我们开始制作该事件。在event sheet的空白位置双击,将打开添加事件对话框:
The New Event dialog.
不同的对象根据他们要做的行为拥有不同的条件和动作,在对话框中双击System对象,对话框中列出了所有System对象的条件:
Choosing 'Every tick'.
双击Every tick条件插入到事件表中。对话框将关闭,Every tick事件被创建,但没有actions(动作)。如下:

The empty 'Every tick' event.
接着我们添加一个动作来使角色看向鼠标。点击event右边的Add action链接,打开对话框如下:

The Add Action dialog.
对话框中列出了可以添加动作的对象,双击player对象,对话框列出了player对象可添加的动作如下:
Player 'Set angle towards position' action.
选取Set angle towards position动作。该动作会自动计算角色到给定的X,Y坐标的角度。
接下来要指定X,Y坐标值(动作的参数,条件同样可以带有参数)。我们输入Mouse.X和Mouse.Y(也可以输入表达式如:Mouse.X+100,虽然用的并不多)
此时,你运行就可以看到效果了。
如果提示错误:Mouse is not any object name,确保你已添加了Mouse object鼠标对象!

让角色可以射击
当玩家点击的时候,可以发射子弹。这可以通过Spawn an object动作来实现,该动作在同样的位置和角度(相对于角色)创建新的对象实例。子弹的Bullet movement属性将会使它向前飞出。制作如下事件:

条件:Mouse->On click->Left clicked(the default)

       //鼠标->点击->左击(默认)

动作:Player->Spawn another object->For Object,choose the Bullet

         //Play对象->产生另外的对象->对象,选择子弹层,输入1(“Main”图层),Image point(子弹的发射起点)保持默认为0。如下:

Ghost shooter event 2.
如果你运行游戏,你将看到子弹从角色图片的中心发出,并不是从枪口发出。我们来修改下,在工程或对象面板中右击player对象选择Edit animations编辑动画。

Editing the player's animations.
在弹出的图片编辑器中,选择Set origin and image points工具

The origin and image points tool.
看到image points对话框,对象的原点以红点显示

The image points dialog.
这是对象的原点(如果你旋转对象,将绕着这个点),点击绿色的+号按钮添加一个点,该点以蓝点显示。我们在角色图片枪口位置处左击,将该点放置于枪口位置:

Placing the image point at the end of the player's gun.
关闭图片编辑器,双击事件表中早前添加的Spawn an object动作,更改Image point为1.在面板中可以看到序号的,默认的原点为0,其他添加的一次1,2。。。等。如下:

The edited event.

添加事件如下:
条件:Bullet->On collision with another object->pick Monster。

        //子弹->于其他对象碰撞->选择Monster怪物。

动作:Monster->Destroy

               //怪物->消灭

动作:Bullet->Spawn another object->Explosion,layer 1

                 //在图层1 碰撞的位置产生新对象-爆炸特效

动作:Bullet->Destroy

                      //子弹销毁

爆炸特效

运行游戏,尝试射击一个怪物,我们可以看到碰撞发生,爆炸特效也产生了,杯具的是,有个大大的黑色边框,好难看!

Explosion with no effect
不用担心,我们可以去掉黑框,在工程面板或者对象面板点击Explosion object爆炸特效对象。在它的属性面板里设置Effect属性为Additive(叠加,玩过PS的知道,黑色颜色值为0,叠加后就不起作用,就看不到了,具体的去百度下吧)。再次尝试游戏可以看到,完美了

Explosion with additive effect.

让怪物聪明一点

(添加怪物智能AI,专业说法,囧,本例可没那么高深)
当下怪物只会向右移动。我们来让他们更有趣些。首先让他们产生在随机的位置。
条件:System->On start of Layout

                    //系统->画布启动时

动作:Monster->Set angle->random(360)

             //怪物->设置角度->0-360随机度数

Condition: System -> On start of Layout
Action: Monster -> Set angle -> random(360)

Event 4 of the tutorial.
此时,怪物依然移出画布,再也看不到,接着我们再来修改,让怪物移动边缘处的时候,自动往回移动,并且添加智能,让怪物朝着玩家角色移动(自然是角色没挂的时候)。
条件:Monster->Is outside layout

               //判断怪物是否要离开画布

动作:Monster->Set angle toward position->For X,Player.X - for Y,Player.Y

          //设置怪物朝向角色的坐标

再次运行游戏。此时你可以看到怪物在画布里朝着不同的方向移来移去,最终都会朝着角色围过来。这个智能的行为咱们不编程看不到代码(就算编程也太难,囧,要不也不找这软件了哈),将就着看吧,似乎不错了!
此我们的角色还是无敌的,怪物却是太脆落了,子弹一碰就挂了,接着我们通过instance variables实例变量来修改这些。

实例变量

Instance variables实例变量允许每个怪物存储它自身的生命值。一个变量简化了说就是一个可以改变的值。他们单独存储,分别带他们相应的实例。

我们来为怪物添加health实例变量。在工程或对象面板选择怪物monster(注意monster的意思就是怪物,本教程翻译的时候好多地方都是这样注释的,因为实际制作中我们是用英文的)。亦或,在画布中选取monster怪物对象。这样属性面板呈现的是怪物的相关属性。在properties bar属性面板的Instance variables分类下点击Add/edit:

Adding a new instance variable.
弹出实例变量对话框,类似于早前的行为对话框。本对话框允许你为对象添加或修改实例变量。点击绿色+号按钮来添加新变量。

Adding the 'health' instance variable.
在弹出的对话框中输入变量名health,保持类型为Number(数字型),设置Initial value初始值为5。这使怪物拥有5个生命值。当他们被子弹射到时,生命值减1,直到为0,被消灭。
当我们点击OK确定。变量就出现在实例变量对话框中以及属性面板中,可以通过Add/Edit链接修改。

The health instance variable now added to the monster.

更改事件

切换到事件表(event sheet记得英文哦,教程中有些地方就写中文了,软件还是英文的,软件是可以汉化,但是太费时间,等心情好再说)中,我们来更改怪物被消灭的事件。
找到事件Bullet-on collision with Monster.现在的动作是destroy monster,右击该动作,选择Replace。

Replacing an action.
弹出的对话框和新建动作的对话框一样,选择Monster->Subtract from(in the Instance variables catrgory)->Instance variable "health",并输入值1。点击Done确定。该动作呈现如下:

Subtracting 1 from monster's health.
现在我们射击怪物时,当子弹碰到怪物,怪物生命值减1,子弹爆炸消失,但我们得添加一个事件来检测怪物的生命为0时,让它消灭。添加如下事件:
条件:Monster->Compare instance variable->Health,Less or equal,0

         //校对实例变量值是否<=0 不要用=0,连射可导致怪物生命值负数。

动作:Monster->Spawn another object->Explosion,layer1

               //产生爆炸效果,你可以替换成怪物挂掉的效果

动作:Monster->Destroy

          //怪物消灭

The completed event.
运行游戏,尝试射击

显示分数并存档

我们来添加分数显示功能,让玩家知道猎取了多少怪物,获得了多少分数。我们需要另外一个变量,但此时我们熬添加一个全局变量global variable。假设我们的游戏有好几关,全局变量就可以累积分数。全局变量适用于整个游戏,只有一个之存储着。
右击事件表底部,并选择Add global variable。
Add a global variable.
输入分数变量名Score。其他字段默认即可,点击OK确定。变量将从0开始计数。starting at 0.

Adding the Score global.
现在全局变量呈现在事件表中:

The Score global variable.
注意:local variable局部变量限制于自身所在事件的作用范围,现在我们不用考虑这个,本例不用。其实很多东西都是参考程序里的,不过无所谓了,无视吧!
接着我们来添加动作,在Monster:health less or equal 0事件里添加动作System->Add to(under Global & local variables)->Score,value 1.如下:

The event giving the player some score.
现在玩家就拥有分数了,每当怪物被杀掉,就可以增加1分,但现在我们运行游戏依然看不到分数,我们需要一个文本对象。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值