大佬教程大佬觉得挺不错的篇文章的设计逻辑-x

大佬教程大佬觉得挺不错的篇文章的设计逻辑-x

Quick-Cocos2d-x初学者游戏教程(六)

Cocos2d-x发布时间:2022-05-03发布网站:大佬教程

大佬教程收集整理的这篇文章主要介绍了Quick-Cocos2d-x初学者游戏教程(六),大佬教程大佬觉得挺不错的cocos2d-x游戏开发系列教程-超级玛丽,现在分享给大家,也给大家做个参考。

我们介绍了开发中会用到的辅助工具,并创建了 GameScene 场景,接下来这章我们将继续 GameScene 的传(bai)奇(bi)。不过在开始编写 GameScene 场景的代码之前,我们还是先来明确一下游戏的功能和实现方法。这样可以帮我们更好的理解并设计逻辑。下面是总结出的结论:

在 GameScene 场景中,我们将创建一个飞行的娃娃角色,这个角色是游戏的唯一主角。游戏初始状态下,这个角色有满满的生命值,但随着时间的推移人物立绘,生命值会不断的减少。这里生命值我们可以以进度条的形式来展示它的多少和增减。 游戏 GameScene 场景有不止一层的滚动背景,每层的背景滚动速率不一,这样可以产生立体的滚动效果。娃娃位置不动,让背景不停的滚动,可以产生娃娃在向前飞行的视觉感受。 在滚动过程中屏幕上会时不时的出现一些障碍物和可以增加生命值的奖励品,当娃娃碰到障碍物时,生命值减少;碰到奖励品时,生命值增加。 当触碰屏幕时,娃娃将向上升至一定的高度;当不触碰屏幕时,它将向下掉落。掉落到地板时会扣除相应的生命值。所以玩家必须在按与不按之间保持一定的平衡,一方面躲避障碍物并避免触碰地板,另一方面争取多吃一点奖励品,这样才能让娃娃顺利地到达终点。 本场景我们将用物理引擎来模拟整个飞行世界,这样游戏主角的飞行问题(漂浮状态),以及它与障碍物/奖励品之间的碰撞检测就很容易实现了。 GameScene 的背景

为了产生立体的滚动视觉效果,我们决定用四层不同的背景来实现这一效果(怕累死的,可以偷懒)。当然,这里层的概念不同于引擎中的层(cc.Layer),它只是一个普通的副词而已。

乱入一个知识点:游戏中元素的层级关系由 z-order 属性来决定,我们可以通过设置元素的z-order值来控制元素之间的渲染顺序。默认情况下,所有元素的 z-order 为0,所以当游戏元素没有指定z-order值时,游戏中的元素将按添加顺序来显示。故此cocos2d-x游戏开发系列教程-超级玛丽,我们在添加游戏背景或其他元素时,应该要注意下它们的添加顺序或 z-order 值,不要出现遮挡的现象。

创建BACkgroundLayer背景层

为了让代码结构更加清晰,接下来我们将为 GameScene 场景创建一个背景层,然后把以上的四层背景图都添加到该层上。

所以,我们在 src/app 目录下新建了一个layers 文件夹,然后再新建了一个 BACkgroundLayer.lua 文件,并把它保存到 src/app/layers 目录下。

以下是创建空白 BACkgroundLayer 层的代码:

1

2

3

4

5

6

7

8

BACkgroundLayer = class("BACkgroundLayer",function()

return display.newLayer()

end)

function BACkgroundLayer:ctor()

end

@H_674_102@return BACkgroundLayer

display.newLayer()方法能创建并返回一个 cc.Layer 层对象。

注意:因为我们将在其他(GameScene.lua)文件中调用 BACkgroundLayer 类,所以在创建 BACkgroundLayer 类时,我们并没有像创建 GameScene 一样把它定义为 local 局部型的类。

把背景层添加到GameScene场景

BACkgroundLayer.lua 文件是个单独的模块文件,如果我们想要引用它,那我们需要把它加载到项目中来。

通常,载入文件到 Quick 项目可以使用以下的两种方式:

通过require()方法,该方法会搜索指定的目录,并加载文件。 通过import()方法,该方法用于处理require同目录下其他模块2d素材,在模块名前加.。

它们的详细用法参见。

这里,我们载入 BACkgroundLayer 模块用 require 方法。在 MyApp.lua 中加入如下的函数:

1

require("app.layers.BACkgroundLayer")

文章来源:http://code.js-code.com/cocos2dx/443880.html