专栏首页Creator星球游戏开发社区KUOKUO的趣味教程 | 进击的小怪诞生(1)

KUOKUO的趣味教程 | 进击的小怪诞生(1)

EEA阔宝:专注 CocosCreator 引擎小游戏开发两年

开发微信小游戏5款

H5 小游戏多款

CSDN 博客: KUOKUO 众享


第一章:进击的小怪诞生

这,本该是一片虚无之地,却有一个 960*640 的神秘领域降临(Canvas)... 这,本该是一块荒凉之所,却有一个玩家凭空产生(player节点)...

咦!!!冥冥之中,好似有一股神秘的力量操纵着玩家,player节点上绑定player-control脚本:

cc.Class({
    extends: cc.Component,

    properties: {
        speed : 100
    },

    onLoad () {
        // 声明上下左右开关
        this.up    = false;
        this.down  = false;
        this.left  = false;
        this.right = false;
        // 键盘事件,w s a d 上下左右
        cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
        cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
    },

    /**
     * 按下键盘事件
     */
    onKeyDown (event) {
        switch(event.keyCode) {
            case cc.macro.KEY.w:
                this.up = true;
                break;
            case cc.macro.KEY.s:
                this.down = true;
                break;
            case cc.macro.KEY.a:
                this.left = true;
                break;
            case cc.macro.KEY.d:
                this.right = true;
                break;
        }
    },

    /**
     * 键盘抬起事件
     */
    onKeyUp (event) {
        switch(event.keyCode) {
            case cc.macro.KEY.w:
                this.up = false;
                break;
            case cc.macro.KEY.s:
                this.down = false;
                break;
            case cc.macro.KEY.a:
                this.left = false;
                break;
            case cc.macro.KEY.d:
                this.right = false;
                break;
        }
    },

    update (dt) {
        if (this.up) {
            this.node.y  += this.speed * dt;
        }
        if (this.down) {
            this.node.y  -= this.speed * dt;
        }
        if (this.left) {
            this.node.x  -= this.speed * dt;
        }
        if (this.right) {
            this.node.x  += this.speed * dt;
        }
    }
});

尝试按下W、S、A、D这向个键,玩家居然动起来了,真是神奇... ...

突然!!!

虚空中喷薄而出的能量席卷了这个领域,玩家身上的所有装备被损坏,失去了攻击力,而与此同时,一个奇怪的东西乱入了进来...

我 KUOKUO!一个小怪,诞生啦!虽然我只是一个小方块,不知如何攻击,甚至没有血量,但是我有一个信念:到达玩家位置,打他!!!

怎么打?不知道!先到达玩家位置再说!

我,下图中的me节点,诞生在了地图左上角 ...

啊,头好疼,穿越到游戏里面来了!我每秒钟好像只能思考 1 次,速度为80迈!

看我的脚本(me),我是小怪!

cc.Class({
    extends: cc.Component,

    properties: {
        thinkCD : 1,
        speed : 80,
        // 玩家
        player : cc.Node
    },

    onLoad () {
        this.vector = cc.v2(0,0);
    },

    update (dt) {
        // 1 秒 1 次
        this.thinkCD -= dt;
        if (this.thinkCD <= 0) {
            this.thinkCD = 1;
            // 向量减法,计算方向向量
            this.vector = this.player.position.sub(this.node.position);
        }
        this.walkTo(this.vector, dt);
    },

    walkTo (v, dt) {
        // 归一化向量
        v.normalizeSelf();
        this.node.x += this.speed * dt * v.x;
        this.node.y += this.speed * dt * v.y;
    }
});

我:玩家别跑! 玩家:啊....W、A、S、D... O(∩_∩)O~~

未完待续...


本文分享自微信公众号 - Creator星球游戏开发社区(creator-star),作者:EEA阔宝

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Creator3D新教程,你能射中靶心么?

    长按屏幕,拖动瞄准,放手发射。风向、重力和距离影响最终结果!越靠近中心得分越高!最高分10分!

    张晓衡
  • 狂热「小工」的9款Creator游戏源码及图文教程,等你来拿!

    他在 Cocos 论坛上公开了自己9款小游戏作品,完成度相当之高,是不可多得的Creator学习资源,下面是论坛链接地址:https://forum.cocos...

    张晓衡
  • KUOKUO的趣味教程 | 小怪物的视野(2)

    本篇承接上一集故事《KUOKUO的趣味教程 | 进击的小怪诞生(1)》,看小怪是如何自我进化的!

    张晓衡
  • ThinkPHP 3.2.3实现加减乘除图片验证码

    ThinkPHP 3.2.3 自带的验证码类位于 /ThinkPHP/Library/Think/Verify.class.php,字体文件位于 /ThinkP...

    砸漏
  • PHP code 验证码生成类定义和简单使用示例

    本文实例讲述了PHP code 验证码生成类定义和简单使用。分享给大家供大家参考,具体如下:

    砸漏
  • 上下div高度动态自适应--另类处理方案

         这段时间在工作中遇到一个看似较为棘手的问题。问题描述:查询报表页面分为上下两部分,上部分为条件输入区域,下部分为报表展示区域。客户要求做到默认满屏(但...

    sam dragon
  • 用 Cocos Creator 制作平台跳跃游戏

    平台跳跃类游戏如《超级马里奥》《Celeste蔚蓝》等,非常考验玩家的操作和判断,有着非常本真的游戏乐趣。这类游戏乍一看,挺容易做的,但是要做好却不太容易。今天...

    一枚小工
  • Creator3D新教程,你能射中靶心么?

    长按屏幕,拖动瞄准,放手发射。风向、重力和距离影响最终结果!越靠近中心得分越高!最高分10分!

    张晓衡
  • Promise的简单实现

    这个fetch()的方法返回了一个Promise对象,接着我们就可以用then来对获得的数据进行处理,catch来捕获可能的错误。

    IMWeb前端团队
  • 拇指射箭 ! Cocos Creator 3D !

    长按屏幕,拖动瞄准,放手发射。风向、重力和距离影响最终结果!越靠近中心得分越高!最高分10分!

    白玉无冰

扫码关注云+社区

领取腾讯云代金券