Как исправить ошибку в диалоге
Когда я написал диалоги появилась такая проблема. когда я нажимаю space и W или A, то диалог снова открывается даже не находясь в триггере.
`
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class DialogMeneger : MonoBehaviour
{
public Text dialogueText;
public Text nameText;
public Animator boxAnim;
public Animator startAnim;
private Queue<string> sentences;
private void Start()
{
sentences = new Queue<string>();
}
public void StartDialogue(Dialog dialogue)
{
boxAnim.SetBool("boxOpen", true);
startAnim.SetBool("startOpen", false);
nameText.text = dialogue.name;
sentences.Clear();
foreach(string sentence in dialogue.sentences)
{
sentences.Enqueue(sentence);
}
DispalyNextsentence();
}
public void DispalyNextsentence()
{
if(sentences.Count == 0)
{
EndDialogue();
return;
}
string sentence = sentences.Dequeue();
StopAllCoroutines();
StartCoroutine(TypeSentence(sentence));
}
IEnumerator TypeSentence(string sentence)
{
dialogueText.text = "";
foreach(char letter in sentence.ToCharArray())
{
dialogueText.text += letter;
yield return null;
}
}
public void EndDialogue()
{
boxAnim.SetBool("boxOpen", false);
}
}
`
Ответы (1 шт):
Автор решения: Olegator36
→ Ссылка
Я понял, что когда персонаж входит в триггер, появляется возможность активации диалога.
Наверняка вы использовали метод OnTriggerEnter2D, но не предусмотрели выход из триггера методом OnTriggerExit2D.
Поэтому можно сказать, что проблема в другом скрипте, который активирует диалог.
Просто добавьте в него OnTriggerExit2D, в котором будет изменена переменная.
private bool dialogReady;
private void Update()
{
if(Input.GetKeyDown(KeyCode.Space) && dialogReady)
{
НачатьДиалог();
}
}
private void OnTriggerEnter2D(Collider2D other)
{
dialogReady = true;
}
private void OnTriggerExit2D(Collider2D other)
{
dialogReady = false;
}
Примерно так должен выглядеть кусок кода.