Precisando de ajuda em um script
4 participantes
Página 1 de 1
Precisando de ajuda em um script
Ei gente, estou criando um jogo e tenho tido problemas ao tentar desenvolver um script para um elevador (chequei o tutorial do Marcus sobre criar um elevador na Unity e usei de base pro que eu precisava criar). O Script, mesmo sem "erros aparentes" acaba não funcionando. Se alguém puder me dar um help agradeço mt, segue o script abaixo.
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Remoting.Messaging;
using UnityEngine;
public class Teste : MonoBehaviour
{
public bool EstaSubindo, EstaDescendo, EstaParado, EstaPerto;
public Transform primeiroAndar, segundoAndar, terceiroAndar;
public Transform baseElevador;
public float speed = 3;
public GameObject botaoPrimeiro, botaoSegundo, botaoTerceiro;
public int botaoApertado;
void OnTriggerEnter()
{
EstaPerto = true;
}
void OnTriggerExit()
{
EstaPerto = false;
}
public void Movimenta(Transform destino, GameObject Botao)
{
transform.position = Vector3.MoveTowards(transform.position, destino.transform.position, speed * Time.deltaTime);
if (transform.position == destino.transform.position)
{
Botao.GetComponent<Renderer>().material.color = Color.red;
EstaParado = true;
}
else
{
Botao.GetComponent<Renderer>().material.color = Color.green;
EstaParado = false;
}
if (Input.GetKeyDown("e") && EstaPerto == true && EstaParado == true)
{
if (transform.position == destino.transform.position)
{
EstaSubindo = true;
EstaDescendo = false;
}
else if (transform.position == destino.transform.position)
{
EstaSubindo = false;
EstaDescendo = true;
}
}
}
public void Muda(Transform andarAtual)
{
if (botaoPrimeiro.GetComponent<Renderer>().material.color == Color.red)
{
botaoApertado = 1;
}
else if (botaoSegundo.GetComponent<Renderer>().material.color == Color.red)
{
botaoApertado = 2;
}
else if (botaoTerceiro.GetComponent<Renderer>().material.color == Color.red)
{
botaoApertado = 3;
}
switch (botaoApertado)
{
case 1:
Movimenta(primeiroAndar, botaoPrimeiro);
break;
case 2:
Movimenta(segundoAndar, botaoSegundo);
break;
case 3:
Movimenta(terceiroAndar, botaoTerceiro);
break;
}
}
}
Astolfokun- Iniciante
- PONTOS : 1730
REPUTAÇÃO : 0
Respeito as regras :
Re: Precisando de ajuda em um script
- Código:
using System;[size=14][/size]using System.Collections;[size=14][/size]using System.Collections.Generic;[size=14][/size]using System.Runtime.Remoting.Messaging;[size=14][/size]using UnityEngine;[size=14][/size][size=14][/size]public class Teste : MonoBehaviour[size=14][/size]{[size=14][/size] public bool EstaSubindo, EstaDescendo, EstaParado, EstaPerto;[size=14][/size] public Transform primeiroAndar, segundoAndar, terceiroAndar;[size=14][/size] public Transform baseElevador;[size=14][/size] public float speed = 3;[size=14][/size] public GameObject botaoPrimeiro, botaoSegundo, botaoTerceiro;[size=14][/size] public int botaoApertado;
[size=14][/size] void OnTriggerEnter(Collider other)[size=14][/size] {
if(other.tag -- "Player") { EstaPerto = true;
} }[size=14][/size] void OnTriggerExit(Collider other)[size=14][/size] {
if(other.tag -- "Player") {
EstaPerto = false;
} }[size=14][/size][size=14][/size][size=14][/size] public void Movimenta(Transform destino, GameObject Botao)[size=14][/size] {[size=14][/size] transform.position = Vector3.MoveTowards(transform.position, destino.transform.position, speed * Time.deltaTime);[size=14][/size] if (transform.position == destino.transform.position)[size=14][/size] {[size=14][/size] Botao.GetComponent<Renderer>().material.color = Color.red;[size=14][/size] EstaParado = true;[size=14][/size] }[size=14][/size] else[size=14][/size] {[size=14][/size] Botao.GetComponent<Renderer>().material.color = Color.green;[size=14][/size] EstaParado = false;[size=14][/size] }[size=14][/size] if (Input.GetKeyDown("e") && EstaPerto == true && EstaParado == true)[size=14][/size] {[size=14][/size] if (transform.position == destino.transform.position)[size=14][/size] {[size=14][/size] EstaSubindo = true;[size=14][/size] EstaDescendo = false;[size=14][/size] }[size=14][/size] else if (transform.position == destino.transform.position)[size=14][/size] {[size=14][/size] EstaSubindo = false;[size=14][/size] EstaDescendo = true;[size=14][/size] }[size=14][/size] }[size=14][/size] }[size=14][/size][size=14][/size] public void Muda(Transform andarAtual)[size=14][/size] {[size=14][/size] [size=14][/size][size=14][/size] if (botaoPrimeiro.GetComponent<Renderer>().material.color == Color.red)[size=14][/size] {[size=14][/size] botaoApertado = 1;[size=14][/size] }[size=14][/size] else if (botaoSegundo.GetComponent<Renderer>().material.color == Color.red)[size=14][/size] {[size=14][/size] botaoApertado = 2;[size=14][/size][size=14][/size] }[size=14][/size] else if (botaoTerceiro.GetComponent<Renderer>().material.color == Color.red)[size=14][/size] {[size=14][/size] botaoApertado = 3;[size=14][/size][size=14][/size] }[size=14][/size][size=14][/size] switch (botaoApertado)[size=14][/size] {[size=14][/size][size=14][/size] case 1:[size=14][/size] Movimenta(primeiroAndar, botaoPrimeiro);[size=14][/size] break;[size=14][/size] case 2:[size=14][/size] Movimenta(segundoAndar, botaoSegundo);[size=14][/size] break;[size=14][/size] case 3:[size=14][/size] Movimenta(terceiroAndar, botaoTerceiro);[size=14][/size] break;[size=14][/size] }[size=14][/size] }[size=14][/size]}[size=14][/size][size=14][/size][size=14][/size][size=14][/size][size=14][/size]
tenta esse, e tenta estudar mais o OnTrigger
https://docs.unity3d.com/ScriptReference/30_search.html?q=OnTrigger
vini024- Membro
- PONTOS : 1858
REPUTAÇÃO : 9
Respeito as regras :
Re: Precisando de ajuda em um script
vini024 escreveu:
- Código:
using System;[size=14][/size]using System.Collections;[size=14][/size]using System.Collections.Generic;[size=14][/size]using System.Runtime.Remoting.Messaging;[size=14][/size]using UnityEngine;[size=14][/size][size=14][/size]public class Teste : MonoBehaviour[size=14][/size]{[size=14][/size] public bool EstaSubindo, EstaDescendo, EstaParado, EstaPerto;[size=14][/size] public Transform primeiroAndar, segundoAndar, terceiroAndar;[size=14][/size] public Transform baseElevador;[size=14][/size] public float speed = 3;[size=14][/size] public GameObject botaoPrimeiro, botaoSegundo, botaoTerceiro;[size=14][/size] public int botaoApertado;
[size=14][/size] void OnTriggerEnter(Collider other)[size=14][/size] {
if(other.tag -- "Player") { EstaPerto = true;
} }[size=14][/size] void OnTriggerExit(Collider other)[size=14][/size] {
if(other.tag -- "Player") {
EstaPerto = false;
} }[size=14][/size][size=14][/size][size=14][/size] public void Movimenta(Transform destino, GameObject Botao)[size=14][/size] {[size=14][/size] transform.position = Vector3.MoveTowards(transform.position, destino.transform.position, speed * Time.deltaTime);[size=14][/size] if (transform.position == destino.transform.position)[size=14][/size] {[size=14][/size] Botao.GetComponent<Renderer>().material.color = Color.red;[size=14][/size] EstaParado = true;[size=14][/size] }[size=14][/size] else[size=14][/size] {[size=14][/size] Botao.GetComponent<Renderer>().material.color = Color.green;[size=14][/size] EstaParado = false;[size=14][/size] }[size=14][/size] if (Input.GetKeyDown("e") && EstaPerto == true && EstaParado == true)[size=14][/size] {[size=14][/size] if (transform.position == destino.transform.position)[size=14][/size] {[size=14][/size] EstaSubindo = true;[size=14][/size] EstaDescendo = false;[size=14][/size] }[size=14][/size] else if (transform.position == destino.transform.position)[size=14][/size] {[size=14][/size] EstaSubindo = false;[size=14][/size] EstaDescendo = true;[size=14][/size] }[size=14][/size] }[size=14][/size] }[size=14][/size][size=14][/size] public void Muda(Transform andarAtual)[size=14][/size] {[size=14][/size] [size=14][/size][size=14][/size] if (botaoPrimeiro.GetComponent<Renderer>().material.color == Color.red)[size=14][/size] {[size=14][/size] botaoApertado = 1;[size=14][/size] }[size=14][/size] else if (botaoSegundo.GetComponent<Renderer>().material.color == Color.red)[size=14][/size] {[size=14][/size] botaoApertado = 2;[size=14][/size][size=14][/size] }[size=14][/size] else if (botaoTerceiro.GetComponent<Renderer>().material.color == Color.red)[size=14][/size] {[size=14][/size] botaoApertado = 3;[size=14][/size][size=14][/size] }[size=14][/size][size=14][/size] switch (botaoApertado)[size=14][/size] {[size=14][/size][size=14][/size] case 1:[size=14][/size] Movimenta(primeiroAndar, botaoPrimeiro);[size=14][/size] break;[size=14][/size] case 2:[size=14][/size] Movimenta(segundoAndar, botaoSegundo);[size=14][/size] break;[size=14][/size] case 3:[size=14][/size] Movimenta(terceiroAndar, botaoTerceiro);[size=14][/size] break;[size=14][/size] }[size=14][/size] }[size=14][/size]}[size=14][/size][size=14][/size][size=14][/size][size=14][/size][size=14][/size]
tenta esse, e tenta estudar mais o OnTrigger
https://docs.unity3d.com/ScriptReference/30_search.html?q=OnTrigger
o codigo ficou bugado, ja te mando o certo
vini024- Membro
- PONTOS : 1858
REPUTAÇÃO : 9
Respeito as regras :
Re: Precisando de ajuda em um script
vini024 escreveu:vini024 escreveu:
- Código:
using System;[size=14][/size]using System.Collections;[size=14][/size]using System.Collections.Generic;[size=14][/size]using System.Runtime.Remoting.Messaging;[size=14][/size]using UnityEngine;[size=14][/size][size=14][/size]public class Teste : MonoBehaviour[size=14][/size]{[size=14][/size] public bool EstaSubindo, EstaDescendo, EstaParado, EstaPerto;[size=14][/size] public Transform primeiroAndar, segundoAndar, terceiroAndar;[size=14][/size] public Transform baseElevador;[size=14][/size] public float speed = 3;[size=14][/size] public GameObject botaoPrimeiro, botaoSegundo, botaoTerceiro;[size=14][/size] public int botaoApertado;
[size=14][/size] void OnTriggerEnter(Collider other)[size=14][/size] {
if(other.tag -- "Player") { EstaPerto = true;
} }[size=14][/size] void OnTriggerExit(Collider other)[size=14][/size] {
if(other.tag -- "Player") {
EstaPerto = false;
} }[size=14][/size][size=14][/size][size=14][/size] public void Movimenta(Transform destino, GameObject Botao)[size=14][/size] {[size=14][/size] transform.position = Vector3.MoveTowards(transform.position, destino.transform.position, speed * Time.deltaTime);[size=14][/size] if (transform.position == destino.transform.position)[size=14][/size] {[size=14][/size] Botao.GetComponent<Renderer>().material.color = Color.red;[size=14][/size] EstaParado = true;[size=14][/size] }[size=14][/size] else[size=14][/size] {[size=14][/size] Botao.GetComponent<Renderer>().material.color = Color.green;[size=14][/size] EstaParado = false;[size=14][/size] }[size=14][/size] if (Input.GetKeyDown("e") && EstaPerto == true && EstaParado == true)[size=14][/size] {[size=14][/size] if (transform.position == destino.transform.position)[size=14][/size] {[size=14][/size] EstaSubindo = true;[size=14][/size] EstaDescendo = false;[size=14][/size] }[size=14][/size] else if (transform.position == destino.transform.position)[size=14][/size] {[size=14][/size] EstaSubindo = false;[size=14][/size] EstaDescendo = true;[size=14][/size] }[size=14][/size] }[size=14][/size] }[size=14][/size][size=14][/size] public void Muda(Transform andarAtual)[size=14][/size] {[size=14][/size] [size=14][/size][size=14][/size] if (botaoPrimeiro.GetComponent<Renderer>().material.color == Color.red)[size=14][/size] {[size=14][/size] botaoApertado = 1;[size=14][/size] }[size=14][/size] else if (botaoSegundo.GetComponent<Renderer>().material.color == Color.red)[size=14][/size] {[size=14][/size] botaoApertado = 2;[size=14][/size][size=14][/size] }[size=14][/size] else if (botaoTerceiro.GetComponent<Renderer>().material.color == Color.red)[size=14][/size] {[size=14][/size] botaoApertado = 3;[size=14][/size][size=14][/size] }[size=14][/size][size=14][/size] switch (botaoApertado)[size=14][/size] {[size=14][/size][size=14][/size] case 1:[size=14][/size] Movimenta(primeiroAndar, botaoPrimeiro);[size=14][/size] break;[size=14][/size] case 2:[size=14][/size] Movimenta(segundoAndar, botaoSegundo);[size=14][/size] break;[size=14][/size] case 3:[size=14][/size] Movimenta(terceiroAndar, botaoTerceiro);[size=14][/size] break;[size=14][/size] }[size=14][/size] }[size=14][/size]}[size=14][/size][size=14][/size][size=14][/size][size=14][/size][size=14][/size]
tenta esse, e tenta estudar mais o OnTrigger
https://docs.unity3d.com/ScriptReference/30_search.html?q=OnTrigger
o codigo ficou bugado, ja te mando o certo
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Remoting.Messaging;
using UnityEngine;
public class Teste : MonoBehaviour
{
public bool EstaSubindo, EstaDescendo, EstaParado, EstaPerto;
public Transform primeiroAndar, segundoAndar, terceiroAndar;
public Transform baseElevador;
public float speed = 3;
public GameObject botaoPrimeiro, botaoSegundo, botaoTerceiro;
public int botaoApertado;
void OnTriggerEnter(Collider other)
{
if(other.tag == "Player")
{
EstaPerto = true;
}
}
void OnTriggerExit(Collider other)
{
if (other.tag == "Player")
{
EstaPerto = false;
}
}
public void Movimenta(Transform destino, GameObject Botao)
{
transform.position = Vector3.MoveTowards(transform.position, destino.transform.position, speed * Time.deltaTime);
if (transform.position == destino.transform.position)
{
Botao.GetComponent<Renderer>().material.color = Color.red;
EstaParado = true;
}
else
{
Botao.GetComponent<Renderer>().material.color = Color.green;
EstaParado = false;
}
if (Input.GetKeyDown("e") && EstaPerto == true && EstaParado == true)
{
if (transform.position == destino.transform.position)
{
EstaSubindo = true;
EstaDescendo = false;
}
else if (transform.position == destino.transform.position)
{
EstaSubindo = false;
EstaDescendo = true;
}
}
}
public void Muda(Transform andarAtual)
{
if (botaoPrimeiro.GetComponent<Renderer>().material.color == Color.red)
{
botaoApertado = 1;
}
else if (botaoSegundo.GetComponent<Renderer>().material.color == Color.red)
{
botaoApertado = 2;
}
else if (botaoTerceiro.GetComponent<Renderer>().material.color == Color.red)
{
botaoApertado = 3;
}
switch (botaoApertado)
{
case 1:
Movimenta(primeiroAndar, botaoPrimeiro);
break;
case 2:
Movimenta(segundoAndar, botaoSegundo);
break;
case 3:
Movimenta(terceiroAndar, botaoTerceiro);
break;
}
}
}
vini024- Membro
- PONTOS : 1858
REPUTAÇÃO : 9
Respeito as regras :
Re: Precisando de ajuda em um script
Valeu gente, vou testar aqui e dar uma estudada a mais no Trigger, qualquer coisa eu mando aqui
Astolfokun- Iniciante
- PONTOS : 1730
REPUTAÇÃO : 0
Respeito as regras :
Re: Precisando de ajuda em um script
Opa, tava testando o que o vini024 me mandou e bom, acaba que o unity não está reconhecendo a key "e", responsável por selecionar os botões, alguma dica do que eu posso acabar usando pra resolver isso?
Astolfokun- Iniciante
- PONTOS : 1730
REPUTAÇÃO : 0
Respeito as regras :
Re: Precisando de ajuda em um script
Não reconheceu porque você colocou "e" no lugar de KeyCode.E :DAstolfokun escreveu:Opa, tava testando o que o vini024 me mandou e bom, acaba que o unity não está reconhecendo a key "e", responsável por selecionar os botões, alguma dica do que eu posso acabar usando pra resolver isso?
Micco- MembroAvançado
- PONTOS : 1790
REPUTAÇÃO : 17
Áreas de atuação : C#, GDScript, HTML e CSS.
Respeito as regras :
Re: Precisando de ajuda em um script
Então, fiz isso e mesmo assim os botões acabam não sendo reconhecidos. Pensei em modificar como o script funciona, colocando ao invés de botões uma especie de Hud, pro jogador selecionar pra qual andar ele vai, aí a ideia seria que o script do Hud modificasse a variável botaoApertado que é uma variável do script Elevador, assim o jogador consegue ir pra qualquer andar. O problema é que eu não sei como fazer com que um script modifique o outro. Se alguém conhecer um vídeo que explique sobre isso ou um link de um artigo, ajudaria muito.Micco escreveu:Não reconheceu porque você colocou "e" no lugar de KeyCode.E :DAstolfokun escreveu:Opa, tava testando o que o vini024 me mandou e bom, acaba que o unity não está reconhecendo a key "e", responsável por selecionar os botões, alguma dica do que eu posso acabar usando pra resolver isso?
Astolfokun- Iniciante
- PONTOS : 1730
REPUTAÇÃO : 0
Respeito as regras :
Re: Precisando de ajuda em um script
Onde você esta chamando o método "Movimenta"?
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Precisando de ajuda em um script
Estou chamando ele no switch, linhas 84, 87 e 90, case 1, 2 e 3, respectivamente.Weslley escreveu:Onde você esta chamando o método "Movimenta"?
Astolfokun- Iniciante
- PONTOS : 1730
REPUTAÇÃO : 0
Respeito as regras :
Re: Precisando de ajuda em um script
E onde você esta chama o método "Muda" em qual script? notei que não tem nenhum método Update, porque se "Input.GetKeyDown("e")" ou "Input.GetKeyDown(KeyCode.E)" não esta funcionando ou seu botão do teclado não esta funcionado ou você não ta chamando o métodos em uma rotina de repetição
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Precisando de ajuda em um script
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Runtime.Remoting.Messaging;
using UnityEngine;
public class Teste3 : MonoBehaviour
{
public bool EstaSubindo, EstaDescendo, EstaParado, EstaPerto;
public Transform primeiroAndar, segundoAndar, terceiroAndar;
public float speed = 3;
public GameObject botaoPrimeiro, botaoSegundo, botaoTerceiro;
public int botaoApertado;
void OnTriggerEnter(Collider other)
{
if (other.tag == "Player")
{
EstaPerto = true;
}
}
void OnTriggerExit(Collider other)
{
if (other.tag == "Player")
{
EstaPerto = false;
}
}
public void Movimenta(Transform destino, GameObject Botao)
{
print("Funcionou");
transform.position = Vector3.MoveTowards(transform.position, destino.transform.position, speed * Time.deltaTime);
if (transform.position == destino.transform.position)
{
Botao.GetComponent<Renderer>().material.color = Color.red;
EstaParado = true;
}
else
{
Botao.GetComponent<Renderer>().material.color = Color.green;
EstaParado = false;
}
if (Input.GetKeyDown(KeyCode.E) && EstaPerto == true && EstaParado == true)
{
if (transform.position == destino.transform.position)
{
EstaSubindo = true;
EstaDescendo = false;
}
else if (transform.position == destino.transform.position)
{
EstaSubindo = false;
EstaDescendo = true;
}
}
}
void Update()
{
if (botaoPrimeiro.GetComponent<Renderer>().material.color == Color.red)
{
botaoApertado = 1;
}
else if (botaoSegundo.GetComponent<Renderer>().material.color == Color.red)
{
botaoApertado = 2;
}
else if (botaoTerceiro.GetComponent<Renderer>().material.color == Color.red)
{
botaoApertado = 3;
}
print("Funcionou 2");
switch (botaoApertado)
{
case 1:
Movimenta(primeiroAndar, botaoPrimeiro);
break;
case 2:
print("Funcionou case");
Movimenta(segundoAndar, botaoSegundo);
break;
case 3:
Movimenta(terceiroAndar, botaoTerceiro);
break;
}
}
}
Mandando o script que eu tô usando atualmente, acabei trocando o "Muda" por um Update. Fui fazendo alguns testes de mesa e o que acontece é que ele não entra no if else. Testei sem ele, só chamando pra um andar e funcionou a movimentação, logo eu acredito que o problema esteja no if.
Astolfokun- Iniciante
- PONTOS : 1730
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» Ajuda Urgente como chamo a animação no script alguém poderia dar uma ajuda???
» [AJUDA]Preciso de ajuda em um script relacionado ao vídeo Sistema de escolha de personagen
» Precisando de ajuda
» Ajuda com script
» Ajuda Jogo de Luta 2D precisando de AI CPU inteligente
» [AJUDA]Preciso de ajuda em um script relacionado ao vídeo Sistema de escolha de personagen
» Precisando de ajuda
» Ajuda com script
» Ajuda Jogo de Luta 2D precisando de AI CPU inteligente
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos