如何用CocosCreator实现射击小游戏

 更新时间:2021年04月14日 10:25:24   作者:战 胜  
这篇文章主要介绍了如何用CocosCreator实现射击小游戏,此游戏难度不大,仅作为入门的练手小游戏,一小时就能完成,里面用到的知识很常用,喜欢游戏的同学,可以参考下

分析下制作步骤:

1. 准备好资源,搭建场景

资源的话可以自己到网上找,也可以直接用我的也行;创建好相应文件夹,把资源放到res文件夹下;

搭建场景:
第一步:创建一个单色精灵(Script) bg 背景, 设置好颜色,加一个Widget组件,使其充满屏幕;

第二步: 在bg节点下创建topbutton空节点作为顶与底部,然后在两个空节点加入带刺的节点(直接将图片拖到top层级管理器就可以),现在我们需要给top与button节点添加一个Layout组件,属性设置如图,这样可以看到屏幕上下都有刺了。

第三步: 将玩家小人、子弹、敌机同样的方法加入到场景中,再创建一个Label节点用来显示分数,调节一下位置;

2. 代码控制游戏

第一步: 创建一个game脚本,挂载到dg节点上;

第二步: 编辑代码,在 properties添加属性,用来关联玩家、子弹、敌人节点,再编辑器关联;

第三步: 代码逻辑控制,包括初始化玩家、子弹、敌人;注册监听事件;写动作函数;计分判断等;

全部代码:

cc.Class({
    extends: cc.Component,

    properties: {
        playerNode: cc.Node,
        enemyNode: cc.Node,
        fireNode: cc.Node,
        scoreNode: cc.Label,
    },
    
     onLoad () {
        this.playLoad();
        this.fireLoad();
        this.enemyLoad();
         this.node.on("touchstart",this.fire,this);
         
     },

     update (dt) {
          if(Math.abs(this.fireNode.y-this.enemyNode.y)<(this.fireNode.height/3+this.enemyNode.height/3)
            &&Math.abs(this.fireNode.x-this.enemyNode.x)<(this.fireNode.width/3+this.enemyNode.width/3)){
              console.log("击败敌机");
              this.scoreNode.string= ++this.score;//击中得分
            this.fireNode.stopAction(this.fireAction);
            this.enemyNode.stopAction(this.enemyAction);
            this.enemyNode.active=false;
            this.fireNode.active=false;
            this.fireLoad();//初始化子弹
            this.enemyLoad();// 初始化敌机
          }

     },

     // 关闭事件监听
     onDestroy(){
        this.node.off("touchstart",this.fire,this);
     },
    // 初始玩家
    playLoad(){
        this.score=0;
        this.playerNode.y=-cc.winSize.height/4;
        
    },
    //初始化子弹
    fireLoad(){
        this.fireNode.active=true;
        this.isFire=false;
        this.fireNode.x=this.playerNode.x;
        this.fireNode.y=this.playerNode.y+this.playerNode.height;
    },
    // 初始化敌机
    enemyLoad(){
        this.enemyNode.active=true;
        this.enemyNode.x=Math.random()* cc.winSize.width;
        this.enemyNode.y=cc.winSize.height/3;
        let x=cc.winSize.width/2-this.enemyNode.width/2;
        let y=Math.random()* cc.winSize.height/4;
        let seq=cc.repeatForever(cc.sequence(cc.moveTo(1.5,cc.v2(-x,y)),cc.moveTo(1.5,cc.v2(x,y))));
        
        this.enemyAction=this.enemyNode.runAction(seq);
    },
    // 死亡 重新加载游戏
    dear(){
        console.log("死亡");
        cc.director.loadScene("game_scenes");
    },


    // 发射子弹
     fire(){
         if(this.isFire) return;
         this.isFire=true;
        console.log("开始发射");
         var fireaction=cc.sequence(
             cc.moveTo(1,cc.v2(this.playerNode.x,cc.winSize.height/2)),
             cc.callFunc(()=>{
                this.dear();
            }));
        this.fireAction=this.fireNode.runAction(fireaction);
        console.log("结束发射");
     }

});

最终效果

以上就是如何用CocosCreator实现射击小游戏的详细内容,更多关于CocosCreator实现射击小游戏的资料请关注脚本之家其它相关文章!

相关文章

  • js版本A*寻路算法

    js版本A*寻路算法

    js版本A*寻路算法...
    2006-12-12
  • JS+HTML实现的圆形可点击区域示例【3种方法】

    JS+HTML实现的圆形可点击区域示例【3种方法】

    这篇文章主要介绍了JS+HTML实现的圆形可点击区域,结合实例形式分析了javascript结合HTML元素属性实现一个圆形的可点击区域相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • typescript+react实现移动端和PC端简单拖拽效果

    typescript+react实现移动端和PC端简单拖拽效果

    这篇文章主要为大家详细介绍了typescript+react实现移动端和PC端简单拖拽效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Javascript尾递归编程的实现

    Javascript尾递归编程的实现

    本文主要介绍了Javascript尾递归编程的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • JS获取图片高度宽度的方法分享

    JS获取图片高度宽度的方法分享

    这篇文章主要介绍了JS获取图片高度宽度的方法,开始的时候没能做到兼容chrome,在度娘和众网友的帮助下,最终完成了完美兼容,这里分享给大家,有需要的小伙伴可以参考下。
    2015-04-04
  • BootStrap自定义popover,点击区域隐藏功能的实现

    BootStrap自定义popover,点击区域隐藏功能的实现

    下面小编就为大家分享一篇BootStrap自定义popover,点击区域隐藏功能的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • layui-table表复选框勾选的所有行数据获取的例子

    layui-table表复选框勾选的所有行数据获取的例子

    今天小编就为大家分享一篇layui-table表复选框勾选的所有行数据获取的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • Javascript实现关闭广告效果

    Javascript实现关闭广告效果

    这篇文章主要为大家详细介绍了Javascript实现关闭广告效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • 详解ES6 中的Object.assign()的用法实例代码

    详解ES6 中的Object.assign()的用法实例代码

    这篇文章主要介绍了ES6 Object.assign()的用法及用途,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 两种WEB下的模态对话框 (asp.net或js的分别实现)

    两种WEB下的模态对话框 (asp.net或js的分别实现)

    在如今互联网网站上,AJAX效果风靡一时,应该说AJAX技术在未来几年不会动摇,在AJAX效果中,模态对话框是比较常见的效果,也是非常适用的。
    2009-12-12

最新评论