Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Срочно помогите с юнити

Саша Лебедев Ученик (85), на голосовании 6 месяцев назад
я создал квест и посоле диалога с нпс у меня наверху появляеться надпись найти дверь и когда я её нахожу мне надо что бы она пропала помогите как это сдлеать вот коды которые у меня есть
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Quest_Event : MonoBehaviour
{
public bool Quest1;
public GameObject Text1;
// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{
if(Quest1 == true){
Text1.SetActive (true);
}else{
Text1.SetActive (false);
}
}
}
это самого квеста код
public class NPC_Task : MonoBehaviour
{
public bool EndDialog;
public GameObject Dialog1;
public Quest_Event QE;
// Start is called before the first frame update
void Start()
{
Dialog1.SetActive(false); // Диалог должен быть выключен с самого начала
}

// Update is called once per frame
void Update()
{
if (EndDialog)
{
Time.timeScale = 1;
Dialog1.SetActive(false);
QE.Quest 1 = true;
}
}
void OnTriggerEnter(Collider col)
{
if (col.tag == "Player")
{
Time.timeScale = 0;
Dialog1.SetActive(true);
}
}
}
код диалога с нпс
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
public GameObject Text1;
public GameObject Text2;
private bool isText1 = true;
public NPC_Task npc_taskScript;

// Start is called before the first frame update
void Start()
{
Text1.SetActive(true);
Text2.SetActive(false);
}

// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0) && npc_taskScript.Dialog1.activeSelf)
{
if (isText1 == true)
{
isText1 = false;
}
else
{
isText1 = true;
npc_taskScript.EndDialog = true;
}
}
if (isText1 == true)
{
Text1.SetActive(true);
Text2.SetActive(false);
}
else
{
Text1.SetActive(false);
Text2.SetActive(true);
}
}
}
это код смены тексат то что гвоарит нпс поомгите пж мне до 23 00 надо очееень
Голосование за лучший ответ
Александр С Знаток (368) 7 месяцев назад
Чтобы сделать так, чтобы надпись "найти дверь" пропадала после того, как вы её нашли, вам нужно сделать несколько изменений в вашем скрипте Quest_Event:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Quest_Event : MonoBehaviour
{
public bool Quest1;
public GameObject Text1;
public GameObject Door; // Добавляем переменную для двери

void Start()
{
Text1.SetActive(false); // Скрываем надпись в начале
}

void Update()
{
if (Quest1 == true)
{
Text1.SetActive(true);
}
else
{
Text1.SetActive(false);
}
}

// Функция для проверки нахождения двери
public void CheckDoor()
{
if (Door != null)
{
Destroy(Door); // Удаляем дверь
}
}
}
Затем в вашем скрипте NPC_Task, после того, как вы нашли дверь, вызывайте функцию CheckDoor() из скрипта Quest_Event:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NPC_Task : MonoBehaviour
{
public bool EndDialog;
public GameObject Dialog1;
public Quest_Event QE;

void Start()
{
Dialog1.SetActive(false);
}

void Update()
{
if (EndDialog)
{
Time.timeScale = 1;
Dialog1.SetActive(false);
QE.Quest 1 = true;
}
}

void OnTriggerEnter(Collider col)
{
if (col.tag == "Player")
{
Time.timeScale = 0;
Dialog1.SetActive(true);
}
}

// Вызываем эту функцию, когда игрок нашел дверь
public void FoundDoor()
{
QE.CheckDoor();
}
}
Теперь вам нужно вызвать функцию FoundDoor() из вашего скрипта, когда игрок находит дверь. Это должно привести к удалению двери и скрытию надписи "найти дверь".
Похожие вопросы