Como evitar de usar um item quando ele não estiver equipado
2 participantes
Página 1 de 1
Como evitar de usar um item quando ele não estiver equipado
Tenho uma dúvida meio besta mas que está me fazendo quebrar a cabeça.
Estou começando com c# e pra praticar fiz uma lanterna que meu personagem pode pegar, dropar, e ligar apertando "F", o problema é que ela liga mesmo quando não está na mão do player e eu não faço idéia de como evitar que isso aconteça.
Ficaria grato se alguém pudesse me ajudar e explicar onde estou errando
Estou começando com c# e pra praticar fiz uma lanterna que meu personagem pode pegar, dropar, e ligar apertando "F", o problema é que ela liga mesmo quando não está na mão do player e eu não faço idéia de como evitar que isso aconteça.
Ficaria grato se alguém pudesse me ajudar e explicar onde estou errando
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Flashlight : MonoBehaviour
{
public GameObject ON;
public GameObject OFF;
private bool isON;
private AudioSource source;
void Start()
{
source = GetComponent<AudioSource>();
ON.SetActive(false);
OFF.SetActive(true);
isON = false;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.F))
{
if (isON)
{
ON.SetActive(false);
OFF.SetActive(true);
source.Play();
}
if (!isON)
{
ON.SetActive(true);
OFF.SetActive(false);
source.Play();
}
isON = !isON;
}
}
}
Ewfc2005- Iniciante
- PONTOS : 1202
REPUTAÇÃO : 0
Respeito as regras :
Re: Como evitar de usar um item quando ele não estiver equipado
Tu podes pôr mais uma verificação condicional com uma variável que alega se o objeto (lanterna) está na mão do objeto de foco (personagem):
Eu desconheço como funciona seu sistema de soltar a lanterna, porém o necessário seria somente pegar a variável isOnTheHand e defini-la como verdadeira no momento que o personagem pegar a lanterna e fazer contrário quando ele soltá-la.
Espero ter ajudado.
- Código.:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Flashlight : MonoBehaviour
{
public GameObject ON;
public GameObject OFF;
private bool isON;
public bool isOnTheHand;
private AudioSource source;
void Start()
{
source = GetComponent<AudioSource>();
ON.SetActive(false);
OFF.SetActive(true);
isON = false;
isOnTheHand = false; // Supondo que a lanterna não esteja inicialmente na mão do personagem.
}
void Update()
{
if (isOnTheHand) // Se a lanterna estiver na mão do personagem, segue a progressão do código.
{
if (Input.GetKeyDown(KeyCode.F))
{
if (isON)
{
ON.SetActive(false);
OFF.SetActive(true);
source.Play();
}
else
{
ON.SetActive(true);
OFF.SetActive(false);
source.Play();
}
isON = !isON;
}
}
}
}
Eu desconheço como funciona seu sistema de soltar a lanterna, porém o necessário seria somente pegar a variável isOnTheHand e defini-la como verdadeira no momento que o personagem pegar a lanterna e fazer contrário quando ele soltá-la.
Espero ter ajudado.
classicandsimple- ProgramadorMaster
- PONTOS : 1266
REPUTAÇÃO : 26
Áreas de atuação : Desenvolvimento de software (iniciante com linguagem C).
Respeito as regras :
Re: Como evitar de usar um item quando ele não estiver equipado
AMIGO DEU CERTO, MUITO OBRIGADO MESMO, Foi bem simples do jeito que você explicou e me ajudou muito.classicandsimple escreveu:Tu podes pôr mais uma verificação condicional com uma variável que alega se o objeto (lanterna) está na mão do objeto de foco (personagem):
- Código.:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Flashlight : MonoBehaviour
{
public GameObject ON;
public GameObject OFF;
private bool isON;
public bool isOnTheHand;
private AudioSource source;
void Start()
{
source = GetComponent<AudioSource>();
ON.SetActive(false);
OFF.SetActive(true);
isON = false;
isOnTheHand = false; // Supondo que a lanterna não esteja inicialmente na mão do personagem.
}
void Update()
{
if (isOnTheHand) // Se a lanterna estiver na mão do personagem, segue a progressão do código.
{
if (Input.GetKeyDown(KeyCode.F))
{
if (isON)
{
ON.SetActive(false);
OFF.SetActive(true);
source.Play();
}
else
{
ON.SetActive(true);
OFF.SetActive(false);
source.Play();
}
isON = !isON;
}
}
}
}
Eu desconheço como funciona seu sistema de soltar a lanterna, porém o necessário seria somente pegar a variável isOnTheHand e defini-la como verdadeira no momento que o personagem pegar a lanterna e fazer contrário quando ele soltá-la.
Espero ter ajudado.
Ewfc2005- Iniciante
- PONTOS : 1202
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» COMO EVITAR QUE UM OBJETO (PLAYER,ITEM ETC...) ATRAVESSE UMA PAREDE.
» Como fazer o fov reduzir quando a telca não estiver sendo pressionada ?
» Como faço para quando pegar item,sai umas particulas para cima e ai colide com o chão?
» Quando a porta estiver trancada dar tipo uma tremedeira
» Aumentar dano do tiro quando jogador pega um item
» Como fazer o fov reduzir quando a telca não estiver sendo pressionada ?
» Como faço para quando pegar item,sai umas particulas para cima e ai colide com o chão?
» Quando a porta estiver trancada dar tipo uma tremedeira
» Aumentar dano do tiro quando jogador pega um item
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos