[Ajuda]Como implantar um botão nesse script
4 participantes
Página 1 de 1
[Ajuda]Como implantar um botão nesse script
Aé galera preciso de uma ajuda, sei que peço muito ajuda a vcs, mais nem tudo da pra resolver sozinho. Essa e uma das poucas duvidas que me resta!
Eu criei um script, mais eu quero que em vez de ser com o click do mause , fosse com um botão que aparecesse quando chega perto, lembrando que esse script ta em varios objetos!
Eu criei um script, mais eu quero que em vez de ser com o click do mause , fosse com um botão que aparecesse quando chega perto, lembrando que esse script ta em varios objetos!
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class PedraMadeira : MonoBehaviour
{
public Transform player;
public GameObject[] _OBJETOS;
private GameObject JOGADOR;
[SerializeField]
public Objetos objetos;
private int MaxDrop;
public bool ativardrop;
public bool destroymadeira;
private float DistanciaDoPlayer;
public float DistanciaMaxima = 3;
public bool colMadeira;
public bool colPedra;
private Camera cameraPrincipal;
public float distanciaicon;
public int distanciamaxicon;
private GameObject iconmira;
private GameObject iconcraft;
public bool ativaicon;
public float DistanciaMinima = 3;
public GameObject destroy;
[System.Serializable]
public class Objetos
{
public GameObject drop;
}
// Use this for initialization
void Start()
{
cameraPrincipal = Camera.main;
MaxDrop = 1;
ativardrop = false;
destroymadeira = false;
destroy.SetActive(false);
JOGADOR = GameObject.FindWithTag("Player");
distanciaicon = distanciamaxicon;
distanciamaxicon = 100;
}
// Update is called once per frame
void Update()
{
for (int i = 0; i < _OBJETOS.Length; i++)
{
DistanciaDoPlayer = Vector3.Distance(JOGADOR.transform.position, _OBJETOS[i].transform.position);
if (DistanciaDoPlayer <= DistanciaMaxima)
{
if (Input.GetButton("Fire1") && ativardrop == true && MaxDrop <= 1)
{
destroymadeira = true;
GameObject cloneObjeto = Instantiate(objetos.drop, player.position, Quaternion.identity) as GameObject;
MaxDrop++;
MaxDrop++;
destroy.SetActive(true);
iconmira.SetActive(true);
iconcraft.SetActive(false);
}
}
}
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Madeira")
{
colMadeira = true;
}
if (other.gameObject.tag == "Corda" && colMadeira)
{
ativardrop = true;
ativaicon = true;
}
if (other.gameObject.tag == "Corda")
{
colPedra = true;
}
if (other.gameObject.tag == "Madeira" && colPedra)
{
ativardrop = true;
ativaicon = true;
}
}
}
hellkiller- Mestre
- PONTOS : 3816
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Como implantar um botão nesse script
Tente isto:
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class PedraMadeira : MonoBehaviour{
private bool mostrarLetra;
public string letra = "E";
[Space(20)]
public Transform player;
public GameObject[] _OBJETOS;
private GameObject JOGADOR;
[SerializeField]
public Objetos objetos;
private int MaxDrop;
public bool ativardrop;
public bool destroymadeira;
private float DistanciaDoPlayer;
public float DistanciaMaxima = 3;
public bool colMadeira;
public bool colPedra;
private Camera cameraPrincipal;
public float distanciaicon;
public int distanciamaxicon;
private GameObject iconmira;
private GameObject iconcraft;
public bool ativaicon;
public float DistanciaMinima = 3;
public GameObject destroy;
[System.Serializable]
public class Objetos{
public GameObject drop;
}
void Start(){
cameraPrincipal = Camera.main;
MaxDrop = 1;
ativardrop = false;
destroymadeira = false;
destroy.SetActive(false);
JOGADOR = GameObject.FindWithTag("Player");
distanciaicon = distanciamaxicon;
distanciamaxicon = 100;
}
void Update(){
for (int i = 0; i < _OBJETOS.Length; i++){
DistanciaDoPlayer = Vector3.Distance(JOGADOR.transform.position, _OBJETOS[i].transform.position);
if (DistanciaDoPlayer <= DistanciaMaxima){
mostrarLetra = true;
if (Input.GetKeyDown(letra) && ativardrop == true && MaxDrop <= 1){
destroymadeira = true;
GameObject cloneObjeto = Instantiate(objetos.drop, player.position, Quaternion.identity) as GameObject;
MaxDrop++;
MaxDrop++;
destroy.SetActive(true);
iconmira.SetActive(true);
iconcraft.SetActive(false);
}
}else{
mostrarLetra = false;
}
}
}
void OnGUI (){
if (mostrarLetra == true) {
GUI.Label (new Rect (Screen.width / 2 - 40, Screen.height / 2 - 40, 80, 80), "Pressione: " + letra);
}
}
void OnTriggerEnter(Collider other){
if (other.gameObject.tag == "Madeira"){
colMadeira = true;
}
if (other.gameObject.tag == "Corda" && colMadeira){
ativardrop = true;
ativaicon = true;
}
if (other.gameObject.tag == "Corda"){
colPedra = true;
}
if (other.gameObject.tag == "Madeira" && colPedra){
ativardrop = true;
ativaicon = true;
}
}
}
Re: [Ajuda]Como implantar um botão nesse script
Amigo obg, por responder sem duvida esse e o melhor forum sobre unity que existe, isso que vc falou vai me ajudar muito, só tem um porem não e exatamente o que eu queria ao inves de uma guilabel, eu queria que fosse um Botão mesmo , que quando clickase nele ativa-se o resto. Sera que dava pra ajudar?
Prof.(Marcos);
Prof.(Marcos);
hellkiller- Mestre
- PONTOS : 3816
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Como implantar um botão nesse script
E se não for pedir muito teria como esse botão ser de UI?
hellkiller- Mestre
- PONTOS : 3816
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Como implantar um botão nesse script
Hmm, infelizmente ainda não sou um adepto da nova UI...
más dê uma pesquisada na API da Unity... basta habilitar ou desabilitar o botão com base nesta condição ( no Update
más dê uma pesquisada na API da Unity... basta habilitar ou desabilitar o botão com base nesta condição ( no Update
- Código:
if (mostrarLetra == true) {
//ativa UI
}
else{
//desativa UI
}
Re: [Ajuda]Como implantar um botão nesse script
Para Ativar a UI poderia ser uma variavel do tipo GameObject?
Isso não daria erro se tivesse mais de um objeto com esse script no cenario?
Isso não daria erro se tivesse mais de um objeto com esse script no cenario?
hellkiller- Mestre
- PONTOS : 3816
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Como implantar um botão nesse script
Nao daria nao, simplesmente crie um simples botao UI numa posicao ideal na tela.
No script faça
Ps: Ao declarar gameobjects, transforms, variaveis voce pode juntar tudo num só separando por virgula, e se quiser ja setando os valores. Exemplo:
Isso deixa o codigo muito melhor organizado. Recomendo voce usar isso, pq o header do seu script ta bem bagunçado.
No script faça
- Código:
public GameObject Uiobj; // Botao
if (mostrarLetra == true) {
Uiobj.SetActive(true); // ligou botao
}
else{
Uiobj.SetActive(false); // desligou botao
}
}
Ps: Ao declarar gameobjects, transforms, variaveis voce pode juntar tudo num só separando por virgula, e se quiser ja setando os valores. Exemplo:
- Código:
public GameObject objeto1,objeto2,objeto3,objeto4,objeto5;
public bool bool1,bool2 = true,bool3,bool4;
private int int1,int2,int3;
Isso deixa o codigo muito melhor organizado. Recomendo voce usar isso, pq o header do seu script ta bem bagunçado.
RenanMSV- Instrutor
- PONTOS : 4246
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [Ajuda]Como implantar um botão nesse script
Assim amigo não esta funcionando , o objeto em questão vai ter varios no cenario, o objeto e uma pedra, ela pode ser destruida, e ela pode ser instanciada, tem varias , inclusive eu teria que diser que o objeto e pela tag. Ja que vai ser instanciado algumas vezes a pedra. Do geito que vc disse ate que trampa se for so uma pedra, mais se for mais de uma ja não funciona, é agora?:
hellkiller- Mestre
- PONTOS : 3816
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Como implantar um botão nesse script
Voce tem um botao UI apenas na cena toda? (Nao eh pra criar um botao pra cada pedra). O botao vai ser ativado ao chegar perto de qualquer uma das pedras. E desligar ao estar longe das pedras. Apenas um UI. Teste e volte aqui com o que acontece.
RenanMSV- Instrutor
- PONTOS : 4246
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [Ajuda]Como implantar um botão nesse script
Eu tenho apenas um botão! Que linkei em todas as pedras.Alem do mais algumas pedras são instanciaveis .
arleydudu- Iniciante
- PONTOS : 3128
REPUTAÇÃO : 0
Respeito as regras :
Re: [Ajuda]Como implantar um botão nesse script
Comentei com outra conto pois estou no cell
arleydudu- Iniciante
- PONTOS : 3128
REPUTAÇÃO : 0
Respeito as regras :
Re: [Ajuda]Como implantar um botão nesse script
To vendo aqui. O script detecta a colisao algumas vezes. Outras nao. Fazendo o botao aparecer ou nao. (mudei o metodo pra colisao)
RenanMSV- Instrutor
- PONTOS : 4246
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [Ajuda]Como implantar um botão nesse script
como assim?e pra mim mudar o metodo?
hellkiller- Mestre
- PONTOS : 3816
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Como implantar um botão nesse script
O script funfa se estiver em um so objeto do cenario, mais se tiver em mais de um ja não vai.E agora?
hellkiller- Mestre
- PONTOS : 3816
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Como implantar um botão nesse script
Apos algumas tentativas consegui fazer por colisao. Entao valide pelo OnTrigger enter e exit. Coloque como positivo no enter e negativo no exit. Diga ao script q vc soh pode continuar ao clicar no botao e diga ao botao que vc soh pode liga-lo se for positivo. Adicione um novo collider trigger (se ja nao tiver) no player. E coloque rigidbody e colliders nas pedras. Marque kinemact no rigidbody das pedras pra elas n sairem rolando (se n for a intencao claro).
RenanMSV- Instrutor
- PONTOS : 4246
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [Ajuda]Como implantar um botão nesse script
Assim amigo eu modifiquei esse script , fis outro so para isso. Mais esse objeto e instanciado, ai eu teria que dizer pra ativar ele pela tag?
using UnityEngine;
using System.Collections;
public class UIMadeiraPedra : MonoBehaviour {
private Camera cameraPrincipal;
public GameObject button;
private GameObject button2;
public bool ativabutton, ativabuttontag;
private bool colMadeira, ativaicon, colPedra;
public bool ativardrop, destroymadeira;
// Use this for initialization
void Start () {
cameraPrincipal = Camera.main;
button2 = GameObject.FindWithTag("MiraCraft");
button.SetActive(false);
}
// Update is called once per frame
void Update()
{
button2 = GameObject.FindWithTag("MiraCraft");
if (ativaicon == true)
{
button.SetActive(true);
button2.SetActive(true);
}
else if (ativaicon == false)
{
button.SetActive(false);
button2.SetActive(false);
}
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Madeira")
{
colMadeira = true;
}
if (other.gameObject.tag == "Corda" && colMadeira)
{
ativardrop = true;
ativaicon = true;
}
if (other.gameObject.tag == "Corda")
{
colPedra = true;
}
if (other.gameObject.tag == "Madeira" && colPedra)
{
ativardrop = true;
ativaicon = true;
}
}
void OntriggerExit(Collider other)
{
if (other.gameObject.tag == "Madeira")
{
colMadeira = false;
}
if (other.gameObject.tag == "Corda" && colMadeira)
{
ativardrop = false;
ativaicon = false;
}
if (other.gameObject.tag == "Corda")
{
colPedra = false;
}
if (other.gameObject.tag == "Madeira" && colPedra)
{
ativardrop = false;
ativaicon = false;
}
}
}
using UnityEngine;
using System.Collections;
public class UIMadeiraPedra : MonoBehaviour {
private Camera cameraPrincipal;
public GameObject button;
private GameObject button2;
public bool ativabutton, ativabuttontag;
private bool colMadeira, ativaicon, colPedra;
public bool ativardrop, destroymadeira;
// Use this for initialization
void Start () {
cameraPrincipal = Camera.main;
button2 = GameObject.FindWithTag("MiraCraft");
button.SetActive(false);
}
// Update is called once per frame
void Update()
{
button2 = GameObject.FindWithTag("MiraCraft");
if (ativaicon == true)
{
button.SetActive(true);
button2.SetActive(true);
}
else if (ativaicon == false)
{
button.SetActive(false);
button2.SetActive(false);
}
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Madeira")
{
colMadeira = true;
}
if (other.gameObject.tag == "Corda" && colMadeira)
{
ativardrop = true;
ativaicon = true;
}
if (other.gameObject.tag == "Corda")
{
colPedra = true;
}
if (other.gameObject.tag == "Madeira" && colPedra)
{
ativardrop = true;
ativaicon = true;
}
}
void OntriggerExit(Collider other)
{
if (other.gameObject.tag == "Madeira")
{
colMadeira = false;
}
if (other.gameObject.tag == "Corda" && colMadeira)
{
ativardrop = false;
ativaicon = false;
}
if (other.gameObject.tag == "Corda")
{
colPedra = false;
}
if (other.gameObject.tag == "Madeira" && colPedra)
{
ativardrop = false;
ativaicon = false;
}
}
}
hellkiller- Mestre
- PONTOS : 3816
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Como implantar um botão nesse script
Tirando os scripts já postados, você poderia explicar PASSO A PASSO MESMO o sistema que está tentando fazer?
passo a passo meeeesmo
passo a passo meeeesmo
Tópicos semelhantes
» Como posso setar o valor nesse script?
» Como posso usar a função OnClick nesse script
» Ajuda Urgente como chamo a animação no script alguém poderia dar uma ajuda???
» [DÚVIDA]Ajuda para como fazer esse script voltar a funcionar
» Como implantar uma bomba com um personagem apertando uma tecla, estilo bomberman
» Como posso usar a função OnClick nesse script
» Ajuda Urgente como chamo a animação no script alguém poderia dar uma ajuda???
» [DÚVIDA]Ajuda para como fazer esse script voltar a funcionar
» Como implantar uma bomba com um personagem apertando uma tecla, estilo bomberman
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos