【Unity2D 2022:NPC】制作任务系统

news2024/9/25 21:28:24

一、接受任务

1. 编辑NPC对话脚本:

        (1)创建静态布尔变量用来判断ruby是否接受到任务

public class NPCDialog : MonoBehaviour
{
    // 创建全局变量用来判断ruby是否接到任务
    public static bool receiveTask = false;
}

        (2)接受任务后可以射击

public class NPCDialog : MonoBehaviour
{
    // 创建全局变量用来判断ruby是否接到任务
    public static bool receiveTask = false;

    public void displayDialogBox()
    {
        // 接受任务后可以射击
        receiveTask = true;
    }
}

2. 编辑角色脚本:

        (1)在shoot()方法中增加判断,如果接受到任务才可以射击,否则不射击

public class Ruby : MonoBehaviour 
{
    // Ruby发射子弹
    private void shoot()
    {
        if(NPCDialog.receiveTask) {
            GameObject bulletObject = Instantiate(bulletPrefab, rb2d.position, Quaternion.identity);
            Bullet bullet = bulletObject.GetComponent<Bullet>();
            bullet.launch(lookDirection, 300);
            animator.SetTrigger("Shoot");
            playSound(rubyShootSound);
        }
    }

}

 二、提交任务

1. 编辑NPC对话脚本:

        (1)创建静态布尔变量用来判断ruby是否接受到任务

public class NPCDialog : MonoBehaviour
{
    // 创建全局变量用来判断ruby是否完成任务
    public static bool missionComplete = false;
}

        (2)导入UnityEngine.UI命名空间

        (3)创建文本框对象

        (4)用文本框对象接收Text组件

using UnityEngine.UI;

public class NPCDialog : MonoBehaviour
{
    // 创建全局变量用来判断ruby是否完成任务
    public static bool missionComplete = false;
    // 创建文本框对象
    private Text textBox;

    void Start()
    {
        // 用textBox接收Text组件
        textBox = GetComponent<Text>();
    }
}

        (5)任务完成时更换文本框内容

using UnityEngine.UI;

public class NPCDialog : MonoBehaviour
{
    // 创建全局变量用来判断ruby是否完成任务
    public static bool missionComplete = false;
    // 创建文本框对象
    private Text textBox;

    void Start()
    {
        // 用textBox接收Text组件
        textBox = GetComponent<Text>();
    }

    public void displayDialogBox()
    {
        // 任务完成时更换文本框内容
        if(missionComplete) {
            textBox.text = "哦,伟大的Ruby。你居然真的把它们修好了,你人真好!";
        }
    }
}

三、任务完成的判定

1. 创建静态变量用来存储已经修好的机器人数量

public class Enemy : MonoBehaviour
{
    // 创建静态变量用来存储已经修好的机器人数量
    public static int fixedNum = 0;
{

2. 在机器人修复完成时将fixedNum自增1

public class Enemy : MonoBehaviour
{
    // 创建静态变量用来存储已经修好的机器人数量
    public static int fixedNum = 0;

    // 敌人修复完成
    public void enemyFixed()
    {
        fixedNum++;
    }
{

3. 每次机器人修复完成时进行判定,若全部修复完成则将missionComplete修改为true

public class Enemy : MonoBehaviour
{
    // 创建静态变量用来存储已经修好的机器人数量
    public static int fixedNum = 0;

    // 敌人修复完成
    public void enemyFixed()
    {
        fixedNum++;
        if(fixedNum == 36) {
            NPCDialog.missionComplete = true;
        }
    }
{

四、在任务完成时添加音效提醒

1. 创建机器人全部修复完成的音效

public class Enemy : MonoBehaviour
{
    // 创建机器人全部修复完成音效
    public AudioClip missionCompleteSound;
}

2. 在机器人修复完成时判断:若机器人全部修复完成,则播放任务完成的音效;否则播放机器人修复完成的音效

public class Enemy : MonoBehaviour
{
    // 创建机器人全部修复完成音效
    public AudioClip missionCompleteSound;

    // 播放敌人修复完成音效
    private void playFixSound()
    {
        if(NPCDialog.missionComplete) {
            audioSource.PlayOneShot(missionCompleteSound, 80);
        } else {
            audioSource.PlayOneShot(enemyFixSound, 80);
        }
        Invoke("stopAudioSourcePlay", 1.0f);
    }
}

3. 将任务完成音效赋值到missionComplete

 

        本章完。感谢阅读! 

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

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

相关文章

EtherCAT笔记(六)—— 分布时钟之一

目录 1. 分布时钟的功能 2. 分布时钟涉及到的概念 2.1 系统时间 2.2 参考时钟 & 从时钟 2.3 主站时钟 2.4 本地时钟 2.4.1 本地时钟的初始偏移量 2.4.2 本地时钟的时钟漂移 2.5 本地系统时间 2.6 传输延时 人们理解知识的一个阻碍就是那些从没见过的概念和这些概念的随意使…

Apache Doris:下一代实时数据仓库

Apache Doris&#xff1a;下一代实时数据仓库 概念架构设计快速的原因——其性能的架构设计、特性和机制基于成本的优化器面向列的数据库的快速点查询数据摄取数据更新服务可用性和数据可靠性跨集群复制多租户管理便于使用半结构化数据分析据仓一体分层存储 词条诞生 概念 Apa…

在攻防演练中遇到的一个“有马蜂的蜜罐”

在攻防演练中遇到的一个“有马蜂的蜜罐” 有趣的结论&#xff0c;请一路看到文章结尾 在前几天的攻防演练中&#xff0c;我跟队友的气氛氛围都很好&#xff0c;有说有笑&#xff0c;恐怕也是全场话最多、笑最多的队伍了。 也是因为我们遇到了许多相当有趣的事情&#xff0c;其…

usbserver工程师手记(二)设置定时任务

概述 部分银行ukey 长时间不使用后会导致休眠&#xff0c;出现虽然有连接&#xff0c;但是读不到证书&#xff0c;可以用定时重置端口的办法&#xff0c;调用接口 http://ip/usb_server/reset_port,参数为 {"port":"B5-1-2","vid_pid":"09…

2023年高教杯数学建模2023B题解析(仅从代码角度出发)

前言 最近博主正在和队友准备九月的数学建模,在做往年的题目&#xff0c;博主主要是负责数据处理&#xff0c;运算以及可视化&#xff0c;这里分享一下自己部分的工作,相关题目以及下面所涉及的代码后续我会作为资源上传 问题求解 第一题 第一题的思路主要如下&#xff1a;…

【雷达原理】数字波束形成(DBF)

目录 一、数字波束形成1.1 DBF原理1.2 工程应用实现方式1.2.1 预先存储权矢量1.2.2 利用DFT/FFT实现DBF 二、DBF应用2.1 通道间相干积累2.2 测量目标角度 三、MATLAB代码 一、数字波束形成 数字波束形成&#xff08;Digital Beam Forming&#xff0c;DBF) 技术&#xff0c;是针…

大数据Spark--核心编程

文章目录 IDEA 配置Spark环境增加scala插件创建Maven项目&#xff0c;配置pom.xml配置log4j.properties Spark 三大数据结构RDDRDD概念核心属性执行原理基础编程RDD创建RDD 并行度与分区RDD转换算子Value类型双Value类型Key - Value类型reduceByKey和groupByKey的区别&#xff…

为什么说java只要还是泛型擦除,就不要吹自己高性能?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;关于“Java只要还是泛型擦除…

内存迎来革命性升级,只装一条就能组成双通道

相信用过台式机的同学或多或少都遇到过一个情况&#xff0c;那就是按下开机键后&#xff0c;除了显示器不亮&#xff0c;哪儿都亮。 拿着自己的故障满世界发帖求助&#xff0c;得到最多的回答就是&#xff0c;断电拔下内存用橡皮擦擦擦金手指再装回。而这样的操作确实能解决大部…

漏洞挖掘 | 记某证书站任意账号接管漏洞

下文中所述漏洞已修复 在前段时间的漏洞挖掘中&#xff0c;上了某证书站&#xff0c;打点的一处逻辑漏洞 访问某一站点&#xff0c;发现了一处登录页 点击登录按钮之后&#xff0c;发现该站点大概率是自写站点&#xff0c;存在逻辑漏洞的可能性大大增大&#xff0c;利用前期信…

西门子S7-1500PLC与ABB变频器通讯及控制程序

文章目录 前言一、硬件组态二、编写通讯程序1.新建数据类型“ABB_UDT”2.新建DB块“变频DB”3.新建FC块“轴流风机” 二、编写模拟量转换程序1.编写速度设定程序2.编写速度反馈程序3.编写电流反馈程序4.编写力矩反馈程序 三、编写启/停控制程序总结 前言 本文基于某实际项目&a…

Linux和Windows配置公钥到服务器上【免密登录/传输文件】

文章目录 1.Windows配置公钥到服务器上1.1.生成SSH密钥对&#xff08;如果尚未生成&#xff09;&#xff1a;1.2.复制公钥到远程服务器&#xff1a;1.3.手动复制公钥到远程服务器&#xff1a;1.4.测试SSH连接&#xff1a; 2.Linux配置公钥到服务器上2.1生成SSH密钥对&#xff0…

开发个人Go-ChatGPT--6 OpenUI

开发个人Go-ChatGPT–6 OpenUI Open-webui Open WebUI 是一种可扩展、功能丰富且用户友好的自托管 WebUI&#xff0c;旨在完全离线运行。它支持各种 LLM 运行器&#xff0c;包括 Ollama 和 OpenAI 兼容的 API。 功能 由于总所周知的原由&#xff0c;OpenAI 的接口需要密钥才…

手撸俄罗斯方块(五)——游戏主题

手撸俄罗斯方块&#xff08;五&#xff09;——游戏主题 当确定游戏载体&#xff08;如控制台&#xff09;后&#xff0c;界面将呈现出来。但是游戏的背景色、方块的颜色、方框颜色都应该支持扩展。 当前游戏也是如此&#xff0c;引入了 Theme 的概念&#xff0c;支持主题的扩…

iOS UITableView自带滑动手势和父视图添加滑动手势冲突响应机制探索

场景 我们有时候会遇到这样的一个交互场景&#xff1a;我们有一个UITableView 放在一个弹窗中&#xff0c;这个弹窗可以通过滑动进行展示和消失&#xff08;跟手滑动的方式&#xff09;&#xff0c;然后这个UITableView放在弹窗中&#xff0c;并且可以滚动&#xff0c;展示一些…

成都晨持绪:抖音电商带货需要交钱吗

在抖音这个充满创意与可能的平台上&#xff0c;电商带货成为了一种新兴而又时尚的职业。然而&#xff0c;伴随着无数的点击与转发&#xff0c;有一个问题始终萦绕在人们心头——抖音电商带货需要交钱吗? 如画卷展开&#xff0c;抖音平台以其独特的算法和庞大的用户基础构建了一…

spark shuffle写操作——UnsafeShuffleWriter

PackedRecordPointer 使用long类型packedRecordPointer存储数据。 数据结构为&#xff1a;[24 bit partition number][13 bit memory page number][27 bit offset in page] LongArray LongArray不同于java中long数组。LongArray可以使用堆内内存也可以使用堆外内存。 Memor…

构建高精度室内定位导航系统,从3DGIS到AI路径规划的全面解析

室内定位导航系统是一种利用多种技术实现室内精准定位和导航的智能系统&#xff0c;即便没有卫星信号&#xff0c;也能实现精准导航。维小帮室内定位导航系统是基于自研的地图引擎与先进定位技术&#xff0c;结合智能路径规划算法&#xff0c;解决了人们在大型复杂室内场所最后…

python怎么判断字符串以什么结尾

在python编辑器中新建一个data.py。 写上自己的注释。 然后新建一个变量testname。 利用endswith来判断字符串是不是以“ar”结尾。 将结果打印出来。 选择“run”->“run”。 运行该程序&#xff0c;如果是&#xff0c;就会返回true。

深度探讨:无法恢复主文件表的挑战与解决方案

在数字时代&#xff0c;数据的安全与恢复成为了不容忽视的重要议题。其中&#xff0c;主文件表&#xff08;Master File Table, MFT&#xff09;作为文件系统的核心组件&#xff0c;一旦受损或无法恢复&#xff0c;将直接导致数据访问的障碍&#xff0c;给用户带来巨大困扰。本…