26-04-2014, 12:43 PM
Sto sviluppando un gioco survivor in unity3d e praticamente ho creato un HUD (uno della salute e fame e uno delle risorse quali : legno, pietra, ferro)
Ogni risorsa ha un suo tag(Wood, Stone, Iron) e uno script dove viene definito il suo limite. Es.
Il masso può droppare 10 di pietra, clicco 10 volte e la pietra scompare e automaticamente mi viene messo tutto nell'inventario e perdo dei punti fame. Stessa cosa con le altre risorse.
Solo che c'è un problema...non posso piazzare più di una risorsa altrimenti se vado a raccoglierne una, questa non me la fa raccogliere.
Questo è lo script per raccogliere le risorse
Ogni risorsa ha un suo tag(Wood, Stone, Iron) e uno script dove viene definito il suo limite. Es.
Il masso può droppare 10 di pietra, clicco 10 volte e la pietra scompare e automaticamente mi viene messo tutto nell'inventario e perdo dei punti fame. Stessa cosa con le altre risorse.
Solo che c'è un problema...non posso piazzare più di una risorsa altrimenti se vado a raccoglierne una, questa non me la fa raccogliere.
Questo è lo script per raccogliere le risorse
Codice:
using UnityEngine;
using System.Collections;
public class Raccolta : MonoBehaviour {
public Texture crosshair;
public Camera camera;
public Texture crrosshair;
public AnimationClip HIT;
public Health vit;
public Inventory inv;
public Wood legn;
public Stone piet;
public Iron ferr;
public float range;
void Start ()
{
vit = GameObject.FindWithTag("Player").GetComponent<Health>();
inv = GameObject.FindWithTag("Player").GetComponent<Inventory>();
legn = GameObject.FindWithTag("Wood").GetComponent<Wood>();
piet = GameObject.FindWithTag("Stone").GetComponent<Stone>();
ferr = GameObject.FindWithTag("Iron").GetComponent<Iron>();
}
void Update ()
{
if (Input.GetMouseButtonDown(0))
{
animation.Play();
ShootFunction();
}
}
void OnGUI()
{
GUI.DrawTexture(new Rect(Screen.width / 2, Screen.height / 2, 50, 50), crrosshair);
}
void ShootFunction()
{
Ray ray = camera.ViewportPointToRay(new Vector3(0.1f, 0.1f, 0));
RaycastHit hit;
if (Physics.Raycast(ray, out hit, range))
{
if (hit.collider.tag == "Wood")
{
legn.LegnoState = legn.LegnoState -1;
inv.Legno = inv.Legno +1;
vit.Fame = vit.Fame -1;
}
if (hit.collider.tag == "Stone")
{
piet.PietraState = piet.PietraState -1;
inv.Pietra = inv.Pietra +1;
vit.Fame = vit.Fame -1;
}
if (hit.collider.tag == "Iron")
{
ferr.FerroState = ferr.FerroState -1;
inv.Ferro = inv.Ferro +1;
vit.Fame = vit.Fame -1;
}
}
}
}