Pegar item do chão
2 participantes
Página 1 de 1
Pegar item do chão
Ola eu gostaria de ajudar para criar um sistema de quando eu clicar com o botão direito do mouse desaparesa o item do senario e mande para o inventario.
Scritp do inventario:
Script do inventario in game:
Script do Player:
Scritp do inventario:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Inventario : MonoBehaviour {
public RectTransform content;
public List <GameObject> itens;
public int indice1 =-1, indice2 =-1;
public static bool _desenhaItens;
// Use this for initialization
public bool JuntaItens(Item Item1, Item Item2)
{
if(Item1.id!=Item2.id)
return false;
else
{
Item1.Qnt_atual = Item1.Qnt_atual+Item2.Qnt_atual;
if(Item1.Qnt_atual>Item1.Qnt_max)
{
Item2.Qnt_atual = Item1.Qnt_atual - Item1.Qnt_max;
Item1.Qnt_atual = Item1.Qnt_max;
}
else
{
Item2.Qnt_atual = 0;
return true;
}
}
return false;
}
public void AddItem(GameObject item)
{
for(int i =0; i<itens.Count; i++)
{
JuntaItens(itens[i].GetComponent<Item>(),item.GetComponent<Item>());
if(item.GetComponent<Item>().Qnt_atual==0)
{
DesenhaItens();
return;
}
}
itens.Add(item);
item.GetComponent<Item>().indice = itens.Count-1;
DesenhaItens();
}
public void TrocaItem(int indice)
{
if(indice1==-1)
{
indice1 = indice;
}
else
{
indice2 = indice;
if(!JuntaItens(itens[indice2].GetComponent<Item>(),itens[indice1].GetComponent<Item>()))
{
GameObject aux_ = itens[indice1];
itens[indice1] = itens[indice2];
itens[indice2] = aux_;
itens[indice1].GetComponent<Item>().indice = indice1;
itens[indice2].GetComponent<Item>().indice = indice2;
DesenhaItens();
}
indice1=-1;
indice2=-1;
}
}
protected void DesenhaItens()
{
_desenhaItens = true;
while(content.childCount>0)
{
Transform filho = content.GetChild(0);
filho.parent = null;
Destroy(filho.gameObject);
}
for(int i =0; i<itens.Count; i++)
{
GameObject item = Instantiate(itens[i],content.position,Quaternion.identity) as GameObject;
item.transform.parent = content.transform;
}
}
void Start () {
DesenhaItens();
}
// Update is called once per frame
void Update () {
}
}
Script do inventario in game:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InventarioInGame : Inventario {
public static bool _desenhaItens;
void DesenhaItensInGame()
{
if(_desenhaItens)
{
int qntItens = (Player._inventarioPlayer.itens.Count>10) ? 10 : Player._inventarioPlayer.itens.Count;
itens = Player._inventarioPlayer.itens.GetRange(0,qntItens);
DesenhaItens();
_desenhaItens = false;
}
}
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
DesenhaItensInGame();
}
}
Script do Player:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour {
static public Inventario _inventarioPlayer;
static public bool _pause = false;
public GameObject inventario;
GameObject[] menus ;
// Use this for initialization
void Start () {
_inventarioPlayer = inventario.GetComponent<Inventario>();
menus = GameObject.FindGameObjectsWithTag("MenuPrincipal");
OnOffMenus();
}
void OnOffMenus()
{
for(int i =0; i< menus.Length; i++)
menus[i].SetActive(_pause);
}
// Update is called once per frame
void Update () {
if(Input.GetKeyDown(KeyCode.E))
{
_pause=!_pause;
OnOffMenus();
}
}
}
PatifeCraft- Avançado
- PONTOS : 2870
REPUTAÇÃO : 6
Respeito as regras :
Re: Pegar item do chão
Quando fiz algo assim, eu fiz uma array com os objetos e cada 1 tinha uma bool ;-; quando pegava ela ficava true e o objeto do chão era eliminado ;-;
Tipo isso:
É apenas um exemplo provavelmente não funcionará...
Tipo isso:
- Código:
// Códigozinho para pegar... ;-;
void Update()
{
Raycast hit;
if(Physics.Raycast (transform.position,transform.forward,out hit,10))
{
// Pegará diretamente quando o raycast colidir, para fazer um click usa o Input e pah...
if(hit.tag == "Obj")
hit.transform.gameObject.GetComponent<Item>().naBolsa = true;
}
}
- Código:
//Códigozinho para destruir ;-;
public bool naBolsa = false;
void Update()
{
if(naBolsa)
{
Destroy(this.gameObject,1);
// O resto do código depende do script do inventario...
}
}
É apenas um exemplo provavelmente não funcionará...
Re: Pegar item do chão
eu não estou entendo muito bemPauloFR escreveu:Quando fiz algo assim, eu fiz uma array com os objetos e cada 1 tinha uma bool ;-; quando pegava ela ficava true e o objeto do chão era eliminado ;-;
Tipo isso:
- Código:
// Códigozinho para pegar... ;-;
void Update()
{
Raycast hit;
if(Physics.Raycast (transform.position,transform.forward,out hit,10))
{
// Pegará diretamente quando o raycast colidir, para fazer um click usa o Input e pah...
if(hit.tag == "Obj")
hit.transform.gameObject.GetComponent<Item>().naBolsa = true;
}
}
- Código:
//Códigozinho para destruir ;-;
public bool naBolsa = false;
void Update()
{
if(naBolsa)
{
Destroy(this.gameObject,1);
// O resto do código depende do script do inventario...
}
}
É apenas um exemplo provavelmente não funcionará...
PatifeCraft- Avançado
- PONTOS : 2870
REPUTAÇÃO : 6
Respeito as regras :
Re: Pegar item do chão
Tenta seguir esses vídeos... talvez te ajude.PatifeCraft escreveu:eu não estou entendo muito bem
Se for algo mais complexo siga esse outro vídeo, e as continuações do mesmo:
Tópicos semelhantes
» Pegar coisas do chao
» Como faço para quando pegar item,sai umas particulas para cima e ai colide com o chão?
» pegar item
» Pegar item...
» PEGAR ARMA DO CHÃO
» Como faço para quando pegar item,sai umas particulas para cima e ai colide com o chão?
» pegar item
» Pegar item...
» PEGAR ARMA DO CHÃO
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos