Não sei se meu erro e por conta de um bug da unity ou por um bug no meu cerebro
2 participantes
Página 1 de 1
Não sei se meu erro e por conta de um bug da unity ou por um bug no meu cerebro
Estava esboçando um sistema de Armazenamento externo, criei dois containers diferentes, tanto na tag quanto no tamanho do inventario. Eu estou usando o raycast para indicar a distancia do container, se o container estiver em uma distancia x, um botão da ui vai aparecer na tela, esse botão vai me permitir abrir e fechar o container e o inventario do player /*são dois botões, uma para cada container*/, porém tive um resultado um tanto quanto estranho. Tenho um script preso no meu canvas que segura ambos os containers e duas voids, uma para cada botão, a logica das duas é a mesma; se eu estiver na distancia de interagir, o botão vai aparecer, se o container estiver fechado, o botão vai abrir o container, se estiver aberto ele vai fechar, mas so um dos containers esta funcionando.
Eu tive um problema parecido anteriormente, que foi resolvido trocando a posição dos if's na void Update, porém dessa vez me confundiu ainda mais visto que quando fiz o mesmo, apenas inverteu a ordem de funcionamento dos containers. Segue os scripts para avaliação, agradeço desde ja.
/*Como podem ver nao sei usar booleans muito bem*/
Eu tive um problema parecido anteriormente, que foi resolvido trocando a posição dos if's na void Update, porém dessa vez me confundiu ainda mais visto que quando fiz o mesmo, apenas inverteu a ordem de funcionamento dos containers. Segue os scripts para avaliação, agradeço desde ja.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityStandardAssets.Characters.FirstPerson;
public class AbirFecharMenu : MonoBehaviour {
public GameObject [] botoesInteragiveis;
public bool containerAberto;
public GameObject fps;
public void Start()
{
botoesInteragiveis [2].GetComponent<RectTransform> ().anchoredPosition = new Vector3 (-270f, -180f, 0);
}
void Update (){
if (botoesInteragiveis [8].activeInHierarchy == true) {
containerAberto = true;
} else {
containerAberto = false;
}
if (botoesInteragiveis [6].activeInHierarchy == true) {
containerAberto = true;
} else {
containerAberto = false;
}
}
public void AbrirMenu()
{
fps.gameObject.GetComponent<FirstPersonController> ().enabled = false;
botoesInteragiveis [0].SetActive (false);
botoesInteragiveis [1].SetActive (true);
botoesInteragiveis [2].GetComponent<RectTransform> ().anchoredPosition = new Vector3 (235f, -200f, 0);
}
public void FecharMenu()
{
botoesInteragiveis [0].SetActive (true);
botoesInteragiveis [1].SetActive (false);
botoesInteragiveis [3].SetActive (false);
botoesInteragiveis [4].SetActive (false);
botoesInteragiveis [2].GetComponent<RectTransform> ().anchoredPosition = new Vector3 (-270f, -180f, 0);
fps.gameObject.GetComponent<FirstPersonController> ().enabled = true;
}
public void ClicarNosItens()
{
botoesInteragiveis [3].SetActive (true);
botoesInteragiveis [4].SetActive (true);
}
public void BotaoDeInteragir1()
{
if (containerAberto == false) {
botoesInteragiveis [0].SetActive (false);
botoesInteragiveis [2].GetComponent<RectTransform> ().anchoredPosition = new Vector3 (235f, -200f, 0);
botoesInteragiveis [6].SetActive (true);
fps.gameObject.GetComponent<FirstPersonController> ().enabled = false;
} else {
botoesInteragiveis [0].SetActive (true);
botoesInteragiveis [2].GetComponent<RectTransform> ().anchoredPosition = new Vector3 (-270f, -180f, 0);
botoesInteragiveis [6].SetActive (false);
fps.gameObject.GetComponent<FirstPersonController> ().enabled = true;
}
}
public void BotaoDeInteragir2(){
if (containerAberto == false) {
botoesInteragiveis [0].SetActive (false);
botoesInteragiveis [2].GetComponent<RectTransform> ().anchoredPosition = new Vector3 (235f, -200f, 0);
botoesInteragiveis [8].SetActive (true);
fps.gameObject.GetComponent<FirstPersonController> ().enabled = false;
} else {
botoesInteragiveis [0].SetActive (true);
botoesInteragiveis [2].GetComponent<RectTransform> ().anchoredPosition = new Vector3 (-270f, -180f, 0);
botoesInteragiveis [8].SetActive (false);
fps.gameObject.GetComponent<FirstPersonController> ().enabled = true;
}
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class JGestorDoPlayer : MonoBehaviour {
public KeyCode botaoDeColeta; // trocar depois
public float distanciaDeColeta =1.2f;
public GameObject [] uiBotaoDeInteracao, uiContainer;
void Start () {
}
void Update () {
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (new Vector3 (Screen.width / 2, Screen.height / 2, 0));
if (Physics.Raycast (ray, out hit, distanciaDeColeta)) {
if (hit.collider.GetComponent<JItemBase> () != null)
if (Input.GetKeyDown (botaoDeColeta)) {
hit.collider.GetComponent<JItemBase> ().Coletar();
}
}
if (Physics.Raycast (ray, out hit, distanciaDeColeta)) {
if (hit.collider.CompareTag ("Container")) {
uiBotaoDeInteracao[0].SetActive (true);
}
} else {
uiBotaoDeInteracao[0].SetActive (false);
uiContainer[0].SetActive (false);
}
if (Physics.Raycast (ray, out hit, distanciaDeColeta)) {
if (hit.collider.CompareTag ("Capsula De BP")) {
uiBotaoDeInteracao[1].SetActive (true);
}
} else {
uiBotaoDeInteracao[1].SetActive (false);
uiContainer[1].SetActive (false);
}
}
}
/*Como podem ver nao sei usar booleans muito bem*/
Fluttershy28- Avançado
- PONTOS : 2751
REPUTAÇÃO : 52
Idade : 27
Áreas de atuação : Modelagem, Animação, Texturização, Design
Respeito as regras :
Re: Não sei se meu erro e por conta de um bug da unity ou por um bug no meu cerebro
Terias como criar um UnityPackage e nos mandar para que possamos ver o que pode ser?
Re: Não sei se meu erro e por conta de um bug da unity ou por um bug no meu cerebro
MarcosSchultz escreveu:Terias como criar um UnityPackage e nos mandar para que possamos ver o que pode ser?
Opsi MyBad, esuqeci de atualizar aqui no forum, acho que era um bug, no outro dia quando abri a unity funcionou normalmente.
Nem me lembrava que tinha dado esse erro.
Fluttershy28- Avançado
- PONTOS : 2751
REPUTAÇÃO : 52
Idade : 27
Áreas de atuação : Modelagem, Animação, Texturização, Design
Respeito as regras :
Tópicos semelhantes
» ERRO POR CONTA DE REFERÊNCIAS APÓS DESTRUIR GAMEOBJECT
» Não estou conseguindo criar uma conta na unity?
» Projeto não aparece salvo na minha conta ID unity
» ERRO UNITY
» Ajuda com a criação de um Conta Vidas utilizando a UIText da Unity
» Não estou conseguindo criar uma conta na unity?
» Projeto não aparece salvo na minha conta ID unity
» ERRO UNITY
» Ajuda com a criação de um Conta Vidas utilizando a UIText da Unity
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos