[DB-AL] Probleme avec une fonction de pickUp

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Mephysto
Messages : 3
Inscription : 28 Mars 2019 09:25

[DB-AL] Probleme avec une fonction de pickUp

Message par Mephysto » 06 Juin 2019 19:13

Bonjour,

Présent depuis peu sur unity je me suis lancé le défi de réaliser un petit prototype de jeu 3D. Dans ce but j'ai réalisé une fonction de "pickup" qui permet de prendre les objets devant soit et les garder en main jusqu'au relâchement de la touche, ils se déposent alors par terre devant le joueurs.
Pour cette fonction j'ai eu recours à un gameobject "Destination" enfant du player controller et l'objet saisi par le joueur se place alors à l’emplacement de destination. Cependant je fais face a un problème qui est que quand je me saisi d'un objet celui ci chute instantanément dans le vide. voici le code de la fonction PickUp.

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PickUp : MonoBehaviour
{
    [SerializeField] private Transform destination;  //Game object qui permet de placer l'objet saisi devant la caméra
    

    public void OnMouseDown()
    {
        GetComponent<BoxCollider>().enabled = false; //Désactivation de la gravité et de la collision pour éviter les interactions indésirables
        GetComponent<Rigidbody>().useGravity = false;
        this.transform.position = destination.position; // l'objet saisi vient se positionner devant le joueur
        this.transform.parent = GameObject.Find("Destination").transform; //recalcule de la positon pour que l'objet suive le joueur.
        
    }

    public void OnMouseUp()
    {
        GetComponent<BoxCollider>().enabled = true;
        this.transform.parent = null;
        GetComponent<Rigidbody>().useGravity = true; //rétablissement des paramètres de base de l'objet lorsqu’on le relâche

    }
}

La fonction bien que simple présente donc un problème durant la saisi de l'objet, le gameobject destination semble "chuter" extrêmement vite dans le vide et parfois en maintenant le click l'objet bouge tout seul sans action de ma part.

https://youtu.be/FbuUPcRStn8

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL] Probleme avec une fonction de pickUp

Message par Max » 07 Juin 2019 08:19

Bonjour,

deux choses.
La première, pourquoi écrire

Code : Tout sélectionner

        this.transform.parent = GameObject.Find("Destination").transform; //recalcule de la positon pour que l'objet suive le joueur.
plutôt que

Code : Tout sélectionner

this.transform.parent = destination; //recalcule de la positon pour que l'objet suive le joueur.
Deuxième chose. Dans ta vidéo, c'est bizarre, même si on voit assez mal ton onglet Hierarchy, ton GameObject "Destination" ne prend pas en enfant à chaque fois l'objet saisi j'ai l'impression. Dans la deuxième saisie d'ailleurs il me semble qu'il apparait au bout de quelques secondes, bizarre.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: [DB-AL] Probleme avec une fonction de pickUp

Message par EmileF » 07 Juin 2019 09:15

Bonjour,

je pense que la désactivation du BoxCollider est une erreur.
A cause de cette désactivation, les fonctions OnMouseDown et OnMouseUp ne sont plus mise à jour, si je je me trompe pas.

J'espère avoir pu aider
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Répondre

Revenir vers « Scripting »