[TUTORIAL] Systema Simples de Quest
Página 1 de 1
[TUTORIAL] Systema Simples de Quest
Olá pessoal feliz 2022 , vim trazer um tutorial que fiz recentemente no meu canal ,espero que ajude.
Script do GoalSm responsavel pela base de qualquer programação que vc queira implementar nos objetivos de sua Quest.
Script do Goal responsável por executar as ações do GoalSm e facilitar a criação de quests customizadas.
Script Quest responsável por gerenciar os Objetivos e a própria quest.
Script do ColectQuest que é um script que herda o GoalSM ,assim executando um objetivo ,nesse caso verificar se coletou todos os objetos.
Script do Destoyme um codigo simples pra destruir o objeto que vai ser coletado ,esse eu acho que nem precisava colocar aqui ,mas pra ficar completo.
Script do GoalSm responsavel pela base de qualquer programação que vc queira implementar nos objetivos de sua Quest.
- Código:
using UnityEngine;
public interface GoalSM
{
void PrepareGoal(Transform[] objs);
bool GoalUpdate(Transform[] objs);
void QuitGoal(Transform[] objs);
}
Script do Goal responsável por executar as ações do GoalSm e facilitar a criação de quests customizadas.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class Goal
{
[TextArea(2,4)]
public string description;
public bool isComplete;
public Transform goalActT;
public GoalSM goalAct;
public Transform[] objects;
public void Init() {
goalAct = goalActT.GetComponent<GoalSM>();
goalAct.PrepareGoal(objects);
}
public void Gupdate() {
if( goalAct.GoalUpdate(objects) ){
goalAct.QuitGoal(objects);
isComplete = true;
}
}
}
Script Quest responsável por gerenciar os Objetivos e a própria quest.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Quest : MonoBehaviour
{
public string questName;
public bool complete;
public int indice;
int indiceGoalMax;
public List<Goal> goals;
private void Start() {
/*
foreach (var g in goals)
{
if(g != null){
g.Init();
}
else
{
g.isComplete = true;
}
}
*/
if(goals[indice] != null){
goals[indice].Init();
}
else
{
goals[indice].isComplete = true;
}
}
private void Update() {
if(complete){
return;
}
/*
foreach (var g in goals)
{
if(g != null && g.goalAct != null){
g.Gupdate();
}
else
{
g.isComplete = true;
}
}
*/
if(goals[indice] != null){
if(goals[indice].isComplete == true){
indice ++;
indice = Mathf.Clamp( indice, 0, goals.Count -1 );
goals[indice].Init();
return;
}
goals[indice].Gupdate();
}
if(CheckAllGoalsComplete()){
complete = true;
}
}
bool CheckAllGoalsComplete(){
bool result = false;
foreach (var g in goals)
{
if(g.isComplete){
result = true;
}
else
{
result = false;
break;
}
}
return result;
}
}
Script do ColectQuest que é um script que herda o GoalSM ,assim executando um objetivo ,nesse caso verificar se coletou todos os objetos.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ColectQuest : MonoBehaviour ,GoalSM
{
public void PrepareGoal(Transform[] objs){
foreach (var o in objs)
{
o.gameObject.SetActive(true);
}
}
public bool GoalUpdate(Transform[] objs){
bool result = false;
foreach (var o in objs)
{
if(o == null){
result = true;
}
else
{
result = false;
break;
}
}
return result;
}
public void QuitGoal(Transform[] objs){
}
}
Script do Destoyme um codigo simples pra destruir o objeto que vai ser coletado ,esse eu acho que nem precisava colocar aqui ,mas pra ficar completo.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Destroyme : MonoBehaviour
{
private void OnTriggerEnter(Collider other) {
if(other.tag == "Player"){
Destroy(this.gameObject);
}
}
}
hendrick22- MembroAvançado
- PONTOS : 2480
REPUTAÇÃO : 57
Idade : 25
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Como spawnar inimigos [Tutorial simples]
» [TUTORIAL] IA Simples
» [TUTORIAL] Lanterna Simples.
» [TUTORIAL] AI simples inimiga
» [TUTORIAL] IA Simples Parte 2 (Atirar)
» [TUTORIAL] IA Simples
» [TUTORIAL] Lanterna Simples.
» [TUTORIAL] AI simples inimiga
» [TUTORIAL] IA Simples Parte 2 (Atirar)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos