Conflito de ações HELP
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Conflito de ações HELP
o negocio e o seguinte
eu tenho um lugar que abre com senha
eu chego perto
o cursor de mouse muda indicando que er algo que eu possa cliclar
clico
e ai aparece o lugar de botar a senha
ok
quando eu clico
meu mouse aparece
meu player nao se meche
e minha camera nao se meche
perfeito
exatamente oq eu queria
depois que coloco a senha ele voltar ao normal
ou se eu apertar esc
tranquilo
so que depois de algum tempo
nos precisamos de um menu pause
ai eu crio o menu pause
e fica dando conflito...pq a bool que eu desativo e a mesma do cofre
for exemple
quando a bool Estaemuso; esta desabilitada ... minhas camera e player se meche
else
eles se mechem
so que
quando eu dou pause
continua se mechendo
pq aaaaaa er um negocio complicado...vo postar oq ta rolando
vou postar o tutorial desse tipo de cofre...pfv nao copiem
o script todo ta ai...mais ta meio que explicado
as partes que ta em confusao er SAFE e INVENTORY
eu tenho um lugar que abre com senha
eu chego perto
o cursor de mouse muda indicando que er algo que eu possa cliclar
clico
e ai aparece o lugar de botar a senha
ok
quando eu clico
meu mouse aparece
meu player nao se meche
e minha camera nao se meche
perfeito
exatamente oq eu queria
depois que coloco a senha ele voltar ao normal
ou se eu apertar esc
tranquilo
so que depois de algum tempo
nos precisamos de um menu pause
ai eu crio o menu pause
e fica dando conflito...pq a bool que eu desativo e a mesma do cofre
for exemple
quando a bool Estaemuso; esta desabilitada ... minhas camera e player se meche
else
eles se mechem
so que
quando eu dou pause
continua se mechendo
pq aaaaaa er um negocio complicado...vo postar oq ta rolando
vou postar o tutorial desse tipo de cofre...pfv nao copiem
o script todo ta ai...mais ta meio que explicado
as partes que ta em confusao er SAFE e INVENTORY
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityStandardAssets.ImageEffects;
public class ControlObjects : MonoBehaviour {
[Header("Menu")]
public static bool SemAmbienteObscure;
public Behaviour SSAO;
[Header("Textos Controles")]
public Text MoverPlanta;
public Text PegarDiario;
public Text PegarPendrive;
[Header("Inventory")]
public Canvas InvPanel;
private bool usandoinventario;
public Button Exitinv;
[Header("OutSideLights")]
public GameObject out1;
public GameObject out2;
[Header("Lights")]
public Light Office;
public Light Cozinha;
public Light Sala;
public Light Quarto;
public Light Banheiro;
[Header("Mouse")]
public Image Normal;
public Image Interact;
[Header("Safe")]
private bool Jausousafe;
private bool UsandoSafe;
private bool PodeClicar1;
private bool PodeClicar2;
private bool PodeClicar3;
private bool PodeClicar4;
private bool PodeDescer1;
private bool PodeDescer2;
private bool PodeDescer3;
private bool PodeDescer4;
public Canvas panelSafe;
//Numbers
public Text Number1;
public Text Number2;
public Text Number3;
public Text Number4;
private int N1 = 3;
private int N2 = 6;
private int N3 = 5;
private int N4 = 7;
public int CN1;
public int CN2;
public int CN3;
public int CN4;
//Increase
public Button Inc1;
public Button Inc2;
public Button Inc3;
public Button Inc4;
//Decrase
public Button Dec1;
public Button Dec2;
public Button Dec3;
public Button Dec4;
//Detection
public Image Detecion;
private bool comecarcronosafe;
private float cronometrosafe;
private bool acaboutempo;
[Header("Laptop")]
private string laptopkey = "senha";
private bool bolofice;
private bool bolcozinha;
private bool bolsala;
private bool bolquarto;
private bool bolbanheiro;
private bool Podemoverplanta;
private bool JamoveuPlanta;
void Start () {
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
//Safe
panelSafe.enabled = false;
UsandoSafe = false;
PodeClicar1 = true;
PodeClicar2 = true;
PodeClicar3 = true;
PodeClicar4 = true;
PodeDescer1 = false;
PodeDescer2 = false;
PodeDescer3 = false;
PodeDescer4 = false;
//OUTSIDE LIGHTS
out1.gameObject.SetActive (false);
out2.gameObject.SetActive (false);
//TXT CONTROLE
PegarDiario.enabled = false;
MoverPlanta.enabled = false;
PegarPendrive.enabled = false;
Interact.enabled = false;
bolofice = false;
bolcozinha = false;
bolsala = false;
bolquarto = false;
bolbanheiro = false;
InvPanel.enabled = false;
Podemoverplanta = false;
JamoveuPlanta = false;
acaboutempo = false;
comecarcronosafe = false;
Detecion.enabled = false;
usandoinventario = false;
}
void Update () {
if (SemAmbienteObscure == true) {
SSAO.enabled = false;
} else {
SSAO.enabled = true;
}
if (comecarcronosafe == true) {
cronometrosafe += 1;
}
if (cronometrosafe >= 15) {
cronometrosafe = 0;
comecarcronosafe = false;
acaboutempo = true;
}
//INVENTORY SYSTEM==================================================================
Exitinv.onClick = new Button.ButtonClickedEvent();
Exitinv.onClick.AddListener (() => ExitInventory ());
if (Input.GetKeyDown (KeyCode.Tab)) {
usandoinventario = !usandoinventario;
}
if (usandoinventario == true) {
InvPanel.enabled = true;
UsandoSafe = true;
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
ControlPlayer.EstaUsandoSafe = true;
}
//EXIT INVENTORY SYSTEM=============================================================
//SAFE SYSTEM======================================================================
//Numbers
Number1.GetComponent<Text> ().text = ((int)N1).ToString ();
Number2.GetComponent<Text> ().text = ((int)N2).ToString ();
Number3.GetComponent<Text> ().text = ((int)N3).ToString ();
Number4.GetComponent<Text> ().text = ((int)N4).ToString ();
if (N1 == CN1 && N2 == CN2 && N3 == CN3 && N4 == CN4) {
comecarcronosafe = true;
Detecion.enabled = true;
}
if (acaboutempo == true) {
UsandoSafe = false;
panelSafe.gameObject.SetActive (false);
Jausousafe = true;
ControlPlayer.EstaUsandoSafe = false;
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
acaboutempo = false;
}
//NEGATIVE------------------------------------------
if (N1 == 0) {
PodeClicar1 = true;
PodeDescer1 = false;
} else {
PodeDescer1 = true;
}
if (N2 == 0) {
PodeClicar2 = true;
PodeDescer2 = false;
} else {
PodeDescer2 = true;
}
if (N3 == 0) {
PodeClicar3 = true;
PodeDescer3 = false;
} else {
PodeDescer3 = true;
}
if (N4 == 0) {
PodeClicar4 = true;
PodeDescer4 = false;
} else {
PodeDescer4 = true;
}
//POSITIVE---------------------------------------
if (N1 == 9) {
PodeClicar1 = false;
PodeDescer1 = true;
} else {
PodeClicar1 = true;
}
if (N2 == 9) {
PodeClicar2 = false;
PodeDescer2 = true;
}else {
PodeClicar2 = true;
}
if (N3 == 9) {
PodeClicar3 = false;
PodeDescer3 = true;
}else {
PodeClicar3 = true;
}
if (N4 == 9) {
PodeClicar4 = false;
PodeDescer4 = true;
}else {
PodeClicar4 = true;
}
//ButtonsEvent - INCREASE
Inc1.onClick = new Button.ButtonClickedEvent();
Inc2.onClick = new Button.ButtonClickedEvent();
Inc3.onClick = new Button.ButtonClickedEvent();
Inc4.onClick = new Button.ButtonClickedEvent();
//ButtonsEvent - DECREASE
Dec1.onClick = new Button.ButtonClickedEvent();
Dec2.onClick = new Button.ButtonClickedEvent();
Dec3.onClick = new Button.ButtonClickedEvent();
Dec4.onClick = new Button.ButtonClickedEvent();
if(PodeClicar1 == true){
Inc1.onClick.AddListener (() => Increase1 ());
}
if (PodeDescer1 == true) {
Dec1.onClick.AddListener (() => Decrease1 ());
}
if (PodeClicar2 == true) {
Inc2.onClick.AddListener (() => Increase2 ());
}
if (PodeDescer2 == true) {
Dec2.onClick.AddListener (() => Decrease2 ());
}
if (PodeClicar3 == true) {
Inc3.onClick.AddListener (() => Increase3 ());
}
if (PodeDescer3 == true) {
Dec3.onClick.AddListener (() => Decrease3 ());
}
if (PodeClicar4 == true) {
Inc4.onClick.AddListener (() => Increase4 ());
}
if (PodeDescer4 == true) {
Dec4.onClick.AddListener (() => Decrease4 ());
}
//SAFE
if(UsandoSafe == true){
if (Input.GetKeyDown (KeyCode.M)) {
UsandoSafe = false;
}
}
if (UsandoSafe == false) {
panelSafe.enabled = false;
ControlPlayer.EstaUsandoSafe = false;
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
//EXIT SAFE SYSTEM===================================================================================
RaycastHit hit = new RaycastHit ();
Vector3 dir = transform.TransformDirection (Vector3.forward);
Debug.DrawRay (transform.position, dir * 2, Color.red);
if (Physics.Raycast (transform.position, dir, out hit, 2.5f)) {
//ACTIONS------------------------------------------------------------------------
if (Input.GetKeyDown (KeyCode.Mouse0)) {
//OFFICE
if (hit.collider.gameObject.tag == "LGTOffice") {
bolofice = !bolofice;
}
//COZINHA
if (hit.collider.gameObject.tag == "LGTCozinha") {
bolcozinha = !bolcozinha;
}
//SALA
if (hit.collider.gameObject.tag == "LGTSala") {
bolsala = !bolsala;
}
//QUARTO
if (hit.collider.gameObject.tag == "LGTQuarto") {
bolquarto = !bolquarto;
}
//BANHEIRO
if (hit.collider.gameObject.tag == "LGTBanheiro") {
bolbanheiro = !bolbanheiro;
}
//Safe
if (hit.collider.gameObject.tag == "Safe" && Jausousafe == false) {
panelSafe.enabled = true;
UsandoSafe = true;
ControlPlayer.EstaUsandoSafe = true;
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
}
//PLANTASALA
if (hit.collider.gameObject.tag == "PlantaSala" && Podemoverplanta == true) {
MovPlant.Mover = true;
JamoveuPlanta = true;
}
//Noclick--------------------------------------------------------------------------------------
}
//OFFICE
if (hit.collider.gameObject.tag == "LGTOffice") {
Interact.enabled = true;
}
//COZINHA
if (hit.collider.gameObject.tag == "LGTCozinha") {
Interact.enabled = true;
}
//SALA
if (hit.collider.gameObject.tag == "LGTSala") {
Interact.enabled = true;
}
//QUARTO
if (hit.collider.gameObject.tag == "LGTQuarto") {
Interact.enabled = true;
}
//BANHEIRO
if (hit.collider.gameObject.tag == "LGTBanheiro") {
Interact.enabled = true;
}
//NoInteractable
if (hit.collider.gameObject.tag == "NoInteractable") {
Interact.enabled = false;
}
//SAFE
if (hit.collider.gameObject.tag == "Safe" && Jausousafe == false) {
Interact.enabled = true;
}
//PLANTASALA
if (hit.collider.gameObject.tag == "PlantaSala" && JamoveuPlanta == false) {
Interact.enabled = true;
MoverPlanta.enabled = true;
Podemoverplanta = true;
} else {
Podemoverplanta = false;
MoverPlanta.enabled = false;
}
//DIARIO
if (hit.collider.gameObject.tag == "Diario") {
PegarDiario.enabled = true;
Interact.enabled = true;
} else {
PegarDiario.enabled = false;
}
//PENDRIVE
if (hit.collider.gameObject.tag == "Pendrive") {
PegarPendrive.enabled = true;
Interact.enabled = true;
} else {
PegarPendrive.enabled = false;
}
}
//OFFICE
if (bolofice == true) {
Office.intensity = 2;
} else {
Office.intensity = 0;
}
//COZINHA
if (bolcozinha == true) {
Cozinha.intensity = 1;
} else {
Cozinha.intensity = 0;
}
//SALA
if (bolsala == true) {
Sala.intensity = 1;
} else {
Sala.intensity = 0;
}
//QUARTO
if (bolquarto == true) {
Quarto.intensity = 2;
} else {
Quarto.intensity = 0;
}
//BANHEIRO
if (bolbanheiro == true) {
Banheiro.intensity = 3;
} else {
Banheiro.intensity = 0;
}
}
//Finish Void Updte-----------------------------------------------------------------------------------------------------
//Increase Voids
void Increase1 (){
N1 += 1;
}
void Increase2 (){
N2 += 1;
}
void Increase3 (){
N3 += 1;
}
void Increase4 (){
N4 += 1;
}
//Decrease Voids
void Decrease1 (){
N1 -= 1;
}
void Decrease2 (){
N2 -= 1;
}
void Decrease3 (){
N3 -= 1;
}
void Decrease4 (){
N4 -= 1;
}
void ExitInventory(){
InvPanel.enabled = false;
UsandoSafe = false;
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
ControlPlayer.EstaUsandoSafe = false;
usandoinventario = false;
}
}
Re: Conflito de ações HELP
demorei um pouco e ainda não entendi muito bem seu script!
poste esse script ControlPlayer
poste esse script ControlPlayer
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Conflito de ações HELP
desculpa a demora...to cheio de coisaWeslley escreveu:demorei um pouco e ainda não entendi muito bem seu script!
poste esse script ControlPlayer
ta ai
- Código:
using UnityEngine;
using System.Collections;
using UnityStandardAssets.Characters.FirstPerson;
public class ControlPlayer : MonoBehaviour {
private FirstPersonController Controlador;
public static bool EstaUsandoSafe;
public static bool EstaUsandoInventory;
//AGACHAR
public bool IsCrouched;
public float SpeedCrouching;
void Awake () {
Controlador = GetComponent<FirstPersonController> ();
}
void Start () {
EstaUsandoSafe = false;
EstaUsandoInventory = false;
}
void Update () {
//SAFE
if (EstaUsandoSafe == true) {
Controlador.enabled = false;
} else {
Controlador.enabled = true;
}
//AGACHAR//// aqui eu ia fazer um sistema de agachar mais nao achei ate hj '-'
}
}
Re: Conflito de ações HELP
conseguiu Weslley??Weslley escreveu:demorei um pouco e ainda não entendi muito bem seu script!
poste esse script ControlPlayer
Re: Conflito de ações HELP
Bom pra começar você deveria da uma "polida" no script esta muito bagunçado há muitas verificações IF na void UPDATE que deve estar causando o conflito
são muitas variáveis desnecessárias que você poderia reduzir usando classes abstratas você pode ver mais sobre isso aqui
https://www.youtube.com/playlist?list=PL4bclFQBqOzjsK_hFPdL_-iDKwK8_245Q
e algumas coisa sobre Enum GamerController etc isso realmente e uma mão na roda para essas coisas, você pode usar o conceito singleton segue os links
https://www.youtube.com/watch?v=TzNpBFfgS0s
https://www.schultzgames.com/t2702-tutorialsingleton-a-melhor-forma-de-acessar-a-classe?highlight=singleton
nessa playlist você vai algo sobre GamerController
https://www.youtube.com/watch?v=MrvluDWDSwI&list=PLgecLxzHBSbMZvi-EHALbvpZB4eXVcv2K
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/abstract-and-sealed-classes-and-class-members
um simples método como maquina de estado resolvera seu problema é evitara os futuros :D
eu não consigui usar muito bem esse script tem muita coisa para setar ;-;
mais enfim voltando para o problema oque eu pude verificar e que quando N1 == CN1 && N2 == CN2 && N3 == CN3 && N4 == CN4 comecarcronosafe vai ser sempre true quado passar o tempo acaboutempo vai ser true é vai entrar nesse bloco deixando o ControlPlayer.EstaUsandoSafe = false; assim deixando o FirstPersonController habilitado
isso foi o que pude verificar aqui por que tive que desmanchar seu código, mas você pode verificar isso usando um print ou um Debug.Log esse é o primeiro problema
seu outro problema é mais simples do que parece
aqui você verifica se UsandoSafe e false
Se UsandoSafe for false você vai sempre setar ControlPlayer.EstaUsandoSafe = false, ninguém vai conseguir trocar isso por que vai ter esse script modificando para false sempre
Se inscreva no meu Canal :D Meu Canal
são muitas variáveis desnecessárias que você poderia reduzir usando classes abstratas você pode ver mais sobre isso aqui
https://www.youtube.com/playlist?list=PL4bclFQBqOzjsK_hFPdL_-iDKwK8_245Q
e algumas coisa sobre Enum GamerController etc isso realmente e uma mão na roda para essas coisas, você pode usar o conceito singleton segue os links
https://www.youtube.com/watch?v=TzNpBFfgS0s
https://www.schultzgames.com/t2702-tutorialsingleton-a-melhor-forma-de-acessar-a-classe?highlight=singleton
nessa playlist você vai algo sobre GamerController
https://www.youtube.com/watch?v=MrvluDWDSwI&list=PLgecLxzHBSbMZvi-EHALbvpZB4eXVcv2K
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/abstract-and-sealed-classes-and-class-members
um simples método como maquina de estado resolvera seu problema é evitara os futuros :D
eu não consigui usar muito bem esse script tem muita coisa para setar ;-;
mais enfim voltando para o problema oque eu pude verificar e que quando N1 == CN1 && N2 == CN2 && N3 == CN3 && N4 == CN4 comecarcronosafe vai ser sempre true quado passar o tempo acaboutempo vai ser true é vai entrar nesse bloco deixando o ControlPlayer.EstaUsandoSafe = false; assim deixando o FirstPersonController habilitado
- Código:
if (acaboutempo == true)
{
UsandoSafe = false;
Jausousafe = true;
ControlPlayer.EstaUsandoSafe = false;
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
acaboutempo = false;
}
isso foi o que pude verificar aqui por que tive que desmanchar seu código, mas você pode verificar isso usando um print ou um Debug.Log esse é o primeiro problema
seu outro problema é mais simples do que parece
aqui você verifica se UsandoSafe e false
- Código:
if (UsandoSafe == false)
{
ControlPlayer.EstaUsandoSafe = false;
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
Se UsandoSafe for false você vai sempre setar ControlPlayer.EstaUsandoSafe = false, ninguém vai conseguir trocar isso por que vai ter esse script modificando para false sempre
Se inscreva no meu Canal :D Meu Canal
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Conflito de ações HELP
CARA so hj que parei para analizarWeslley escreveu:Bom pra começar você deveria da uma "polida" no script esta muito bagunçado há muitas verificações IF na void UPDATE que deve estar causando o conflito
são muitas variáveis desnecessárias que você poderia reduzir usando classes abstratas você pode ver mais sobre isso aqui
https://www.youtube.com/playlist?list=PL4bclFQBqOzjsK_hFPdL_-iDKwK8_245Q
e algumas coisa sobre Enum GamerController etc isso realmente e uma mão na roda para essas coisas, você pode usar o conceito singleton segue os links
https://www.youtube.com/watch?v=TzNpBFfgS0s
https://www.schultzgames.com/t2702-tutorialsingleton-a-melhor-forma-de-acessar-a-classe?highlight=singleton
nessa playlist você vai algo sobre GamerController
https://www.youtube.com/watch?v=MrvluDWDSwI&list=PLgecLxzHBSbMZvi-EHALbvpZB4eXVcv2K
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/abstract-and-sealed-classes-and-class-members
um simples método como maquina de estado resolvera seu problema é evitara os futuros :D
eu não consigui usar muito bem esse script tem muita coisa para setar ;-;
mais enfim voltando para o problema oque eu pude verificar e que quando N1 == CN1 && N2 == CN2 && N3 == CN3 && N4 == CN4 comecarcronosafe vai ser sempre true quado passar o tempo acaboutempo vai ser true é vai entrar nesse bloco deixando o ControlPlayer.EstaUsandoSafe = false; assim deixando o FirstPersonController habilitado
- Código:
if (acaboutempo == true)
{
UsandoSafe = false;
Jausousafe = true;
ControlPlayer.EstaUsandoSafe = false;
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
acaboutempo = false;
}
isso foi o que pude verificar aqui por que tive que desmanchar seu código, mas você pode verificar isso usando um print ou um Debug.Log esse é o primeiro problema
seu outro problema é mais simples do que parece
aqui você verifica se UsandoSafe e false
- Código:
if (UsandoSafe == false)
{
ControlPlayer.EstaUsandoSafe = false;
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
Se UsandoSafe for false você vai sempre setar ControlPlayer.EstaUsandoSafe = false, ninguém vai conseguir trocar isso por que vai ter esse script modificando para false sempre
Se inscreva no meu Canal :D Meu Canal
e sim
ajudou muito
consegui arrumar o erro vlw cara obg pelo seu tempo
Tópicos semelhantes
» [RESOLVIDO] box collider conflito
» [RESOLVIDO] Conflito NavMesh
» [RESOLVIDO] Conflito com Controles !
» [RESOLVIDO] Conflito entre bibliotecas (UnityEngine e System)
» [DÚVIDA] Ações antes do Play
» [RESOLVIDO] Conflito NavMesh
» [RESOLVIDO] Conflito com Controles !
» [RESOLVIDO] Conflito entre bibliotecas (UnityEngine e System)
» [DÚVIDA] Ações antes do Play
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos