Bonsoir,
quelque part, il devrait y avoir un test pour savoir si un objet est porté. Dans ce cas on le lâche, sinon on prend l'objet touché.
Tel que c'est codé, la condition pour prendre ou lâcher l'objet dépend de game_object_touched, ce qui peut conduire à des soucis s'il est null.
Il me semble plus judicieux de faire :
Code : Tout sélectionner
Transform membrePortant;
private void Start ()
{
// Met en cache la référence du GameObjet qui porte.
// Ce serait judicieux d'ajouter un empty dans le personnage...
membrePortant = GameObject.Find("FirstPersonCharacter").gameObject.transform;
private void Update ()
{
if (touche E pressée)
{
if (un objet est-il tenu ?)
{
LeLacher ();
}
else
{
if(game_object_touched != null)
{
if (game_object_touched.CompareTag("Ramassable)
{
game_object_touched.transform.SetParent(membrePortant, false);
// Ta sauce...
}
}
}
}
}
private void LeLacher ()
{
// Si l'objet a un rigidbody, laisser faire la physique, sinon traiter la chute de l'objet
// Par exemple on le téléporte 1 unité devant les pieds du personnage
game_object_touched.transform.parent = null;
}