Kleiner Anfang für Dialog system
This commit is contained in:
145
Assets/RPGTALK/Demo/Scripts/DemoScript.cs
Normal file
145
Assets/RPGTALK/Demo/Scripts/DemoScript.cs
Normal file
@@ -0,0 +1,145 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.Events;
|
||||
//We might change the language in this script, so let's use the localization
|
||||
using RPGTALK.Localization;
|
||||
|
||||
public class DemoScript : MonoBehaviour {
|
||||
//The speed that our 'hero' will run
|
||||
public float speed = 10f;
|
||||
|
||||
//A few variables to move/animate this guy
|
||||
Rigidbody2D rigid;
|
||||
Animator anim;
|
||||
SpriteRenderer render;
|
||||
|
||||
//The user can move the hero?
|
||||
public bool controls;
|
||||
|
||||
//We will sometimes initialize the talk by script, so let's keep a instance of the current RPGTalk
|
||||
public RPGTalk rpgTalk;
|
||||
|
||||
//A canvas that will be shown asking for the player's name
|
||||
public GameObject askWho;
|
||||
//The input that the player should write its name
|
||||
public InputField myName;
|
||||
|
||||
//A wall to desappear and a particle to play when that happens
|
||||
public GameObject wall;
|
||||
public GameObject particle;
|
||||
|
||||
//We want to specify callbacks to different parts of the conversation
|
||||
public UnityEvent OnIKnowYou, OnByWall;
|
||||
|
||||
public RPGTalkLanguage languageEN, languagePT;
|
||||
|
||||
// Get the right references...
|
||||
void Start () {
|
||||
rigid = GetComponent<Rigidbody2D> ();
|
||||
anim = GetComponent<Animator> ();
|
||||
render = GetComponent<SpriteRenderer> ();
|
||||
//In the tagsDemo scene, we want to do something when we make a choice...
|
||||
rpgTalk.OnMadeChoice += OnMadeChoice;
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update () {
|
||||
|
||||
//skip the Talk to the end if the player hit Return
|
||||
if(Input.GetKeyDown(KeyCode.Return)){
|
||||
rpgTalk.EndTalk ();
|
||||
}
|
||||
|
||||
|
||||
|
||||
//if the user have the controls
|
||||
if (controls) {
|
||||
|
||||
//let's move around!
|
||||
float moveX = Input.GetAxis ("Horizontal");
|
||||
float moveY = Input.GetAxis ("Vertical");
|
||||
rigid.MovePosition (new Vector2 (transform.position.x + moveX * speed, transform.position.y + moveY * speed));
|
||||
|
||||
//Not the best way to do it but... change the animator
|
||||
if (moveX > 0) {
|
||||
anim.SetBool ("side", true);
|
||||
anim.SetBool ("top", false);
|
||||
anim.SetBool ("bottom", false);
|
||||
render.flipX = true;
|
||||
anim.speed = 1;
|
||||
} else if (moveX < 0) {
|
||||
anim.SetBool ("side", true);
|
||||
anim.SetBool ("top", false);
|
||||
anim.SetBool ("bottom", false);
|
||||
render.flipX = false;
|
||||
anim.speed = 1;
|
||||
} else if (moveY < 0) {
|
||||
anim.SetBool ("side", false);
|
||||
anim.SetBool ("top", false);
|
||||
anim.SetBool ("bottom", true);
|
||||
anim.speed = 1;
|
||||
} else if (moveY > 0) {
|
||||
anim.SetBool ("side", false);
|
||||
anim.SetBool ("top", true);
|
||||
anim.SetBool ("bottom", false);
|
||||
anim.speed = 1;
|
||||
} else {
|
||||
anim.speed = 0;
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
anim.speed = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//the player cant move
|
||||
public void CancelControls(){
|
||||
controls = false;
|
||||
}
|
||||
|
||||
//give back the controls to player
|
||||
public void GiveBackControls(){
|
||||
controls = true;
|
||||
}
|
||||
|
||||
//Open the screen to enter Player's name
|
||||
public void WhoAreYou(){
|
||||
askWho.SetActive(true);
|
||||
myName.Select ();
|
||||
}
|
||||
|
||||
//This callback will be called by RPGTalk after the first talk ends with the "FunnyGuy"
|
||||
//Here, we will change the value of a variable in RPGTalk to be the name of the player
|
||||
//And then, we will start a new talk =D
|
||||
public void IKnowYouNow(){
|
||||
askWho.SetActive (false);
|
||||
rpgTalk.variables [0].variableValue = myName.text;
|
||||
rpgTalk.NewTalk ("17", "25", rpgTalk.txtToParse, OnIKnowYou);
|
||||
}
|
||||
|
||||
//Let's get rid of that wall. This function was called by RPGTalk bacause the function above
|
||||
//setted it to be its callback.
|
||||
public void ByeWall(){
|
||||
wall.SetActive (false);
|
||||
particle.SetActive (true);
|
||||
Invoke ("FunnyGuyEnd", 2f);
|
||||
}
|
||||
|
||||
//After the wall exploded, let the Funny Guy end his talking
|
||||
void FunnyGuyEnd(){
|
||||
rpgTalk.NewTalk ("26", "29", rpgTalk.txtToParse, OnByWall);
|
||||
}
|
||||
|
||||
//In the TagsDemo scene, when we make a choice let's find out what we chose
|
||||
//and change the current language based on it
|
||||
void OnMadeChoice(string questionId, int choiceID){
|
||||
if (choiceID == 0) {
|
||||
LanguageSettings.actualLanguage = languageEN;
|
||||
} else {
|
||||
LanguageSettings.actualLanguage = languagePT;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
12
Assets/RPGTALK/Demo/Scripts/DemoScript.cs.meta
generated
Normal file
12
Assets/RPGTALK/Demo/Scripts/DemoScript.cs.meta
generated
Normal file
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 57c02ef0f0c8946d992841ee7416e7e9
|
||||
timeCreated: 1475719295
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user