用 Cocos Creator 制作平台跳跃游戏

前言

平台跳跃类游戏如《超级马里奥》《Celeste蔚蓝》等,非常考验玩家的操作和判断,有着非常本真的游戏乐趣。这类游戏乍一看,挺容易做的,但是要做好却不太容易。今天,我将使用 Cocos Creator v2.1.2 演示如何灵活快速地使用 Cocos Creator 来制作这类经典的横版平台跳跃类游戏,主要目的是帮助大家熟悉组件的用法,横版游戏实现方法很多,这里不做讨论!

 

开始游戏制作

 

游戏效果预览

美术资源来自互联网

 

游戏场景设计

参考《超级玛丽》的世界观,我们先在[节点管理器]构建我们的世界节点树,我们添加了摄像机,游戏背景层,世界根节点,地图节点,角色节点。

 

1.添加摄像机(Main Camera)

摄像机作为玩家观察游戏世界的窗口,Cocos Creator 默认会自动为场景分配一个[摄像机],我们无需手动添加。

 

2.添加世界根节点(World Root)

添加一个空节点,用于放置游戏内的物体节点。

(1)创建脚本 world.ts 并拖入节点属性面板,用于配置游戏世界参数,比如设置重力加速度 G 的值。

(2)创建脚本 lookat.ts 并拖入节点属性面板,根据 Player 节点的位置同步世界视角。

全局配置 world.ts 代码:

const {ccclass, property} = cc._decorator;@ccclassexport default class CWorld extends cc.Component {
      @property()    WorldFallG: number = 0;    @property()     WorldWalkA: number = 0;    static G: number = 0;        static WalkA: number = 0;         // LIFE-CYCLE CALLBACKS:    onLoad () {
          CWorld.G = this.WorldFallG;            CWorld.WalkA = this.WorldWalkA;     }    start () {
          // enable Collision System        cc.director.getCollisionManager().enabled = true;        cc.director.getCollisionManager().enabledDebugDraw = true;        cc.director.getCollisionManager().enabledDrawBoundingBox = true;    }    // update (dt) {}}

世界视角控制 lookat.ts 代码:

const { ccclass, property } = cc._decorator;@ccclassexport default class NewClass extends cc.Component {
      @property(cc.Node)    target: cc.Node = null;    @property(cc.Node)    map: cc.Node = null;    boundingBox: cc.Rect = null;    screenMiddle: cc.Vec2 = null;    minX: number = 0;    maxX: number = 0;    minY: number = 0;    maxY: number = 0;    isRun: boolean = true;    // LIFE-CYCLE CALLBACKS:    onLoad() {
          this.boundingBox = new cc.Rect(0, 0, this.map.width, this.map.height);        let winsize = cc.winSize;        this.screenMiddle = new cc.Vec2(winsize.width / 2, winsize.height / 2);        this.minX = -(this.boundingBox.xMax - winsize.width);        this.maxX = this.boundingBox.xMin;        this.minY = -(this.boundingBox.yMax - winsize.height);        this.maxY = this.boundingBox.yMin;    }    update() {
          if (!this.isRun)             return;                    let pos = this.node.convertToWorldSpaceAR(cc.Vec2.ZERO);        let targertPos = this.target.convertToWorldSpaceAR(cc.Vec2.ZERO);        let dis = pos.sub(targertPos);        let dest = this.screenMiddle.add(dis);        dest.x = cc.misc.clampf(dest.x, this.minX, this.maxX);        dest.y = this.minY;        this.node.position = this.node.parent.convertToNodeSpaceAR(dest);    }}

 

3.添加角色(Player)

我们控制的游戏主角节点,作为游戏世界视角的焦点。

 

4.添加地图(Tiled Map)

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值