Continuing a Dialogue
Hey Guys,
I'm trying to write a script to control the conversation between my player and an NPC in my game. I've been following one of Jimmy Vegas' tutorials on Youtube, but I drifted from his course and his videos haven't touched on this topic yet.
In my script below, when the player clicks onto the NPC's box collider, it displays my TextBox along with the message and then hides them when the player clicks on the collider again. That all works fine. The part that i'm having trouble with is the fact that the method i'm using is good for one message, but if I want to have an extended conversation (like gathering information for the quest you're about to start) then I need a way to be able to continue the conversation past a single chat bubble.
At first I tried doing an if statement within the if statement of my OnMouseDown function, but obviously that wont work because the function is only called when clicked. so I created a talk function and decided to just call that instead. However, once again, it's only good for one chat bubble.
After trying a few different methods, I thought maybe using a boolean variable would be better. Makes sense, if the chat bubble is true, and the player hits this button then preform this task. but I can't figure out how to set the parameter for a boolean variable within the if statement.
Overall, i'm pretty new to coding. I have been working for with C# in the past, but I thought i'd give JS a try, and so far I actually kind of like it. it's less specific, almost. but anyway, if you guys know of any better ways to do this, or if you see the solution to my problem, I'd appreciate any information!
Thanks!
var MessageBox : GameObject;
var QuestBox : GameObject;
var QuestText : GameObject;
var QuestName : String;
var TextBoxOnCheck : int = 0;
function Update () {
talk ();
}
function OnMouseDown () {
if (TextBoxOnCheck == 0){
TextBoxOnCheck = 1;
}
else{
TextBoxOnCheck = 0;
MessageBox.SetActive (false);
}
}
function talk () {
if (TextBoxOnCheck == 1){
MessageBox.SetActive (true);
TextMessage = TextMessage;
TextMessage = "What do you want, human.";
TextBox.GetComponent.<Text>().text = TextMessage;
if (Input.GetButtonDown ("Continue")){
Debug.Log ("Next.");
MessageBox.SetActive (true);
TextMessage = "What? Some farmer wants his bag of grain back? I don't have time to deal with something like that!";
TextBox.GetComponent.<Text>().text = TextMessage;
if (Input.GetButtonDown ("Submit")){
TextMessage = "You see, we were on our way to meet a contact near the tavern accross the river when we ran into some trouble.";
}
}
}
}
Your answer
Follow this Question
Related Questions
How do I make a Bounce/trampoline script? 0 Answers
Performance Issue While Near One Specific Object 0 Answers
How can I change script type of that? ; 1 Answer
this script is missed up help? 1 Answer
Bracket error 1 Answer