Acessar Outro Script C#
3 participantes
Página 1 de 1
Acessar Outro Script C#
E aee Galera!
Bom Ontem Tive uma Luz no Fim do Túnel, o weslleyFx Bolou um Script pra mim de Construção em Estágios, Funciona Muito Bem :D
mas pintou uma Dúvida, porque estou usando o Sistema de Vida Fome Sede do Marcos, e criei um Novo Item nos Consumiveis (Madeira)
Sistema de Fome Sede Vida esse Script Acessa o Script dos Itens Coletáveis e Vice Versa:
tá tudo Normal, Derrubo Arvore, Dropo Madeira, a Madeira Aumenta no Inventario tudo Certo, mas agora quero Acessar o Script do
Sistema de Vida Fome Sede para Usar essa Madeira na Construção do meu Poço, Casas, e outras Coisas do jogo, Depois add Pedras, ferros etc...
Script Sistema de Construção em Estágios, preciso Acessar o Script do Sistema de Fome Sede nesse Script Aqui:
Como ta Ficando
Tentei de Tudo mas sem Sucesso, Procurei na Web Tentei Fazer Sozinho de Varias formas e Nada!
Alguma Luz?
Agradeço desde já!
Bom Ontem Tive uma Luz no Fim do Túnel, o weslleyFx Bolou um Script pra mim de Construção em Estágios, Funciona Muito Bem :D
mas pintou uma Dúvida, porque estou usando o Sistema de Vida Fome Sede do Marcos, e criei um Novo Item nos Consumiveis (Madeira)
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Coletaveis : MonoBehaviour{
public enum TIPO{
Comida,
Bebida,
Vida,
Energia,
Madeira
}
public TIPO TipoDoItem;
[Range(1,500)]
public float QuantoRepor = 50;
public AudioClip Comendo;
public AudioClip Bebendo;
public AudioClip Vida;
private GameObject Jogador;
void Start (){
Jogador = GameObject.FindWithTag ("Player");
}
void OnTriggerStay(Collider other){
if (Input.GetKeyDown ("e") && other.gameObject == Jogador.gameObject) {
switch (TipoDoItem) {
case TIPO.Comida:
Jogador.GetComponent<Controle> ().FomeAtual += QuantoRepor;
GetComponent<AudioSource> ().PlayOneShot (Comendo);
Destroy (gameObject);
break;
case TIPO.Bebida:
Jogador.GetComponent<Controle> ().SedeAtual += QuantoRepor;
GetComponent<AudioSource> ().PlayOneShot (Bebendo);
Destroy (gameObject);
break;
case TIPO.Vida:
Jogador.GetComponent<Controle> ().VidaAtual += QuantoRepor;
GetComponent<AudioSource> ().PlayOneShot (Vida);
Destroy (gameObject);
break;
case TIPO.Energia:
Jogador.GetComponent<Controle> ().EstaminaAtual += QuantoRepor;
Destroy (gameObject);
break;
case TIPO.Madeira:
Jogador.GetComponent<Controle> ().MadeiraAtual += QuantoRepor;
Destroy (gameObject);
break;
}
}
}
Sistema de Fome Sede Vida esse Script Acessa o Script dos Itens Coletáveis e Vice Versa:
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityStandardAssets.Characters.FirstPerson;
public class Controle : MonoBehaviour {
private CharacterController controlador;
private GameObject Jogador;
private float UltimaPosicaoEmY,DistanciaDeQueda;
public AudioClip PerdeVida;
[Range(1,15)]
public float AlturaQueda = 4,DanoPorMetro = 5 ;
public Image BarraVida, BarraEstamina, BarraFome, BarraSede, BarraMadeira;
[Range(1,1000)]
public float VidaCheia = 100, EstaminaCheia = 100, FomeCheia = 100, SedeCheia = 100, MadeiraCheia = 100, velocidadeEstamina = 250;
[HideInInspector]
public float VidaAtual, EstaminaAtual, FomeAtual, SedeAtual, MadeiraAtual;
private bool semEstamina = false;
private float cronometroFome,cronometroSede,velocidadeCaminhando,velocidadeCorrendo;
void Start (){
controlador = GetComponent <CharacterController> ();
VidaAtual = VidaCheia;
EstaminaAtual = EstaminaCheia;
FomeAtual = FomeCheia;
SedeAtual = SedeCheia;
MadeiraAtual = 10;
Jogador = GameObject.FindWithTag ("Player");
velocidadeCaminhando = Jogador.GetComponent<FirstPersonController> ().m_WalkSpeed;
velocidadeCorrendo = Jogador.GetComponent<FirstPersonController> ().m_RunSpeed;
}
public void Update (){
SistemaDeQueda ();
SistemaDeVida ();
SistemaDeEstamina ();
SistemaDeFome ();
SistemaDeSede ();
SistemaDeMadeiras ();
AplicarBarras ();
}
void SistemaDeQueda(){
if (UltimaPosicaoEmY > Jogador.transform.position.y && controlador.velocity.y < 0) {
DistanciaDeQueda += UltimaPosicaoEmY-Jogador.transform.position.y;
}
UltimaPosicaoEmY = Jogador.transform.position.y;
if (DistanciaDeQueda >= AlturaQueda && controlador.isGrounded) {
VidaAtual = VidaAtual - DanoPorMetro*DistanciaDeQueda;
GetComponent<AudioSource> ().PlayOneShot (PerdeVida);
DistanciaDeQueda = 0;
UltimaPosicaoEmY = 0;
}
if (DistanciaDeQueda < AlturaQueda && controlador.isGrounded) {
DistanciaDeQueda = 0;
UltimaPosicaoEmY = 0;
}
}
void SistemaDeFome(){
FomeAtual -= Time.deltaTime;
if (FomeAtual >= FomeCheia) {
FomeAtual = FomeCheia;
}
if (FomeAtual <= 0) {
FomeAtual = 0;
cronometroFome += Time.deltaTime;
if (cronometroFome >= 3) {
VidaAtual -= (VidaCheia * 0.005f);
EstaminaAtual -= (EstaminaCheia * 0.1f);
cronometroFome = 0;
}
} else {
cronometroFome = 0;
}
}
void SistemaDeSede(){
SedeAtual -= Time.deltaTime;
if (SedeAtual >= SedeCheia) {
SedeAtual = SedeCheia;
}
if (SedeAtual <= 0) {
SedeAtual = 0;
cronometroSede += Time.deltaTime;
if (cronometroSede >= 3) {
EstaminaAtual -= (EstaminaCheia * 0.1f);
cronometroSede = 0;
}
} else {
cronometroSede = 0;
}
}
void SistemaDeEstamina(){
float multEuler = ((1/EstaminaCheia) * EstaminaAtual)*((1/FomeCheia) * FomeAtual);
if (EstaminaAtual >= EstaminaCheia) {
EstaminaAtual = EstaminaCheia;
} else {
EstaminaAtual += Time.deltaTime*(velocidadeEstamina/40)*Mathf.Pow(2.718f,multEuler);
}
if (EstaminaAtual <= 0) {
EstaminaAtual = 0;
Jogador.GetComponent<FirstPersonController> ().m_RunSpeed = velocidadeCaminhando;
semEstamina = true;
}
if (semEstamina == true && EstaminaAtual >= (EstaminaCheia * 0.15f)) {
Jogador.GetComponent<FirstPersonController> ().m_RunSpeed = velocidadeCorrendo;
semEstamina = false;
}
if (Input.GetKey (KeyCode.LeftShift) && semEstamina == false) {
EstaminaAtual -= Time.deltaTime*(velocidadeEstamina/15)*Mathf.Pow(2.718f,multEuler);
}
}
void SistemaDeVida(){
if (VidaAtual >= VidaCheia) {
VidaAtual = VidaCheia;
} else if (VidaAtual <= 0) {
VidaAtual = 0;
Morreu ();
}
}
public void SistemaDeMadeiras(){
if (MadeiraAtual >= MadeiraCheia) {
MadeiraAtual = MadeiraCheia;
}
}
void AplicarBarras(){
BarraVida.fillAmount = ((1/VidaCheia) * VidaAtual);
BarraEstamina.fillAmount = ((1/EstaminaCheia) * EstaminaAtual);
BarraFome.fillAmount = ((1/FomeCheia) * FomeAtual);
BarraSede.fillAmount = ((1/SedeCheia) * SedeAtual);
BarraMadeira.fillAmount = ((1/MadeiraCheia) * MadeiraAtual);
}
void Morreu (){
Debug.Log("Morreu por falta de comida");
}
tá tudo Normal, Derrubo Arvore, Dropo Madeira, a Madeira Aumenta no Inventario tudo Certo, mas agora quero Acessar o Script do
Sistema de Vida Fome Sede para Usar essa Madeira na Construção do meu Poço, Casas, e outras Coisas do jogo, Depois add Pedras, ferros etc...
Script Sistema de Construção em Estágios, preciso Acessar o Script do Sistema de Fome Sede nesse Script Aqui:
- Código:
using UnityEngine;
using System.Collections;
using UnityStandardAssets.Characters.FirstPerson;
public class Construir : MonoBehaviour{
private GameObject Controle;
public GameObject[] prefabs;
public float progress;
public float valueNewState;
public int objectindex;
public AudioClip[] SonsConstruir;
public AudioClip Pronto;
void Start ()
{
}
void OnTriggerStay (){
if (Input.GetMouseButtonDown(0) && progress < 100) // Aqui vai ter a Condição de Usar as Madeiras que Tenho Disponiveis!
if (MadeiraAtual >0) { // se a Madeira for Maior que 0 ele Constroi senão Nada Feito
progress += Random.Range(1, 5);
AudioRandom ();
MadeiraAtual = MadeiraAtual - 1; // Desconta a Madeira Conforme for Construindo
}
if (progress >= valueNewState)
{
StateBuild();
valueNewState += valueNewState;
}
progress = Mathf.Clamp(progress, 0,100);
objectindex = Mathf.Clamp(objectindex, 0, prefabs.Length);
}
private void StateBuild()
{
if (transform.childCount > 0)
{
Destroy(transform.GetChild(0).gameObject);
}
GetComponent<AudioSource> ().PlayOneShot (Pronto);
GameObject newMesh = Instantiate(prefabs[objectindex], transform.position, transform.rotation) as GameObject;
newMesh.transform.parent = transform;
objectindex++;
}
void AudioRandom (){
if (GetComponent<AudioSource>().isPlaying) return;
GetComponent<AudioSource>().clip = SonsConstruir[Random.Range(0, SonsConstruir.Length)];
GetComponent<AudioSource>().Play();
}
}
Como ta Ficando
Tentei de Tudo mas sem Sucesso, Procurei na Web Tentei Fazer Sozinho de Varias formas e Nada!
Alguma Luz?
Agradeço desde já!
Re: Acessar Outro Script C#
bom vc pode fazer uma variável do tipo Controle que no caso e a classe responsável do controle logo apos vc vai ter que procurar o objecto que contem a classe
ficara asim
logo vc pode acessar os componente do script (classe)
ex :
ficara asim
- Código:
private Controle controle;
void Start()
{
controle = FindObjectOfType(typeof(Controle)) as Controle;
}
logo vc pode acessar os componente do script (classe)
ex :
- Código:
if (Input.GetMouseButtonDown(0) && progress < 100)
if (controle.MadeiraAtual > 0)
{
progress += Random.Range(1, 5);
AudioRandom();
controle.MadeiraAtual -= 1;
}
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Acessar Outro Script C#
:DAndyShow escreveu:Voce é o Cara Amigo!
Funcionou Certinho...Obrigado de Novo :D
Abração!
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Acessar Outro Script C#
mas ai para o poço ficar assim ele esta construído ja finalizado
Chilinger- MembroAvançado
- PONTOS : 4091
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Tópicos semelhantes
» Como acessar variável de um script usando outro script (Entre e entenda).
» Acessar funçoes de outro script?
» Acessar dicioario de dados em outro scrpt
» [RESOLVIDO] Acessar Variáveis De outro Script
» COMO DESATIVAR O SCRIPT "FisrtPersonController" DO PLAYER ATRAVÉS DE OUTRO SCRIPT
» Acessar funçoes de outro script?
» Acessar dicioario de dados em outro scrpt
» [RESOLVIDO] Acessar Variáveis De outro Script
» COMO DESATIVAR O SCRIPT "FisrtPersonController" DO PLAYER ATRAVÉS DE OUTRO SCRIPT
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos