COLETAR ITENS
+2
leonardolopes
Nightos
6 participantes
Página 1 de 1
COLETAR ITENS
olá amigos, eu estou trabalhando em um sistema de inventario pro meu jogo e tenho 2 problemas, o primeiro é que no script que estou usando de coletar os itens, o texto pra apertar E para coletar, aparece quando o player colide com o box collider do objeto, mas o texto aparece independente de onde o player está olhando e eu queria que o texto aparecesse somente quando o player olhar diretamente pro objeto; O outro problema é que eu queria fazer sistema de coleta de gravetos/pedras igual no the forest, que o player pode coletar qualquer graveto/pedra do chão e eles aparecem no inventario, mas existe um limite que é 8 gravetos e 3 pedras (por exemplo), e quando esse limite chegar o player não pode coletar mais esses itens e os que ele tentar pegar ficam caindo no chão, pra mostrar que o inventario já está cheio. Se alguém puder me ajudar ficarei muito feliz e agradecido.
Script que eu uso de coleta de itens:
Script que eu uso de coleta de itens:
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class PegarItem : MonoBehaviour {
private bool estaComArma, pertoDaArma = false;
public GameObject armaNoCHao, armaNaMao, armaInvent, outraArma, outraArma2, outraArma3;
public Text aperteE;
public Image Lanterna;
public Image Carga;
void Start () {
aperteE.enabled = false;
Lanterna.enabled = false;
Carga.enabled = false;
}
void Update () {
if (!estaComArma) {
armaNaMao.SetActive (false);
}
if (!estaComArma && pertoDaArma) {
if (Input.GetKeyDown ("e")) {
armaNaMao.SetActive (true);
Destroy (armaNoCHao);
estaComArma = true;
armaInvent.SetActive (true);
aperteE.enabled = false;
outraArma.SetActive (false);
outraArma2.SetActive (false);
outraArma3.SetActive (false);
Lanterna.enabled = true;
Carga.enabled = true;
}
}
}
void OnTriggerEnter (Collider col) {
if (col.gameObject.tag == "Player") {
pertoDaArma = true;
aperteE.enabled = true;
}
}
void OnTriggerExit (Collider col) {
if (col.gameObject.tag == "Player") {
pertoDaArma = false;
aperteE.enabled = false;
}
}
}
leonardolopes- Avançado
- PONTOS : 2000
REPUTAÇÃO : 3
Respeito as regras :
Re: COLETAR ITENS
Eu estou aprendendo a programar ainda, mas vendo sua dúvida acabei pensando algo em relação a dúvida de como interagir com objetos que você está olhando:
https://prnt.sc/q4p5yp
https://prnt.sc/q4p6hu
eu acredito que da para fazer um boxcollider agarrar no centro da câmara, e esse boxcolider interagir com os outros meio que simulando essa coisa de interagir com as coisas que você está olhando.
não é lá grandes coisas, e talvez exista algo melhor que isso.
https://prnt.sc/q4p5yp
https://prnt.sc/q4p6hu
eu acredito que da para fazer um boxcollider agarrar no centro da câmara, e esse boxcolider interagir com os outros meio que simulando essa coisa de interagir com as coisas que você está olhando.
não é lá grandes coisas, e talvez exista algo melhor que isso.
Nightos- Iniciante
- PONTOS : 1829
REPUTAÇÃO : 0
Respeito as regras :
Re: COLETAR ITENS
Eu n entendi muito bem como funciona, acho que tem como fazer por script mesmo, eu já tinha visto e não lembro como que faz, mas obrigado mesmo assim mano.
leonardolopes- Avançado
- PONTOS : 2000
REPUTAÇÃO : 3
Respeito as regras :
Re: COLETAR ITENS
Tenta ver esse video, está em inglês mais da pra entender de forma bem fácil
acredito que seja isso que você esteja procurando.
acredito que seja isso que você esteja procurando.
Re: COLETAR ITENS
muito obrigado, é exatamente isso que eu estava procurando. Vc sabe como resolver o segundo problema?
leonardolopes- Avançado
- PONTOS : 2000
REPUTAÇÃO : 3
Respeito as regras :
Re: COLETAR ITENS
Infelizmente nãoleonardolopes escreveu:muito obrigado, é exatamente isso que eu estava procurando. Vc sabe como resolver o segundo problema?
Espero que consiga resolver
Boa sorte
Re: COLETAR ITENS
leonardolopes tudo bem, para o seu segundo problema você deve criar uma variável que determine a quantidade máxima de itens, e depois faz uma verificação quando fizer a coleta exemplo:
- Código:
void OnTriggerEnter (Collider col) {
if (col.gameObject.tag == "Player") {
pertoDaArma = true;
if(quantItemInventario < quantMaxItem){
aperteE.enabled = true;
}
}
}
igortesch- Iniciante
- PONTOS : 2013
REPUTAÇÃO : 0
Idade : 31
Respeito as regras :
Re: COLETAR ITENS
Mas como que eu faço pra quando o player pegar qualquer graveto, 1 graveto aparece no inventario, se ele pegar outro +1 aparece no inventario e vai assim até a quantidade limite. Eu pensei em colocar tag nos gravetos, mas eu preciso achar uma maneira de quando pegar um GameObject com a tag dos gravetos, 1 aparece no inventario e se pegar outro GameObject com tag dos gravetos, o segundo graveto aparece no inventario...e quando chegar no limite, se você tentar pegar outro graveto ele levanta e depois cai, para mostrar que não é possível mais coletar.
leonardolopes- Avançado
- PONTOS : 2000
REPUTAÇÃO : 3
Respeito as regras :
Re: COLETAR ITENS
antes de criar um jogo com esse sistema, tenta aprender um pouco mais sobre c# de preferencia vc pode focar em canais de desenvolvimento no unity, recomendo também, aprender com canais gringos, tem mt coisa util.leonardolopes escreveu:Mas como que eu faço pra quando o player pegar qualquer graveto, 1 graveto aparece no inventario, se ele pegar outro +1 aparece no inventario e vai assim até a quantidade limite. Eu pensei em colocar tag nos gravetos, mas eu preciso achar uma maneira de quando pegar um GameObject com a tag dos gravetos, 1 aparece no inventario e se pegar outro GameObject com tag dos gravetos, o segundo graveto aparece no inventario...e quando chegar no limite, se você tentar pegar outro graveto ele levanta e depois cai, para mostrar que não é possível mais coletar.
Re: COLETAR ITENS
Eu estou estudando sobre o assunto, esse é o meu primeiro jogo e falta muito oque aprender ainda, consegui fazer muitas coisas no meu jogo graças a vocês aqui do fórum, vou dar uma olhada em alguns canais por ai.
leonardolopes- Avançado
- PONTOS : 2000
REPUTAÇÃO : 3
Respeito as regras :
Re: COLETAR ITENS
Bom olhe esse exemplo como eu faço
O script de Dropar objetos
Esse e o script para criar os objetos do jogo
Clicando no botao direito do mause voce vai ver uma nova opçao para criar seus objetos
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Linq;
public class Inventario : MonoBehaviour{
public List<Objeto> objetos;//lista de Objetos do jogo
public int QuantidadeAtual;
public static Inventario instance;//Usando esse metodo para chamar em outro script
void Start()
{
instance= this;
QuantidadeAtual = objetos.Count;//Quantidade atual de objetos
}
void Update()
{
QuantidadeAtual = objetos.Count;//Quantidade atual de objetos
PassarValor.objetos = objetos;
}
public void Adicionar(Objeto ob)//Adicionar um objeto
{
objetos.Add(ob);
QuantidadeAtual = objetos.Count;
}
public void RemoveObjeto(Objeto ob)//Remover um objeto
{
for (int i = 0; i < objetos.Count; i++)
{
if(objetos[i] == ob)
{
objetos.RemoveAt(i);
QuantidadeAtual = objetos.Count;
break;
}
}
}
public bool CheckObj(Objeto obj)//Checar se exite
{
for (int i = 0; i < objetos.Count; i++)
{
if(objetos[i] == obj)
{
return true;
}
}
return false;
}
public void DeletarObjetos()//Apagar todos objetos
{
objetos.Clear();
QuantidadeAtual = objetos.Count;
}
}
O script de Dropar objetos
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjetoDrop : MonoBehaviour {
public Objeto objeto;
// Use this for initialization
void Start () {
}
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
Inventario.instance.Adicionar(objeto);//Adicionar o objeto no inventario
Destroy(gameObject,2);//Destroir o objeto
}
}
}
Esse e o script para criar os objetos do jogo
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu]
public class Objeto : ScriptableObject{
public int id;
public string nome;
public string Descricao;
public Sprite image;
}
Clicando no botao direito do mause voce vai ver uma nova opçao para criar seus objetos
Re: COLETAR ITENS
Na lista dos objetos usei um script para criar os objetos mais sua lista pode ser qualquer coisa
Ex:
Ex:
- Código:
public List<Objeto> objetos;//lista de Objetos do jogo
public List<GaneObject> objetos;//lista de Objetos do jogo
Re: COLETAR ITENS
Nossa cara, você me ajudou muito agora, estava precisando de algo assim, mas ainda sou novo em programação e não sabia como fazer, muito obrigado
leonardolopes- Avançado
- PONTOS : 2000
REPUTAÇÃO : 3
Respeito as regras :
Re: COLETAR ITENS
Amigo, se quer pegar os Objetos quando olha para eles e aperta algum botão, tera que usar o Raycast.
Segue o vídeo.
Segue o vídeo.
mecjo- Membro
- PONTOS : 2647
REPUTAÇÃO : 10
Respeito as regras :
Re: COLETAR ITENS
Eu estou acompanhando as aulas do Marcos schultz, estou na parte 11 ainda, mas por que ele não está postando mais? Os vídeos estão me ajudando demais.
leonardolopes- Avançado
- PONTOS : 2000
REPUTAÇÃO : 3
Respeito as regras :
Tópicos semelhantes
» Coletar itens e mostrar na HUD <<<<<<<<<<<<<<
» Curar vida ao coletar itens
» duvida coletar itens e mudar de fase
» Coletar
» Coletar arma
» Curar vida ao coletar itens
» duvida coletar itens e mudar de fase
» Coletar
» Coletar arma
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos