Como funciona esse script?!
5 participantes
Página 1 de 1
Como funciona esse script?!
Pessoal o script abaixo eh do meu sistema de inventario, ele funciona junto com mais 3 scripts, porem ele eh o principal.
Eu gostaria por exemplo de quando o mouse estivesse em cima de certo item aparecesse o nome dele, ou por exemplo, quando eu estiver com a lanterna na mão e apertasse determinado botão ativasse uma light.
Esse script trabalha principalmente com ID algo q nao sei mexer muito bem, então se puderem me ajudar, fico muito grato.
Eu gostaria por exemplo de quando o mouse estivesse em cima de certo item aparecesse o nome dele, ou por exemplo, quando eu estiver com a lanterna na mão e apertasse determinado botão ativasse uma light.
Esse script trabalha principalmente com ID algo q nao sei mexer muito bem, então se puderem me ajudar, fico muito grato.
- Código:
using UnityEngine;
using System.Collections.Generic;
using UnityStandardAssets.ImageEffects;
[RequireComponent(typeof(ProceduralSlots))]
[RequireComponent(typeof(JugadorBD2))]
[RequireComponent(typeof(Objetos))]
public class InventarioManager : MonoBehaviour {
[Header("RecogerItem")]
[HideInInspector]
public bool stackearObjs = false;
[HideInInspector]
public int maxStack = 10;
public float distanciaRecoger = 5f;
public KeyCode teclaObtenerObjeto;
public bool autoEncontrarCamara;
public bool autoEncontrarJugador;
public Transform cam;
public Transform jugador;
private LayerMask layer;
private bool haySlotsVacios;
[Header("Cambiar de Slot")]
public bool usarRuedaDelMouse;
public bool usarTeclasNumericas;
[HideInInspector]public int numSlot;
[Header("Audio")]
public AudioClip recogerSonido;
public AudioClip cambiarSlotSonido;
[Header("QuitarObjeto")]
public KeyCode teclaQuitarObjeto;
public KeyCode teclaAbrirMochila;
public KeyCode teclaQuitarStackCompleto;
public static bool Mochi;
private JugadorBD2 jugadorBD;
private Objetos objetos;
private ProceduralSlots uiInv;
private DepthOfFieldDeprecated depth;
public bool hasDepth;
private Vector3 temporaryCamPosition;
private Quaternion temporaryCamRotation;
//[HideInInspector]
public State estado;
[HideInInspector]public enum State {Normal,Mochila,Crafteo}
[HideInInspector]public bool mochilaTrigger;
void Start () {
uiInv = GetComponent<ProceduralSlots>();
stackearObjs = true;
//AsignarLayer();
mochilaTrigger = false;
estado = State.Normal;
if (autoEncontrarCamara&&cam==null)
if (Camera.main)
cam = Camera.main.transform;
else
Debug.Log("No se pudo encontrar la camara, insertala manualmente");
if (autoEncontrarJugador && jugador == null)
if (GameObject.FindGameObjectWithTag(TagsDone.Player))
jugador = GameObject.FindWithTag(TagsDone.Player).transform;
else
Debug.Log("No se pudo encontrar el jugador, asignalo manualmente");
jugadorBD = GetComponent<JugadorBD2>();
objetos = GetComponent<Objetos>();
if (!cam.GetComponent<AudioSource>())
{
cam.gameObject.AddComponent<AudioSource>();
}
if (cam.GetComponent<DepthOfFieldDeprecated>())
{
depth = cam.gameObject.GetComponent<DepthOfFieldDeprecated>();
depth.enabled = false;
hasDepth = true;
}
else
{
Debug.Log("Deberias asignar el script DepthOfFieldDeprecated en tu camara");
hasDepth = false;
}
}
void Update()
{
if (EXP.Un == false) {
teclaAbrirMochila = MenuPause.Trocar;
}
if (EXP.Un == true) {
teclaAbrirMochila = MenuPause.Trocar;
}
AsignarSlotID();
CambiarEstado();
switch (estado)
{
case State.Normal:
if (hasDepth)
depth.enabled = false;
if (Input.GetKeyDown(teclaObtenerObjeto))
Recoger();
if (Input.GetKeyDown(teclaQuitarObjeto))
Drop();
if (Input.GetKeyDown(teclaAbrirMochila))
mochilaTrigger = !mochilaTrigger;
CambiarSlots();
temporaryCamPosition = cam.transform.position;
temporaryCamRotation = cam.transform.rotation;
Time.timeScale = 1f;
break;
case State.Mochila:
cam.transform.position = temporaryCamPosition;
cam.transform.rotation = temporaryCamRotation;
if(hasDepth)
depth.enabled = true;
if (Input.GetKeyDown(teclaAbrirMochila))
mochilaTrigger = !mochilaTrigger;
Time.timeScale = 0f;
break;
case State.Crafteo:
break;
}
}
void AsignarSlotID()
{
for(int i = 0; i < uiInv.slotList.Count; i++)
{
uiInv.slotList[i].GetComponent<SlotInfo>().ItemID = jugadorBD.objetos[i].iD;
uiInv.slotList[i].GetComponent<SlotInfo>().cantidadStack = jugadorBD.objetos[i].cantidadSlot;
}
for(int i = 0; i < uiInv.slotMochilaList.Count; i++)
{
uiInv.slotMochilaList[i].GetComponent<SlotInfo>().ItemID = jugadorBD.objetosMochila[i].iD;
uiInv.slotMochilaList[i].GetComponent<SlotInfo>().cantidadStack = jugadorBD.objetosMochila[i].cantidadSlot;
}
}
void CambiarEstado()
{
if (mochilaTrigger == true) {
Mochi = true;
estado = State.Mochila;
} else {
Mochi = false;
estado = State.Normal;
}
}
void Recoger()
{
RaycastHit hit;
if (cam != null)
{
if (Physics.Raycast(cam.position + cam.forward * 0.1f, cam.forward, out hit, distanciaRecoger, ~layer))
{
if (hit.collider.GetComponent<Name>())
{
Name name = hit.collider.GetComponent<Name>();
if (!objetos.objeto[name.iD].sePuedeStackear)
{
#region NoStacks
//Revisar si hay slots vacios
for (int i = 0; i < jugadorBD.objetos.Count; i++)
{
if (jugadorBD.objetos[i].iD == 0)
{
haySlotsVacios = true;
break;
}
}
//..
if (haySlotsVacios)
{
Debug.DrawLine(cam.position + cam.forward * 0.1f, hit.transform.position, Color.black);
for (int i = numSlot; i <= jugadorBD.objetos.Count; i++)
{
if (i == jugadorBD.objetos.Count)
i = -1;
else if (jugadorBD.objetos[i].iD == 0)
{
jugadorBD.objetos[i].iD = name.iD;
Destroy(hit.collider.gameObject);
haySlotsVacios = false;
if (recogerSonido)
cam.gameObject.GetComponent<AudioSource>().PlayOneShot(recogerSonido);
else
Debug.Log("Podrias agregar un sonido");
return;
}
}
//---------------------------Termina for
}//------Termina si hay slots
else
{
bool slotsMochilaVacios = false;
for(int i = 0; i < jugadorBD.objetosMochila.Count; i++)
{
if (jugadorBD.objetosMochila[i].iD == 0)
{
slotsMochilaVacios = true;
break;
}
}
if (slotsMochilaVacios)
{
for(int i = 0; i < jugadorBD.objetosMochila.Count; i++)
{
if (jugadorBD.objetosMochila[i].iD == 0)
{
jugadorBD.objetosMochila[i].iD = name.iD;
Destroy(hit.collider.gameObject);
slotsMochilaVacios = false;
if (recogerSonido)
cam.gameObject.GetComponent<AudioSource>().PlayOneShot(recogerSonido);
else
Debug.Log("Podrias agregar un sonido");
return;
}
}
}
}
#endregion
}
else
{
#region Stacks
Debug.DrawLine(cam.position + cam.forward * 0.1f, hit.transform.position, Color.black);
//Revisar si hay slots vacios
bool puedeStack = false;
for (int i = 0; i < jugadorBD.objetos.Count; i++)
{
if (jugadorBD.objetos[i].iD == name.iD && jugadorBD.objetos[i].cantidadSlot < objetos.objeto[name.iD].maxStack)
{
haySlotsVacios = true;
puedeStack = true;
break;
}
}
if (puedeStack == false)
for (int i = 0; i < jugadorBD.objetos.Count; i++)
{
if (jugadorBD.objetos[i].iD == 0)
{
haySlotsVacios = true;
break;
}
}
//..
if (haySlotsVacios)
{
if (puedeStack)
for (int i = 0; i < jugadorBD.objetos.Count; i++)
{
if (jugadorBD.objetos[i].iD == name.iD && jugadorBD.objetos[i].cantidadSlot < objetos.objeto[name.iD].maxStack)
{
jugadorBD.objetos[i].cantidadSlot++;
haySlotsVacios = false;
Destroy(hit.collider.gameObject);
if (recogerSonido)
cam.gameObject.GetComponent<AudioSource>().PlayOneShot(recogerSonido);
else
Debug.Log("Podrias agregar un sonido");
return;
}
}
else
for (int i = numSlot; i <= jugadorBD.objetos.Count; i++)
{
if (i == jugadorBD.objetos.Count)
i = -1;
else if (jugadorBD.objetos[i].iD == 0)
{
jugadorBD.objetos[i].iD = name.iD;
Destroy(hit.collider.gameObject);
jugadorBD.objetos[i].cantidadSlot++;
haySlotsVacios = false;
if (recogerSonido)
cam.gameObject.GetComponent<AudioSource>().PlayOneShot(recogerSonido);
else
Debug.Log("Podrias agregar un sonido");
return;
}
}
//---------------------------Termina for
}
else
{
bool puedeStackMochila = false;
bool haySlotsVaciosMochila = false;
for (int i = 0; i < jugadorBD.objetosMochila.Count; i++)
{
if (jugadorBD.objetosMochila[i].iD == name.iD && jugadorBD.objetosMochila[i].cantidadSlot < objetos.objeto[name.iD].maxStack)
{
haySlotsVaciosMochila = true;
puedeStackMochila = true;
break;
}
}
if (puedeStackMochila == false)
for (int i = 0; i < jugadorBD.objetosMochila.Count; i++)
{
if (jugadorBD.objetosMochila[i].iD == 0)
{
haySlotsVaciosMochila = true;
break;
}
}
if (haySlotsVaciosMochila)
{
if (puedeStackMochila)
for (int i = 0; i < jugadorBD.objetosMochila.Count; i++)
{
if (jugadorBD.objetosMochila[i].iD == name.iD && jugadorBD.objetosMochila[i].cantidadSlot < objetos.objeto[name.iD].maxStack)
{
jugadorBD.objetosMochila[i].cantidadSlot++;
haySlotsVaciosMochila = false;
Destroy(hit.collider.gameObject);
if (recogerSonido)
cam.gameObject.GetComponent<AudioSource>().PlayOneShot(recogerSonido);
else
Debug.Log("Podrias agregar un sonido");
return;
}
}
else
for (int i = 0; i < jugadorBD.objetosMochila.Count; i++)
{
if (jugadorBD.objetosMochila[i].iD == 0)
{
jugadorBD.objetosMochila[i].iD = name.iD;
Destroy(hit.collider.gameObject);
jugadorBD.objetosMochila[i].cantidadSlot++;
haySlotsVaciosMochila = false;
if (recogerSonido)
cam.gameObject.GetComponent<AudioSource>().PlayOneShot(recogerSonido);
else
Debug.Log("Podrias agregar un sonido");
return;
}
}
}
}
}//----------Termina Raycast
#endregion
}
}
}//-TerminaCam
else
{
Debug.Log("Necesitas Agregar una Camara");
}
}
void CambiarSlots()
{
if (usarTeclasNumericas)
{
for(int i = 1; i <= 9; i++)
{
if (Input.GetKeyDown(i.ToString())) {
if (jugadorBD.objetos.Count >= i)
{
if (cambiarSlotSonido)
{
if((i-1)!=numSlot)
cam.gameObject.GetComponent<AudioSource>().PlayOneShot(cambiarSlotSonido);
}
else
Debug.Log("Podrias agregar un sonido");
numSlot = i - 1;
}
}
}
}
if (usarRuedaDelMouse)
{
if (Input.GetAxisRaw("Mouse ScrollWheel") < 0)
{
if (cambiarSlotSonido)
cam.gameObject.GetComponent<AudioSource>().PlayOneShot(cambiarSlotSonido);
else
Debug.Log("Podrias agregar un sonido");
if (numSlot < jugadorBD.objetos.Count - 1)
numSlot++;
else
numSlot = 0;
}
if (Input.GetAxisRaw("Mouse ScrollWheel") > 0)
{
if (cambiarSlotSonido)
cam.gameObject.GetComponent<AudioSource>().PlayOneShot(cambiarSlotSonido);
else
Debug.Log("Podrias agregar un sonido");
if (numSlot > 0)
numSlot--;
else
numSlot = jugadorBD.objetos.Count- 1;
}
}
}
void Drop()
{
if (jugadorBD.objetos[numSlot].iD != 0)
{
if (jugadorBD.objetos[numSlot].cantidadSlot == 0)
{
GameObject clone = Instantiate(objetos.objeto[jugadorBD.objetos[numSlot].iD].prefab, cam.transform.position + cam.transform.forward, Quaternion.identity) as GameObject;
jugadorBD.objetos[numSlot].iD = 0;
jugadorBD.objetos[numSlot].cantidadSlot = 0;
clone.GetComponent<Rigidbody>().AddForce(cam.forward * 1000);
}
else
{
if (Input.GetKey(teclaQuitarStackCompleto))
{
int tempCantidadSlot = jugadorBD.objetos[numSlot].cantidadSlot;
for(int i=0;i< tempCantidadSlot; i++)
{
GameObject clone = Instantiate(objetos.objeto[jugadorBD.objetos[numSlot].iD].prefab, cam.transform.position + cam.transform.forward, Quaternion.identity) as GameObject;
if (jugadorBD.objetos[numSlot].cantidadSlot == 1)
jugadorBD.objetos[numSlot].iD = 0;
if (jugadorBD.objetos[numSlot].cantidadSlot == 1)
jugadorBD.objetos[numSlot].cantidadSlot = 0;
else
jugadorBD.objetos[numSlot].cantidadSlot--;
clone.GetComponent<Rigidbody>().AddForce(cam.forward * 1000);
}
}
else
{
GameObject clone = Instantiate(objetos.objeto[jugadorBD.objetos[numSlot].iD].prefab, cam.transform.position + cam.transform.forward, Quaternion.identity) as GameObject;
if(jugadorBD.objetos[numSlot].cantidadSlot==1)
jugadorBD.objetos[numSlot].iD = 0;
if (jugadorBD.objetos[numSlot].cantidadSlot == 1)
jugadorBD.objetos[numSlot].cantidadSlot = 0;
else
jugadorBD.objetos[numSlot].cantidadSlot--;
clone.GetComponent<Rigidbody>().AddForce(cam.forward * 1000);
}
}
}
}
/*
void AsignarLayer()
{
if (jugador.gameObject.layer.ToString() == "Default")
{
}
else
layer = jugador.gameObject.layer;
}
*/
}
Lucas Garcia Frade- Avançado
- PONTOS : 3779
REPUTAÇÃO : 9
Idade : 23
Respeito as regras :
Re: Como funciona esse script?!
Seja sincero. Você que fez esse script?
Não faz sentido criar um sistema de inventário sendo iniciante. É que nem fazer ENEM estando no ensino fundamental 1.
Não faz sentido criar um sistema de inventário sendo iniciante. É que nem fazer ENEM estando no ensino fundamental 1.
George Lucas Vieira- Avançado
- PONTOS : 3391
REPUTAÇÃO : 132
Idade : 21
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :
Re: Como funciona esse script?!
George Lucas Vieira escreveu:Seja sincero. Você que fez esse script?
Não faz sentido criar um sistema de inventário sendo iniciante. É que nem fazer ENEM estando no ensino fundamental 1.
Certeza que Não é Dele!
Re: Como funciona esse script?!
Então cara existem tutorias brs sobre inventario e talz, é bem melhor tentar aprender e fazer seu proprio do que copiar um codigo pronto que voce não entende nada.
Se voce for iniciante tente começar com coisas simples e ir evoluindo pra ter um melhor aprendizado...
Se voce for iniciante tente começar com coisas simples e ir evoluindo pra ter um melhor aprendizado...
Re: Como funciona esse script?!
Manawydan escreveu:Então cara existem tutorias brs sobre inventario e talz, é bem melhor tentar aprender e fazer seu proprio do que copiar um codigo pronto que voce não entende nada.
Se voce for iniciante tente começar com coisas simples e ir evoluindo pra ter um melhor aprendizado...
Bem Nessa o Próprio weslleyFx aqui do Forum ta Fazendo uma Serie, ai vc Aprende Passo a Passo e Sabe pra que Cada Função Serve!
Re: Como funciona esse script?!
Realmente o script não é meu, estava apenas analisa do pra ver se era viável usá-lo. Mas realmente vou ter que usar outro sistema... Alem do tutorial do Wesley vcs me recomendam mais algum tutorial?
Lucas Garcia Frade- Avançado
- PONTOS : 3779
REPUTAÇÃO : 9
Idade : 23
Respeito as regras :
Re: Como funciona esse script?!
No Youtube tem um Canal é em Espanhol o Canal , cara tem uma Serie Completa de Inventario Craft, Sobrevivencia,Contrução tipo Rust e tambem tem o Sistema Pronto pra Baixar
https://www.youtube.com/channel/UCw7a02qbthfd01GqTMzodjQ
https://www.youtube.com/channel/UCw7a02qbthfd01GqTMzodjQ
Re: Como funciona esse script?!
Obrigado man, vou dar uma olhadaAndyShow escreveu:No Youtube tem um Canal é em Espanhol o Canal , cara tem uma Serie Completa de Inventario Craft, Sobrevivencia,Contrução tipo Rust e tambem tem o Sistema Pronto pra Baixar
https://www.youtube.com/channel/UCw7a02qbthfd01GqTMzodjQ
Lucas Garcia Frade- Avançado
- PONTOS : 3779
REPUTAÇÃO : 9
Idade : 23
Respeito as regras :
Re: Como funciona esse script?!
você pode da uma olhadinha nesse
https://www.youtube.com/channel/UCywOJZlxsTfCuHQtNf6KGvw
https://www.youtube.com/channel/UCywOJZlxsTfCuHQtNf6KGvw
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Tópicos semelhantes
» Como faço para corrigir esse erro no script?
» Como eu posso resumir esse script?
» Esse Script está certo ? Como melhorá-lo ?
» Como converto esse script de C# para Javascript?
» como resolver esse bug em um script de troca de personagem?
» Como eu posso resumir esse script?
» Esse Script está certo ? Como melhorá-lo ?
» Como converto esse script de C# para Javascript?
» como resolver esse bug em um script de troca de personagem?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos