一、接受任务
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
本章完。感谢阅读!