[Ajuda]Problema em Ontrigger
2 participantes
Página 1 de 1
[Ajuda]Problema em Ontrigger
Alguem sabe o erro que esse ontrigger tem?antes de executar o fire1, ele ta de boa mais depois, so colocando a pedra ele ja ativa, alguem sabe pq?
script:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class MachadoCraft : MonoBehaviour
{
public bool mostrarLetra;
public string letra = "Fire1";
[Space(20)]
public Transform player;
public GameObject[] _OBJETOS;
private GameObject JOGADOR;
[SerializeField]
public Objetos objetos;
private int MaxDrop;
public bool ativardrop, destroymadeira, ativadestroy;
private float DistanciaDoPlayer, DistanciaMinima = 3;
private float DistanciaMaxima = 3;
private bool colMadeira, ativaicon, colPedra, colCorda;
private Camera cameraPrincipal;
public GameObject destroy, button1;
private GameObject button;
[System.Serializable]
public class Objetos
{
public GameObject drop;
}
void Start()
{
ativadestroy = false;
cameraPrincipal = Camera.main;
ativardrop = false;
button1.SetActive(false);
button = GameObject.FindWithTag("Mira");
destroymadeira = false;
destroy.SetActive(false);
JOGADOR = GameObject.FindWithTag("CraftSystem");
}
void Update()
{
if (ativardrop == true)
{
button1.SetActive(true);
}
else
{
button1.SetActive(false);
}
for (int i = 0; i < _OBJETOS.Length; i++)
{
DistanciaDoPlayer = Vector3.Distance(JOGADOR.transform.position, _OBJETOS[i].transform.position);
if (DistanciaDoPlayer <= DistanciaMaxima)
{
if (ativardrop == true)
{
mostrarLetra = true;
}
if (Input.GetButtonDown(letra) && ativardrop == true)
{
destroymadeira = true;
GameObject cloneObjeto = Instantiate(objetos.drop, player.position, Quaternion.identity) as GameObject;
destroy.SetActive(true);
}
else
{
destroy.SetActive(false);
}
}
else
{
mostrarLetra = false;
}
}
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Madeira")
{
colMadeira = true;
}
if (other.gameObject.tag == "Corda" && colMadeira)
{
colPedra = true;
}
if (other.gameObject.tag == "Rock" && colPedra)
{
ativardrop = true;
ativaicon = true;
}
}
void OntriggerExit(Collider other)
{
if (other.gameObject.tag == "Madeira")
{
colMadeira = false;
colMadeira = false;
}
if (other.gameObject.tag == "Corda")
{
colMadeira = false;
colPedra = false;
}
if (other.gameObject.tag == "Rock")
{
ativardrop = false;
colMadeira = false;
colPedra = false;
ativaicon = false;
}
if (other.gameObject.tag == "Madeira")
{
colMadeira = false;
}
if (other.gameObject.tag == "Rock" && colMadeira)
{
colPedra = false;
}
if (other.gameObject.tag == "Corda" && colPedra)
{
ativardrop = false;
ativaicon = false;
}
}
}
script:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class MachadoCraft : MonoBehaviour
{
public bool mostrarLetra;
public string letra = "Fire1";
[Space(20)]
public Transform player;
public GameObject[] _OBJETOS;
private GameObject JOGADOR;
[SerializeField]
public Objetos objetos;
private int MaxDrop;
public bool ativardrop, destroymadeira, ativadestroy;
private float DistanciaDoPlayer, DistanciaMinima = 3;
private float DistanciaMaxima = 3;
private bool colMadeira, ativaicon, colPedra, colCorda;
private Camera cameraPrincipal;
public GameObject destroy, button1;
private GameObject button;
[System.Serializable]
public class Objetos
{
public GameObject drop;
}
void Start()
{
ativadestroy = false;
cameraPrincipal = Camera.main;
ativardrop = false;
button1.SetActive(false);
button = GameObject.FindWithTag("Mira");
destroymadeira = false;
destroy.SetActive(false);
JOGADOR = GameObject.FindWithTag("CraftSystem");
}
void Update()
{
if (ativardrop == true)
{
button1.SetActive(true);
}
else
{
button1.SetActive(false);
}
for (int i = 0; i < _OBJETOS.Length; i++)
{
DistanciaDoPlayer = Vector3.Distance(JOGADOR.transform.position, _OBJETOS[i].transform.position);
if (DistanciaDoPlayer <= DistanciaMaxima)
{
if (ativardrop == true)
{
mostrarLetra = true;
}
if (Input.GetButtonDown(letra) && ativardrop == true)
{
destroymadeira = true;
GameObject cloneObjeto = Instantiate(objetos.drop, player.position, Quaternion.identity) as GameObject;
destroy.SetActive(true);
}
else
{
destroy.SetActive(false);
}
}
else
{
mostrarLetra = false;
}
}
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Madeira")
{
colMadeira = true;
}
if (other.gameObject.tag == "Corda" && colMadeira)
{
colPedra = true;
}
if (other.gameObject.tag == "Rock" && colPedra)
{
ativardrop = true;
ativaicon = true;
}
}
void OntriggerExit(Collider other)
{
if (other.gameObject.tag == "Madeira")
{
colMadeira = false;
colMadeira = false;
}
if (other.gameObject.tag == "Corda")
{
colMadeira = false;
colPedra = false;
}
if (other.gameObject.tag == "Rock")
{
ativardrop = false;
colMadeira = false;
colPedra = false;
ativaicon = false;
}
if (other.gameObject.tag == "Madeira")
{
colMadeira = false;
}
if (other.gameObject.tag == "Rock" && colMadeira)
{
colPedra = false;
}
if (other.gameObject.tag == "Corda" && colPedra)
{
ativardrop = false;
ativaicon = false;
}
}
}
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Problema em Ontrigger
Tem como esclarecer melhor o que está acontecendo?
O que está dentro do if do "Fire1" não possui aparentemente nenhuma conexão com o restante das void's
O que está dentro do if do "Fire1" não possui aparentemente nenhuma conexão com o restante das void's
Re: [Ajuda]Problema em Ontrigger
Assim e um sistema de craft, se a area do craft, estiver colidindo com os objetos corda e pedra, ele podera
ativar o craft,"ativardrop" se estiver ativado ele aperta fire1 e os objetos sao destruidos e dropado um novo,
so que tem um porem, no meu sistema de inventario, ele pega os itens destruindo eles no cenario, ai quando pego eles ainda fica ativado o "Ativadrop" mesmo sem estar colidindo, o mesmo ocorre quando aperto o fire1
ele drop tudo certo,mais quando vou fazer denovo ele ativa apenas colindo com 1 so objeto.
Creio que o problema pode estar em ativar e desativar o
"Ativadrop", teria outro jeito mais facil de fazer isso?
ativar o craft,"ativardrop" se estiver ativado ele aperta fire1 e os objetos sao destruidos e dropado um novo,
so que tem um porem, no meu sistema de inventario, ele pega os itens destruindo eles no cenario, ai quando pego eles ainda fica ativado o "Ativadrop" mesmo sem estar colidindo, o mesmo ocorre quando aperto o fire1
ele drop tudo certo,mais quando vou fazer denovo ele ativa apenas colindo com 1 so objeto.
Creio que o problema pode estar em ativar e desativar o
"Ativadrop", teria outro jeito mais facil de fazer isso?
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Problema em Ontrigger
Bom, vamos por partes...
Me explique esta parte:
Que confusão é esta nas colisões? tem até comando duplicado O.o
Me explique esta parte:
- Código:
if (other.gameObject.tag == "Madeira")
{
colMadeira = false;
colMadeira = false;
}
if (other.gameObject.tag == "Corda")
{
colMadeira = false;
colPedra = false;
}
if (other.gameObject.tag == "Rock")
{
ativardrop = false;
colMadeira = false;
colPedra = false;
ativaicon = false;
}
if (other.gameObject.tag == "Madeira")
{
colMadeira = false;
}
if (other.gameObject.tag == "Rock" && colMadeira)
{
colPedra = false;
}
if (other.gameObject.tag == "Corda" && colPedra)
{
ativardrop = false;
ativaicon = false;
}
Que confusão é esta nas colisões? tem até comando duplicado O.o
Re: [Ajuda]Problema em Ontrigger
kkkkkkkk, nessa parte eu ja estava cancado de ficar tentando desativar, ai setei varias vezes, se ele tirar qualquer objeto que componha o craft, como uma pedra, ele ja cancelava o craft!kkk
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Problema em Ontrigger
Bom, tem várias coisas que não estão sendo utilizadas no script... Olhe como da pra resumir:
Outra coisa, você tem variaveis com mesmo nome de classes, dentre várias outras coisinhas
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class MachadoCraft : MonoBehaviour{
public Transform player;
public GameObject[] _OBJETOS;
private GameObject JOGADOR;
[SerializeField]
public Objetos objetos;
public bool ativardrop;
private float DistanciaMaxima = 3;
private bool colMadeira, colPedra, colCorda;
public GameObject destroy, button1;
private GameObject button;
[System.Serializable]
public class Objetos{
public GameObject drop;
}
void Start(){
ativardrop = false;
button1.SetActive(false);
button = GameObject.FindWithTag("Mira");
destroy.SetActive(false);
JOGADOR = GameObject.FindWithTag("CraftSystem");
}
void Update(){
if (ativardrop == true){
button1.SetActive(true);
}
else{
button1.SetActive(false);
}
for (int i = 0; i < _OBJETOS.Length; i++){
float DistanciaDoPlayer = Vector3.Distance(JOGADOR.transform.position, _OBJETOS[i].transform.position);
if (DistanciaDoPlayer <= DistanciaMaxima){
if (Input.GetMouseButtonDown(0) && ativardrop == true){
GameObject cloneObjeto = Instantiate(objetos.drop, player.position, Quaternion.identity) as GameObject;
destroy.SetActive(true);
}
else{
destroy.SetActive(false);
}
}
}
//colisoes
if (colMadeira && colCorda && colPedra) {
ativardrop = true;
} else {
ativardrop = false;
}
}
void OnTriggerEnter(Collider other){
if (other.gameObject.tag == "Madeira"){
colMadeira = true;
}
if (other.gameObject.tag == "Corda"){
colCorda = true;
}
if (other.gameObject.tag == "Rock"){
colPedra = true;
}
}
void OntriggerExit(Collider other){
if (other.gameObject.tag == "Madeira"){
colMadeira = false;
}
if (other.gameObject.tag == "Corda"){
colCorda = false;
}
if (other.gameObject.tag == "Rock"){
colPedra = false;
}
}
}
Outra coisa, você tem variaveis com mesmo nome de classes, dentre várias outras coisinhas
Re: [Ajuda]Problema em Ontrigger
resumindo tudo , tava uma bagaceira será que funfa agora?
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Problema em Ontrigger
Ainda não... eu reformularia esse sistema pra falar a verdade e faria o sistema de craft dentro do inventário... Evita bastante tipos de bugs e erros
Re: [Ajuda]Problema em Ontrigger
e que eu to tentando fazer isso tipo the forest. Que nem vc falou.
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Problema em Ontrigger
TA rapido e efeiciente, so que quando executo a função ou tiro alguma , ela ainda fica ativada o 'AtivaDrop'
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Problema em Ontrigger
Apenas isto que controla esta variavel:
ela obrigatoriamente tem que ficar falsa se não estiver colidindo com algum dos 3 objetos
- Código:
if (colMadeira && colCorda && colPedra) {
ativardrop = true;
} else {
ativardrop = false;
}
ela obrigatoriamente tem que ficar falsa se não estiver colidindo com algum dos 3 objetos
Re: [Ajuda]Problema em Ontrigger
using UnityEngine;
using System.Collections;
public class DestroyColisoresFaca : MonoBehaviour
{
public FacaCraft machadocraft;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Madeira") || other.gameObject.CompareTag("Rock") || other.gameObject.CompareTag("Corda"))
{
Destroy(other.gameObject);
Destroy(other.gameObject);
Destroy(other.gameObject);
}
}
}
using System.Collections;
public class DestroyColisoresFaca : MonoBehaviour
{
public FacaCraft machadocraft;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Madeira") || other.gameObject.CompareTag("Rock") || other.gameObject.CompareTag("Corda"))
{
Destroy(other.gameObject);
Destroy(other.gameObject);
Destroy(other.gameObject);
}
}
}
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Problema em Ontrigger
Ok , vou desistir desse metodo de craft e tentar outro com botoes ja feitos e so fais verificar se ele tem no inventario.
Marcos aproveitando poderia me diser como ajeitar esse script, para que o mause fique ativo no menu construct e no menu craft?
script:
using UnityEngine;
using System.Collections;
using UnityStandardAssets.Characters.FirstPerson;
public class PauseGame : MonoBehaviour
{
private bool ShowguiP, pauseativado, constructativado, craftativado;
public GameObject PauseMenu, Player, inventario, MenuConstruct;
public Transform FPSController, Inventario1;
// Use this for initialization
void Start()
{
craftativado = false;
constructativado = false;
pauseativado = false;
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
ShowguiP = false;
PauseMenu.SetActive(false);
MenuConstruct.SetActive(false);
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = true;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = true;
FPSController.GetComponent<FirstPersonController>().enabled = true;
Inventario1.GetComponent<Inventario>().enabled = true;
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
ShowguiP = !ShowguiP;
}
if (Input.GetKeyDown(KeyCode.X) && pauseativado == false)
{
constructativado = !constructativado;
}
if (Input.GetKeyDown(KeyCode.C) && pauseativado == false)
{
craftativado = !craftativado;
}
if (ShowguiP == true)
{
pauseativado = true;
Cursor.lockState = CursorLockMode.None;
Cursor.visible = (true);
PauseMenu.SetActive(true);
Time.timeScale = 0;
MenuConstruct.SetActive(false);
FPSController.GetComponent<FirstPersonController>().enabled = false;
Inventario1.GetComponent<Inventario>().enabled = false;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = false;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = false;
}
if (ShowguiP == false)
{
pauseativado = false;
if (constructativado == true || craftativado == true)
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = (true);
Time.timeScale = 0;
FPSController.GetComponent<FirstPersonController>().enabled = false;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = false;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = false;
if (craftativado == false)
{
MenuConstruct.SetActive(true);
}
}
else if (constructativado == false || craftativado == false)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
MenuConstruct.SetActive(false);
Time.timeScale = 1;
FPSController.GetComponent<FirstPersonController>().enabled = true;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = true;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = true;
}
PauseMenu.SetActive(false);
Time.timeScale = 1;
FPSController.GetComponent<FirstPersonController>().enabled = true;
Inventario1.GetComponent<Inventario>().enabled = true;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = true;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = true;
}
if (ShowguiP == false && constructativado == false)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
}
}
public void Continua()
{
ShowguiP = false;
pauseativado = false;
if (constructativado == true)
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = (true);
}
else
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
}
PauseMenu.SetActive(false);
MenuConstruct.SetActive(true);
Time.timeScale = 1;
FPSController.GetComponent<FirstPersonController>().enabled = true;
Inventario1.GetComponent<Inventario>().enabled = true;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = true;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = true;
if (ShowguiP == false && constructativado == false)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
}
}
public void Opções()
{
}
public void Quit()
{
Application.Quit();
}
}
Marcos aproveitando poderia me diser como ajeitar esse script, para que o mause fique ativo no menu construct e no menu craft?
script:
using UnityEngine;
using System.Collections;
using UnityStandardAssets.Characters.FirstPerson;
public class PauseGame : MonoBehaviour
{
private bool ShowguiP, pauseativado, constructativado, craftativado;
public GameObject PauseMenu, Player, inventario, MenuConstruct;
public Transform FPSController, Inventario1;
// Use this for initialization
void Start()
{
craftativado = false;
constructativado = false;
pauseativado = false;
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
ShowguiP = false;
PauseMenu.SetActive(false);
MenuConstruct.SetActive(false);
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = true;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = true;
FPSController.GetComponent<FirstPersonController>().enabled = true;
Inventario1.GetComponent<Inventario>().enabled = true;
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
ShowguiP = !ShowguiP;
}
if (Input.GetKeyDown(KeyCode.X) && pauseativado == false)
{
constructativado = !constructativado;
}
if (Input.GetKeyDown(KeyCode.C) && pauseativado == false)
{
craftativado = !craftativado;
}
if (ShowguiP == true)
{
pauseativado = true;
Cursor.lockState = CursorLockMode.None;
Cursor.visible = (true);
PauseMenu.SetActive(true);
Time.timeScale = 0;
MenuConstruct.SetActive(false);
FPSController.GetComponent<FirstPersonController>().enabled = false;
Inventario1.GetComponent<Inventario>().enabled = false;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = false;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = false;
}
if (ShowguiP == false)
{
pauseativado = false;
if (constructativado == true || craftativado == true)
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = (true);
Time.timeScale = 0;
FPSController.GetComponent<FirstPersonController>().enabled = false;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = false;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = false;
if (craftativado == false)
{
MenuConstruct.SetActive(true);
}
}
else if (constructativado == false || craftativado == false)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
MenuConstruct.SetActive(false);
Time.timeScale = 1;
FPSController.GetComponent<FirstPersonController>().enabled = true;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = true;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = true;
}
PauseMenu.SetActive(false);
Time.timeScale = 1;
FPSController.GetComponent<FirstPersonController>().enabled = true;
Inventario1.GetComponent<Inventario>().enabled = true;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = true;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = true;
}
if (ShowguiP == false && constructativado == false)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
}
}
public void Continua()
{
ShowguiP = false;
pauseativado = false;
if (constructativado == true)
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = (true);
}
else
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
}
PauseMenu.SetActive(false);
MenuConstruct.SetActive(true);
Time.timeScale = 1;
FPSController.GetComponent<FirstPersonController>().enabled = true;
Inventario1.GetComponent<Inventario>().enabled = true;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = true;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = true;
if (ShowguiP == false && constructativado == false)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
}
}
public void Opções()
{
}
public void Quit()
{
Application.Quit();
}
}
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Problema em Ontrigger
vou criar outro topico!
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Tópicos semelhantes
» PROBLEMA COM ONTRIGGER, VECTOR
» [Resolvido]Problema em Ontrigger
» (AJUDA) problema com teletransporte
» Problema com Animações - AJUDA!
» Ajuda com problema no collider
» [Resolvido]Problema em Ontrigger
» (AJUDA) problema com teletransporte
» Problema com Animações - AJUDA!
» Ajuda com problema no collider
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos