【Unity2D 2022:NPC】制作任務系統

一、接受任務

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.pswp.cn/web/43158.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43158.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43158.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python學習-錯誤與異常

代碼是人的邏輯思維的具體體現&#xff0c;因為沒有一個人的邏輯思維是完美無缺的&#xff0c;所以人在編寫代碼時必然會出現各種錯誤。既然錯誤或多或少都會發生&#xff0c;那么如何捕捉錯誤&#xff0c;并且捕捉到錯誤后要如何處理&#xff0c;就顯得很重要。 語法錯誤 Py…

SPI通信協議和W25Q64

前言&#xff1a; STM32中的通信接口&#xff1a; UART 單總線 IIC SPI CAN 1. SPI FLASH W25Q64的關系 SPI:一種通信接口&#xff0c;可以用于和搭載SPI接口的設備通信 FLASH:是一種掉電不丟失的存儲 -- 手機8256G的256 單片機 64K512K的512 芯片內部flash&…

STM32 GPIO的工作原理

STM32的GPIO管腳有下面8種可能的配置:&#xff08;4輸入 2 輸出 2 復用輸出) &#xff08;1&#xff09;浮空輸入_IN_FLOATING 在上圖上&#xff0c;陰影的部分處于不工作狀態&#xff0c;尤其是下半部分的輸出電路&#xff0c;實際上是與端口處于隔離狀態。黃色的高亮部分顯示…

響應式布局下關于gird柵格布局的一些構思

1、傳列數&#xff0c;根據列數計算元素容器寬度 好處是子元素可以寫百分比寬度&#xff0c;不用固定某一種寬度&#xff0c;反正知道列數通過計算間距就能得到外層容器的寬度。 舉個簡單的例子&#xff1a; &#xff08;ps:以下用例皆在html中去模擬&#xff0c;就不另外起r…

Python 獲取 SQL 指紋和 HASH 值

前言 本文介紹一個提取 SQL 指紋的方法&#xff0c;就是將 SQL 語句的條件轉換為 &#xff1f;可用于脫敏和 SQL 聚類分析的場景。 1. 工具安裝 這里用到的工具&#xff0c;就是 pt 工具集中的 pt-fingerprint 含在 Percona Toolkit 中&#xff0c;安裝方法可參考 Percona T…

python7:裝飾器

目錄 1.調用外部程序os.system-阻塞式調用subprocess-python中的模塊 2.裝飾器前戲作用域&#xff08;1&#xff09;全局和局部-就近原則&#xff08;2&#xff09;嵌套作用域&#xff08;3&#xff09;內置作用域、變量 高階函數&#xff1a;函數是最高級的對象&#xff08;1&…

海外媒體投稿:5個軟文代發經典案例,教大家獲得突破

隨著互聯網的飛速發展&#xff0c;軟文代發成為一種高效的推廣方法。下面我們就詳細介紹五個成功軟文代發推廣實例&#xff0c;致力于幫助讀者把握有關方法&#xff0c;完成突破。 第一實例&#xff1a;社交網絡散播在如今社交媒體時代&#xff0c;軟文代發能夠通過社交平臺迅速…

nodejs實現:支付寶訂單查詢

nodejs實現&#xff1a;支付寶訂單查詢&#xff1b; 原生http請求&#xff0c;不使用三方庫&#xff1b; 代碼如下&#xff1a; const https require(https); const crypto require(crypto); const querystring require(querystring);// 支付寶公共參數 const PRIVATE_KE…

[C++] 輕熟類和對象

類的定義 格式規范 class為定義類的關鍵字&#xff0c;后有類名&#xff0c;類的主體存于{}中&#xff1b;類定義結束時后面的分號不能省略&#xff1b;類體的內容成為類的成員&#xff0c;類中的變量成為成員變量&#xff0c;函數成為方法或成員函數&#xff1b;C兼容C語言的…

微軟 Edge 瀏覽器全解析

微軟 Edge 是微軟推出的一個現代化瀏覽器,繼承了 Internet Explorer(IE)的部分功能,但在速度、安全性和兼容性方面做出了很大改進。下面是對微軟 Edge 瀏覽器的詳細解析,包括其特點、安裝、配置和常見問題的解答。 微軟 Edge 瀏覽器的特點 基于 Chromium 內核 Edge 瀏覽…

SpringBoot配置flyway

背景 目前我們的項目代碼都會交由Git、SVN等版本管理工具進行管理&#xff0c;但是我們的sql腳本&#xff0c;尤其是各類ddl腳本并沒有進行版本的管理&#xff08;python的web框架Django默認就提供了類似的工具&#xff0c;從一開始就鼓勵開發者通過版本管理的方式進行數據庫的…

C++中的多重繼承和虛繼承:橫向繼承、縱向繼承和聯合繼承;虛繼承

多重繼承 A.橫向多重繼承&#xff1a; B.縱向多重繼承&#xff1a; C.聯合多重繼承&#xff1a; 因為 single 和 waiter 都繼承了一個 worker 組件&#xff0c;因此 SingingWaiter 將包含兩個 worker 組件&#xff0c;那么將派生類對象的地址賦給基類指針將出現二義性 那么如何…

idea http client插件上傳文件,并忽略https證書驗證

上傳文件 ### 傳臨時素材 圖片 POST https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token{{access_token}}&typeimage Content-Type: multipart/form-data; boundary----WebKitFormBoundarywKUX3Xj6aL5Wssnb------WebKitFormBoundarywKUX3Xj6aL5Wssnb Conten…

從Helm到 Operator:Kubernetes應用管理的進化

&#x1f9f0;Helm 的作用 在開始前需要先對 kubernetes Operator 有個簡單的認識。 以為我們在編寫部署一些簡單 Deployment 的時候只需要自己編寫一個 yaml 文件然后 kubectl apply 即可。 apiVersion: apps/v1 kind: Deployment metadata: labels: app: k8s-combat …

去水印小程序源碼修復版-前端后端內置接口+第三方接口

去水印小程序源碼&#xff0c;前端后端&#xff0c;內置接口第三方接口&#xff0c; 修復數據庫賬號密碼錯誤問題&#xff0c;內置接口支持替換第三方接口&#xff0c; 文件挺全的&#xff0c;可以添加流量主代碼&#xff0c;搭建需要準備一臺服務器&#xff0c;備案域名和http…

農牧行業CRM洞察:打造營、銷、服一體化數字營銷平臺

01、行業應用背景 保持企業活力&#xff0c;支撐業務單元協調發展&#xff0c;穩定核心產品競爭力&#xff0c;將成為農牧行業企業數字化、數智化建設的指導方向。 積極發揮數據在生產、流通、消費各個環節的決策支撐&#xff0c;為農牧企業特別是多業態集團型企業&#xff0…

JVM:類的生命周期

文章目錄 一、介紹二、加載階段三、連接階段1、驗證階段2、準備階段3、解析階段 四、初始化階段 一、介紹 類的生命周期描述了一個類加載、連接&#xff08;驗證、準備和解析&#xff09;、初始化、使用、卸載的整個過程。 二、加載階段 加載&#xff08;Loading&#xff09…

全棧業務開發入門——登錄業務接口

業務已上傳則資源 實現登錄業務的前后端聯調&#xff0c;前端點擊登錄按鈕向后端發送一個請求&#xff0c;后端調用接口向前端響應結果 效果如下&#xff1a; 設計環境&#xff1a;springbootmybatisvue3axios 一.前端設計 1.基于vue3腳手架創建項目&#xff0c;搭建項目結構…

LAZYNVIM學習使用筆記

文章目錄 1. 前言VIM的模式快捷鍵參考 1. 前言 習慣使用vscode進行代碼編輯&#xff0c;無意中刷到lazynvim&#xff0c;感覺功能強大&#xff0c;于是下載、安裝&#xff0c;學習使用一下&#xff0c;本篇主要記錄學習使用lazynvim的一些要點&#xff0c;防止遺忘。 持續更新…

帝特(DTECH)USB轉RS485/422串口線在Ubuntu系統中的安裝

因為測試需要&#xff0c;買了一根帝特&#xff08;DTECH&#xff09;USB轉RS485/422串口線&#xff0c;今天測試了一下在Ubuntu 22.04系統上的使用。帝特的網站上提供了驅動程序&#xff0c;下載以后發現接口芯片是CP2102&#xff0c;廠商只提供了Linux內核2.6和3.x版本的驅動…