飞机打方块(五)游戏音乐

news2024/9/26 5:13:07

一、新建节点

1.在Start场景中新建Music节点,绑定canvas

 2.在Game场景中新建Music节点

3.新建节点

 

 4.新建Music脚本,绑定Canvas

 Music.ts

const { ccclass, property } = cc._decorator;

@ccclass
export default class NewClass extends cc.Component {

    @property({ type: cc.AudioSource, displayName: "背景音乐", tooltip: "背景音乐" })
    bg_music: cc.AudioSource = null;

    @property({ type: cc.AudioSource, displayName: "碰撞音效", tooltip: "碰撞音效" })
    collision: cc.AudioSource = null;

    @property({ type: cc.AudioSource, displayName: "buff音效", tooltip: "buff音效" })
    buff: cc.AudioSource = null;

    @property({ type: cc.AudioSource, displayName: "按钮音效", tooltip: "按钮音效" })
    btn: cc.AudioSource = null;


    //播放碰撞音效
    play_music_collision(){
        this.collision.play();
    }

    //播放buff音效
    play_music_buff(){
        this.buff.play();
    }

    //播放点击按钮音效
    play_music_btn(){
        this.btn.play();
    }
}

二、引用

1.Barrier.ts

//碰撞回调
    //当碰撞产生的时候调用other产生碰撞的另一个组件 self产生碰撞的自身的碰撞组件
    onCollisionEnter(other, self) {
        if (other.node.group == "bullet") {

            //获取GameController脚本
            let gc = cc.find("/Canvas").getComponent("GameController") as GameController;
            //获取Bullet脚本
            let c = other.getComponent("Bullet");

            //从脚本获取攻击力较少自身生命值
            this.reduce_num(c.ATK);
            // 如果可以加双倍分数
            if (gc.is_double == true) {
                //加分
                gc.add_score((c.ATK) * 2)
            }
            //如果不可以加双倍分数
            if (gc.is_double == false) {
                gc.add_score(c.ATK);
            }
            //销毁子弹
            other.node.destroy();
        }

        //发生了碰撞,无敌
        if (other.node.group == "invincible") {
            //获取GameController脚本
            let gc = cc.find("/Canvas").getComponent("GameController") as GameController;
            //如果可以加双倍分数
            if (gc.is_double == true) {
                //加双倍分
                gc.add_score(this.num * 2);
            }
            //如果不可以加双倍分
            else if (gc.is_double == false) {
                gc.add_score(this.num);
            }
            //自身销毁
            this.node.destroy()
        }
        
        //播放碰撞音效
        let music = cc.find("Canvas").getComponent("Music");
        music.play_music_collision();

        //如果自身生命值小于0
        if (this.num <= 0) {
            //自身销毁
            this.node.destroy();
        }
    }

2.Buff.ts

//碰撞回调
    onCollisionEnter(other,self){
         //获取GameController脚本
         let gc = cc.find("Canvas").getComponent("GameController") as GameController;

         //如果子弹射速满了,就不增加射速了
         if(gc.bullet_speed<10000){
            //随机数0-10
            let n = this.randomNumber(0,10);
            //有一半几率执行子弹加速函数
            //也有一半几率执行子弹加攻击函数
            if(n>5){
                //加速buff
                gc.enhance_speed();
            }else{
                //加攻击buff
                gc.enhance_ATK();
            }
         }else{
            gc.enhance_ATK()
         }
         //自身销毁
         this.node.destroy()


         //播放音效
         let music = cc.find("Canvas").getComponent("Music");
         music.play_music_buff();
    }

 

 

三、菜单修改音乐音量 

1.新建容器节点sound0

 

2.新建滑动器节点

 

Game_Menu.ts

@property({ type: music, displayName: "Music脚本所在节点", tooltip: "Music脚本所在节点" })
    music: music = null;


@property({type: cc.Slider, displayName: "背景音乐音量滑动器", tooltip: "背景音乐音量滑动器"})
    sound_sd0: cc.Slider = null;


//滑动背景音乐滑动器时调用的函数
    set_sound0() {
        //把滑动器的值赋给音乐
        this.music.bg_music.volume = this.sound_sd0.progress;
    }

 3.绑定canvas

四、菜单修改音效音量 

 1.新建容器节点sound1

 

2.新建滑动器节点

 

 

 Game_Menu.ts

 @property({ type: cc.Slider, displayName: "音效音量滑动器", tooltip: "音效音量滑动器" })
    sound_sd1: cc.Slider = null;



//滑动音效滑动器时调用的函数
    set_sound1() {
        //把滑动器的值赋给音乐
        this.music.collision.volume = this.sound_sd1.progress;
        this.music.buff.volume = this.sound_sd1.progress;
        this.music.btn.volume = this.sound_sd1.progress;
    }

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/907390.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【静态时序分析STA(邸志雄)/2023年8月20日】

内容&#xff1a;TCL语言&#xff08;PT&#xff09;&#xff0c;静态时序分析基础&#xff08;工艺库、STA环境、时序检查方法、多时钟等特殊时序分析&#xff09;&#xff0c;SDC&#xff08;tcl设计约束&#xff09; CTS&#xff1a;clock tree systhesis Tsu建立时间/Th保…

实验四 SD 卡启动盘制作

【实验目的】 掌握 SD 卡启动盘的制作方法 【实验环境】 FS4412 实验平台 【实验步骤】 烧写工具默认从 0 扇区开始烧写&#xff0c;这里我们自己在 uboot 之前放一个512 字节的空镜像 将资料中“u-boot 镜像”中的 u-boot-fs4412.bin 拷贝到 ubuntu 的家目录下 在终端输…

升级家庭网络!Wi-Fi 7让你流畅体验网速飞快的3大原因

与我们的智能手机和笔记本电脑不同,即使是最好的Wi-Fi路由器也是我们家中最有可能被视为理所当然的技术——也就是说,直到出现问题。然而,一旦Wi-Fi 7成为主流,这种情况可能很快就会改变。 虽然从Wi-Fi 6到Wi-Fi 6E的飞跃引入了更快的6 GHz频段,但这还不足以让大多数人升…

善于打仗的人,没有特别大的名气和勇功

善于打仗的人&#xff0c;没有特别大的勇功 【安志强趣讲《孙子兵法》第15讲】 【原文】 见胜不过众人之所知&#xff0c;非善之善者也&#xff1b;战胜而天下曰善&#xff0c;非善之善者也。 【趣讲白话】 预判胜负没有超出常人的见识&#xff0c;算不上高明中最高明的&#x…

抓住WhatsApp 营销风口,做全球电商领跑者

您的电子邮件营销活动效果是否一直不理想&#xff1f;不妨考虑 WhatsApp营销&#xff0c;一种实时通讯营销&#xff0c;可帮助企业接触更广泛的受众&#xff0c;与客户建立个人联系并最终增加销售额。还可以再借助具有强大功能的全渠道客户服务工具&#xff0c;例如SaleSmartly…

初出茅庐的小李博客之STM32CubeMx配置USART1增加打印功能

1.创建基于STM32F03C8T6工程 1.1配置时钟 选择外部高速时钟源HSE 1.2配置系统时钟树使其达到最大时钟72MHz&#xff08;最大系统时钟&#xff09; 配置串口1 生成代码 具体工程配置可参考上几篇博客&#xff0c;地址 初出茅庐的小李博客之STM32CubeMx驱动WS2812B实现幻彩&a…

小红书直播浪潮下,怎样找到正确的入局方向?

在今年举办的“电商直播时尚合伙人大会”上&#xff0c;小红书公布了一组数据&#xff1a;2022年小红书电商直播主播数量同比增长337%&#xff0c;平台直播场次同比增长了214%。 相较于其他平台&#xff0c;小红书直播起步较晚&#xff0c;今年凭借董洁、章小蕙等IP“顶流”&am…

【附源码】六个Python表白小代码,送给心爱的她,让她高兴一整天~

话说明天就是七夕了&#xff0c;买礼物了吗&#xff1f; 什么&#xff1f;居然还没买礼物&#xff0c;那这个代码正好送给你&#xff0c;六个Python爱心表白代码&#xff0c;让她高兴一整天&#xff01; 话不多说&#xff0c;咱直接上代码&#xff01; 1、紫色爱心 先看效果…

K8s学习笔记4

场景&#xff1a; 项目研发部门最近要进行应用运行基础环境迁移&#xff0c;需要由原先的虚拟机环境迁移到K8s集群环境中&#xff0c;以便应对开发快速部署和快速测试的需要&#xff0c;因此&#xff0c;需要准备一套可以用于开发需求的K8s集群&#xff0c;但是对于仅有容器基…

YOLO目标检测——MNIST手写数字数据集下载分享

MNIST手写数字图像数据集是一个经典的用于图像分类任务的数据集&#xff0c;其中包含了大量的手写数字图像样本 数据集点击下载&#xff1a; MNIST手写数字数据集7000张图片.rar

使用Xshell7控制多台服务同时安装ZK最新版集群服务

一: 环境准备: 主机名称 主机IP 节点 (集群内通讯端口|选举leader|cline端提供服务)端口 docker0 192.168.1.100 node-0 2888 | 3888 | 2181 docker1 192.168.1.101 node-1 2888 | 388…

元核云私募双录助力私募基金业务高效合规

近年来&#xff0c;私募基金监管政策不断收紧&#xff0c;今年7月发布的《私募投资基金监督管理条例》更是把私募投资基金业务活动纳入法治化、规范化轨道进行监管。 作为保障私募基金业务透明合规的重要手段&#xff0c;“双录”一直是私募流程中非常重要的一环&#xff0c;多…

图像降采样的计算原理:F.interpolate INTER_AREA

一、F.interpolate——数组采样操作 torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode=nearest, align_corners=None, recompute_scale_factor=None) 功能:利用插值方法,对输入的张量数组进行上\下采样操作,换句话说就是科学合理地改变数组的尺…

华为云开发工具CodeArts IDE for C/C++ 开发使用指南

简介 CodeArts IDE是一个集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了开发语言和调试服务。本文主要介绍CodeArts IDE for C/C的基本功能。 1.下载安装 CodeArts IDE for C/C 已开放公测&#xff0c;下载获取免费体验 2.新建C/C工程 CodeArts IDE for C/…

春秋云境:CVE-2022-0543(Redis 沙盒逃逸漏洞)

目录 一、i春秋题目 二、CVE-2022-0543&#xff1a;&#xff08;redis沙盒逃逸&#xff09; 漏洞介绍&#xff1a; 漏洞复现&#xff1a; 一、i春秋题目 靶标介绍&#xff1a; Redis 存在代码注入漏洞&#xff0c;攻击者可利用该漏洞远程执行代码。 进入题目&#xff1a;…

数字孪生技术应用:智能制造、城市规划与更多

数字孪生可以用在哪些场景下&#xff1f;这个问题引发了无数创新思考和应用探索。随着科技的不断进步&#xff0c;数字孪生技术正逐渐展现出其广泛的应用前景&#xff0c;不仅在工业制造&#xff0c;还在城市规划、农业等多个领域呈现出独特的价值。 在工业制造领域&#xff0…

jenkins的安装和配置(flask结合jenkins半自动化部署流程)

jenkins在虚拟机中安装 1.1 背景介绍 Jenkins 是一款流行的开源持续集成&#xff08;Continuous Integration&#xff09;工具&#xff0c;广泛用于项目开发&#xff0c;具有自动化构建、测试和部署等功能。 Jenkins官网&#xff1a; Jenkins Jenkins 特征 开源的Java语言开发…

无涯教程-PHP - 静态变量函数

静态变量 静态变量在函数退出时值不会丢失,您只需将关键字STATIC放在变量名称的前面,即可将变量声明为静态变量。 <?phpfunction keep_track() {STATIC $count0;$count;print $count;print "<br />";}keep_track();keep_track();keep_track(); ?> 这…

openstack安装使用(Yoga版本)

演示具体只体现centos配置&#xff0c;至于Ubuntu和SUSE&#xff0c;请移步官方文档 安装指南 官方网址&#xff1a;https://docs.openstack.org/install-guide/common/conventions.html $ command #任何用户&#xff08;包括root用户&#xff09;都可以运行以提示符为前缀的…

测试框架pytest教程(6)钩子函数hook

在pytest中&#xff0c;"hook"是用于自定义和扩展测试流程的机制。它允许你在特定时间点插入自己的代码&#xff0c;以便对测试进行修改、补充或拦截。 pytest的hook是基于Python的插件系统实现的&#xff0c;使用特定的命名规范和装饰器来定义钩子函数。你可以在py…