CocosCreator实战篇 |CocosCreator实现《飞机大战》

这篇具有很好参考价值的文章主要介绍了CocosCreator实战篇 |CocosCreator实现《飞机大战》。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 📢博客主页:肩匣与橘

  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

  • 📢本文由肩匣与橘编写,首发于CSDN🙉

  • 📢生活依旧是美好而又温柔的,你也是✨


《飞机大战》

📝前言

一、素材准备

二、场景搭建

①背景

②主角战斗机

③敌方战机生成点

④分数UI

⑤副摄像机

三、脚本编写

Ⅰ主角战斗机

Ⅱ敌方战斗机

Ⅲ子弹

 Ⅳ背景

四、效果展示


📝前言

        飞机大战游戏是一款经典的射击游戏,玩家操控一个飞机进行空战任务,通过不断发射子弹摧毁敌方飞机来增加游戏的分数。本着界面简单,开发容易的原则,这款游戏也成为诸多游戏开发者的第一款上手项目。 本文将系统的介绍《飞机大战》游戏各个模块的实现。


一、素材准备

  1. Cocos Creator:本文展示的是2.4.8版本
  2. Visual Studio Code:脚本语言使用 Type Script
  3. 素材:背景图、己方飞机图、敌方飞机图、发射音效、飞机爆炸音效

二、场景搭建

①背景

游戏的移动展示分为角色移动 背景不动/角色移动 背景移动/角色不动 背景移动

这次项目采用的是角色不动 背景移动,通过背景循环实现无限地图,场景搭建如下:

使用三张背景图衔接

CocosCreator实战篇 |CocosCreator实现《飞机大战》

②主角战斗机

将主角战斗机放到场景中,并为其添加碰撞体,添加player脚本

CocosCreator实战篇 |CocosCreator实现《飞机大战》

CocosCreator实战篇 |CocosCreator实现《飞机大战》

③敌方战机生成点

        为方便初学者理解,本项目将设置一个空节点在场景上方,以此点为基准生成敌方战斗机

CocosCreator实战篇 |CocosCreator实现《飞机大战》

④分数UI

        创建文本组件,实现分数的计算

CocosCreator实战篇 |CocosCreator实现《飞机大战》

⑤副摄像机

        创建一个单独渲染背景的摄像机,并将背景的分组改为bg,副摄像机渲染选择渲染背景

CocosCreator实战篇 |CocosCreator实现《飞机大战》

CocosCreator实战篇 |CocosCreator实现《飞机大战》

三、脚本编写

  • 主角战斗机:飞机的位置实时保持鼠标移动的位置;发射子弹
  • 敌方战斗机:随机生成并向下飞行
  • 子弹:生成后自动往上发射
  • 背景:持续滚动

Ⅰ主角战斗机

        在主代码中编写鼠标回调,移动时,飞机的位置等于鼠标按下/滑动的位置

 this.node.on(cc.Node.EventType.TOUCH_MOVE,(event)=>{

        var pos=new cc.Vec2(event.getLocationX()-240,event.getLocationY()-426);
        
        console.log(pos);
        
        this.test.setPosition(pos);
});

 飞机自己的代码包含子弹预制体,发射子弹,碰撞回调(撞到敌机爆炸)

 //预制体
    @property(cc.Prefab)
    bulletPre: cc.Prefab = null;

    isDie: boolean = false;

    // LIFE-CYCLE CALLBACKS:

    // onLoad () {}

    start() {
        if (this.isDie == false) {
            //攻击  //计时器
            //参数: 方法   0.5秒调用一次  n次 第一次n个
            this.schedule(() => {
                //创建子弹
                let bullet = cc.instantiate(this.bulletPre);
                //设置父物体
                bullet.setParent(this.node.getParent());
                //设置子弹发射位置
                bullet.x = this.node.x;
                bullet.y = this.node.y + 80;
                let Playe: cc.AudioSource = this.getComponent(cc.AudioSource);
                cc.loader.loadRes("shot", cc.AudioClip, (res, clip) => {
                    Playe.clip = clip;
                    Playe.play();
                });
            }, 0.5);

            //开启碰撞
            cc.director.getCollisionManager().enabled = true;
        }
    }


    die() {
        this.isDie = true;
        //加载爆炸图
        cc.loader.loadRes("herodie", cc.SpriteFrame, (err, res) => {
            this.node.getComponent(cc.Sprite).spriteFrame = res;
        });
        cc.loader.loadRes("boom", cc.AudioClip, (res, clip) => {
            let audioId: number = cc.audioEngine.playMusic(clip, false);
        });
        //300毫秒销毁
        setTimeout(() => {
            this.node.destroy();
        }, 500);

    }
    update(dt) {



    }

Ⅱ敌方战斗机

        从生成飞机的点,随机生成敌机

//敌机预设题
    @property(cc.Prefab)
    enemyPre: cc.Prefab = null;

    // LIFE-CYCLE CALLBACKS:

    // onLoad () {}

    start () {
        //每个两秒创建一个敌机
        this.schedule(()=>{
            //创建敌机
            let Enemy = cc.instantiate(this.enemyPre);
            //设置父物体  场景
            Enemy.setParent(this.node.getParent());

            Enemy.y = this.node.y;

            //20-420  随机生成
            Enemy.x = Math.random()*400-200;
        },1.5);
    }

         敌机生成后,持续往下飞行,撞到子弹销毁,撞到主机游戏失败

  @property
    Movespeed :number = 600;
    //是否死亡
    isDie:boolean = false;

    public dieNum:number=0;
    // LIFE-CYCLE CALLBACKS:

    // onLoad () {}

    start () {

    }

    update (dt) {
        //移动
        if(this.isDie == false){
            this.node.y-=300*dt;
        }
        if(this.node.y<-850){
            this.node.destroy();
        }
        
    }
    die(){
        this.isDie = true;
        //加载爆炸图
        cc.loader.loadRes("enemydie",cc.SpriteFrame,(err,res)=>{
            this.node.getComponent(cc.Sprite).spriteFrame =res;
        });
        //300毫秒销毁
        setTimeout(() => {
            this.node.destroy();
        }, 300);
      
    }
   

    onCollisionEnter(other){
        //碰到主机,销毁自己,让主机死亡
        if(other.tag == 2){
            //主机销毁
            other.getComponent(Player).die();
            
            //自己销毁
            this.node.destroy();
            GameModel._ins.mainGame.gameEnd();
            
        }
    }

Ⅲ子弹

子弹设置为预制体,生成后子弹持续往上飞行,撞到敌机实现加分

 update (dt) {
        //移动
        this.node.y+=this.speed*dt;
        if(this.node.y>850){
            this.node.destroy();
        }
    }
    onCollisionEnter(other){
        //碰到敌人,销毁自己,让敌人死亡
        if(other.tag == 1){
            //敌人销毁
            other.getComponent(Enemy).die();
            //自己销毁
            this.node.destroy();
        }
        GameModel._ins.gameScore++;
        
    }

 Ⅳ背景

        背景为3张 持续往屏下方向移动,当移动到一定位置,将位置设置到最上方图片的上面----即可实现背景无限滚动

 update (dt) {
        //移动
        //遍历子物体(背景)
        for(let bgNode of this.node.children){
            //移动  帧->秒
            bgNode.y-=50*dt;
            if(bgNode.y<-852){
                bgNode.y+=852*3;
            }
        }
    }

四、效果展示

CocosCreator实战篇 |CocosCreator实现《飞机大战》

 


        本文我们讨论了使用Cocos Creator制作2D飞机射击游戏的过程。我们从创建项目开始,介绍了游戏场景和UI设计、角色控制、碰撞检测和动画效果等关键技术点,并提供了代码示例和说明。通过这个项目,我们深入了解了Cocos Creator引擎的强大功能和易用性。同时也积累了开发2D游戏所需的实践经验和技能。希望这篇文章对想要学习Cocos Creator游戏开发的读者有所帮助。文章来源地址https://www.toymoban.com/news/detail-414517.html

到了这里,关于CocosCreator实战篇 |CocosCreator实现《飞机大战》的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android Studio实现飞机大战

    通过自定义View实现Android飞机大战小游戏,游戏玩法很简单,可以锻炼玩家的反应能力。开启背景音乐进行新的游戏,控制飞机移动来消灭敌机获取更多的分数,在移动过程中避免与敌机发生碰撞。主界面可以查看自己的历史战绩和游戏规则,详细规则如下: 我们定义了 Sp

    2024年02月16日
    浏览(33)
  • Python利用pygame实现飞机大战游戏

    文章目录: 一:运行效果 1.演示 2.思路和功能 二:代码 文件架构 Demo 必备知识:python图形化编程pygame游戏模块 效果图 ◕‿◕✌✌✌ Python利用pygame实现飞机大战游戏运行演示 参考:【Python游戏】1小时开发飞机大战游戏-Pygame版本(1小时40分钟) 博主提取资源: 提取

    2024年04月09日
    浏览(79)
  • 20个经典面试问题Python面向对象实战--飞机大战(1),Python中高级面试必知必会

    each.reset() for each in mid_enemies: if each.active: each.move() if each.hit: screen.blit(each.image_hit, each.rect) each.hit = False else: screen.blit(each.image1, each.rect) pygame.draw.line(screen, BLACK, (each.rect.left, each.rect.top - 5), (each.rect.right, each.rect.top - 5), energy_remain = each.energy / enemy.MidEnemy.energy if energy_remain 0.2: en

    2024年04月15日
    浏览(43)
  • python毕设分享 飞机大战设计与实现 (源码)

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 **飞机大战小游戏设计与实现 ** 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:3分 项目获取: https://gitee.com/sinonfin

    2024年02月03日
    浏览(51)
  • 基于Python的飞机大战游戏的设计与实现

    收藏关注不迷路    飞机大战是一种非常传统的电脑游戏,也是非常经典的游戏之一,经常可以在电脑,手机,以及各类便携式游戏机中见到。传统的老式飞行游戏以平面,灰白画面为主。而现在,随着计算机性能的飞速发展,我们目前可以在计算机上见到种类更加繁多的

    2024年02月04日
    浏览(38)
  • python小游戏毕设 飞机大战设计与实现

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 飞机大战小游戏设计与实现 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:3分 利用Python制作的一个简易版类\\\"飞机大

    2024年02月10日
    浏览(54)
  • 第一篇【传奇开心果系列】Python的游戏库pygame技术点案例示例:深度解读实战开发飞机大战经典游戏案例

    开发飞机大战游戏不仅能满足广大玩家的娱乐需求,提供寓教于乐的学习机会,也是技术实践、创新实验和商业探索的重要载体,具有多维度的社会与经济价值。 开发飞机大战游戏具有多方面的意义,涵盖娱乐、教育、技术实践与创新等多个层面: 娱乐价值 : 休闲娱乐 :

    2024年04月23日
    浏览(86)
  • Python3+pygame实现有趣好玩的飞机大战游戏(附源码及素材)

    版权声明:原创不易,本文禁止抄袭、转载,侵权必究! 开发环境 :Windows10 Python3.6.4 第三方库 :Pygame1.9.6 IDE :PyCharm/Sublime Text 素材模块 游戏图片素材: BGM及音效素材: 字体素材: 源码模块 子弹模块 普通子弹部分源码: 超级子弹部分源码: 敌机子弹部分源码: 敌机模

    2024年02月11日
    浏览(59)
  • python项目:飞机大战已封装(第一部分)第二部分在飞机大战专辑,后期合并

    图片资源已经展示在了顶部 上面我们用import进行了导包以方便后期调用,并用pygame.init()进行了初始化,pygame的所有使用都需要初始化,然后用pygame.display.set_mode创建游戏总画布注意总画布大小要与背景图相关联 英雄子弹类解析 在许多射击游戏中,子弹类是基本的组成部分之

    2024年04月17日
    浏览(37)
  • scratch飞机大战

    今天scratch作品是飞机大战。 我们做一个基础版的飞机大战,要实现的操作有:我们的飞机可以按左右键进行左右移动,但是不能上下移动,然后飞机一直在发射子弹,如果子弹碰到下落的敌机就可以获得得分,如果被敌机碰到了就算失败,游戏结束。 首先第一步,我们要从

    2024年02月09日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包