J'essaie actuellement d'écrire un script de récolte de ressources. L'idée de mon script est simple: Si le joueur est proche d'un arbre alors il peut récolter. S'il s'éloigne la récolte s'interrompt et pendant tout le temps de la récolte un slider se rempli.
Voici mon code:
Code : Tout sélectionner
public class Bucheronnage : MonoBehaviour
{
GameObject joueur;
public ItemDatabase itemDataBase;
public GameObject trunk;
public GameObject sliderGO; //Pour afficher/Désaficher le slider
public Slider slider;
private float time = 0F;
private float timer = 5F;
private bool isDroping;
// Use this for initialization
void Start()
{
isDroping = false;
joueur = GameObject.Find("Player");
slider.value = 0;
slider.enabled = false;
sliderGO.SetActive(false);
}
// Update is called once per frame
void Update()
{
if (getDistance() < 2.5F)
{
/* if (Input.GetKeyDown("b")) //Lance le droping
isDroping = true;
if (isDroping) // Drop en cours
{*/
sliderGO.SetActive(true);
slider.enabled = true;
time += 0.025F;
slider.value = time * 100 / timer;
//}
}
else // Joueur dans l'incapacité de drop. Au cas ou il s'éloigne pendant le drop.
{
isDroping = false;
slider.value = 0;
sliderGO.SetActive(false);
isDroping = false;
}
if (slider.value == slider.maxValue) // Drop achevé
{
Destroy(gameObject);
Instantiate(trunk, transform.position, transform.rotation); //instancie le tronc
sliderGO.SetActive(false);
isDroping = false;
slider.value = 0F;
itemDataBase.SpawnItemStack(new ItemStack(itemDataBase.I<ItemWoodenLog>(), (int)Random.Range(1, 5)), new Vector3(transform.position.x + 2F,transform.position.y+1,transform.position.z + 2F)); //Instancie le drop à terre.
}
}
float getDistance()
{
return Vector3.Distance(joueur.transform.position, transform.position);
}
void Filling()
{ }
}
Des idées pour faire en sorte de résoudre ce problème ?
Cordialement,
Nasatoe.