Bug activation/desactivation Ragdoll

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
MekaZenis
Messages : 4
Inscription : 05 Déc 2021 20:11

Bug activation/desactivation Ragdoll

Message par MekaZenis » 17 Déc 2021 23:08

Bonjour,
je poste ce soir ce message après quelques heures à ne pas comprendre le bug auquel je fais face.
Je suis débutant alors il est possible que la solution soit assez simple mais que je ne la connaissais juste pas; si vous pouvez me donner des conseils sur certaines choses pour optimiser ma façon de créer je vous en serais très reconnaissant.

Ce bug est assez incompréhensible pour moi, j'ai mis un ragdoll sur mon personnage, celui-ci est équipé d'un animator et d'un CharacterController pour que je puisse le contrôler grâce à un script 'MovementsPlayer' comme ci :
https://ibb.co/FzNvqH9 (la balise img ne fonctionnait pas dans la prévisualisation)
Image


Le petit jeu que je veux faire consiste à esquiver ou détruire des obstacles que je fais spawner à partir du GameObject 'Generateur' bien que pour le moment je souhaite seulement détecter une collision(ce que j'arrive à faire) et désactiver temporairement le Ragdoll pour simuler la perte d'une vie du joueur cependant plusieurs problème apparaissent à ce moment :
Tout d'abord au moment de la collision je désactive les composants 'Animator','CharacterController' et 'MovementsPlayer', à partir de ce moment la caméra ne suit pas le ragdoll(ce que j'ai essayer de lui faire faire en changeant son parent par le mesh de mon personnage, sans succès), elle reste au même endroit jusqu'à que l'attente de ma coroutine finisse, à ce moment je réactive mes composants et mon ragdoll qui n'était plus suivie par la caméra et qui était donc un peu plus loin(ayant subi la force de la collision)se téléporte à l'emplacement où il était au début de la collision.
Voici le code de mon script de collision :

Code : Tout sélectionner

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

public class Collisions : MonoBehaviour{

    private Animator Anim;
    private CharacterController Cc;
    private MovementsPlayer MovPlayerScript;

    public Transform DummyRig;

    private void Start() {
        Anim = this.transform.GetComponent<Animator>();
        Cc = this.transform.GetComponent<CharacterController>();
        MovPlayerScript = this.transform.GetComponent<MovementsPlayer>();
    }
    private void OnControllerColliderHit(ControllerColliderHit hit) {
        if(hit.transform.tag == "Projectiles"){
            Debug.LogWarning("You lost a life");
            StartCoroutine(RagdollModifier(3f));
        } 
    }

    IEnumerator RagdollModifier(float temps){

        Anim.enabled = false;
        Cc.enabled = false;
        MovPlayerScript.enabled = false;
        yield return new WaitForSeconds(temps);
        
        Anim.enabled = true;
        Cc.enabled = true;
        MovPlayerScript.enabled = true;

    }
}
Les différents problèmes que je rencontre donc sont les suivants :
- Si le personnage en mode ragdoll sort de l'écran il n'est plus affiché au moment où les composants sont réactivés, il semblerait que seul l'affichage du personnage soit bug car je peux bouger(je ne le vois que parce que la caméra suit les mouvements de mon characterController dont la physique n'est pas bug mais mon personnage n'est pas du tout affiché ombres incluses), quand ça arrive, si je retourne dans l'onglet 'scene' et que je fais un focus sur mon personnage il réaparaît dans l'onglet 'game' au moment où je retourne sur celui-ci.
-J'ai essayé en changeant le parent de ma caméra avec 'SetParent()' de faire suivre le ragdoll par la caméra mais ca n'a jamais fonctionné.

Si ce n'est pas trop vous demander je souhaiterai que vous m'apportiez votre précieuse aide sur ces problèmes que je n'ai pas su résoudre :amen:

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

Re: Bug activation/desactivation Ragdoll

Message par Max » 18 Déc 2021 12:38

Bonjour,

comment est configurée la partie Ragdoll ? Je ne vois rien qui y fasse mention.
Dans ton script, on voit bien les désactivation/activation des composants, mais rien lié non plus au passage en mode "Ragdoll".
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

MekaZenis
Messages : 4
Inscription : 05 Déc 2021 20:11

Re: Bug activation/desactivation Ragdoll

Message par MekaZenis » 18 Déc 2021 15:48

Max a écrit :
18 Déc 2021 12:38
Bonjour,

comment est configurée la partie Ragdoll ? Je ne vois rien qui y fasse mention.
Dans ton script, on voit bien les désactivation/activation des composants, mais rien lié non plus au passage en mode "Ragdoll".
Je ne vois pas ce que tu veux dire par 'activer' le mode ragdoll et j'ai seulement créé un gameObject Ragdoll sur lequel j'ai assigné les parties du corps de mon personnage puis j'ai modifié la taille des colliders pour qu'ils correspondent aux proportions de mon personnage, rien de plus.

Image

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

Re: Bug activation/desactivation Ragdoll

Message par Max » 18 Déc 2021 16:55

C'est important de voir comment tu as architecturé ton truc.
Et en fait du coup, cela veut dire ton objet Ragdoll s'éloigne du parent quand il tombe.
Vu que ton Ragdoll est un GameObject différent du Player, je le sortirais de la hiérarchy du Player, et l'activerait au moment opportun, puis en suite je recalerais la position du Player à sa réactivation au moment où le Player reprend son rôle.
En générale, on essais de générer le ragdoll sur rig du Player lui même, cela évite ce genre de soucis.
Un lien éventuellement pour t'éclairer sur ce point: https://www.youtube.com/watch?v=krV3JSUn4u4
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

MekaZenis
Messages : 4
Inscription : 05 Déc 2021 20:11

Re: Bug activation/desactivation Ragdoll

Message par MekaZenis » 18 Déc 2021 19:16

J'ai beau avoir crée directement un GameObject ragdoll, après l'avoir activé il s'est positionné automatiquement sur mon rig(je ne vois même pas comment en faire un GameObject à part).
Que voulais tu dire par 'passage en mode ragdoll' je n'arrive pas à avoir d'information à ce sujet.
Il me semblait qu'il suffisait de désactiver les composants manipulant le mesh pour activer le mode ragdoll.

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

Re: Bug activation/desactivation Ragdoll

Message par Max » 19 Déc 2021 11:54

J'ai du mal à voir comment tu as générer ton Ragdoll. C'est ce qui me turlupine ;)
As-tu suivit le tuto du Learn ? -> https://learn.unity.com/tutorial/creating-ragdolls-2019#
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

MekaZenis
Messages : 4
Inscription : 05 Déc 2021 20:11

Re: Bug activation/desactivation Ragdoll

Message par MekaZenis » 28 Déc 2021 14:52

Excuse moi pour le retard de ma réponse, je profitais de mes vacances

Il me semble avoir configuré de la même manière que ce tuto bien que j'ai suivi celui de 'TUTO UNITY FR' pour créer mon ragdoll mais j'ai remarqué que je n'avais pas besoin de changer le iskinematic pour que mon personnage passe en mode ragdoll et inversement(peut être parce ce que j'utilise un character controller) à la place en plus de désactiver/activer mes component j'utilise la position du ragdoll pour le faire suivre par la caméra ainsi il ne sort pas du champ de vision de celle ci et ne devient pas invisible.
Bien que je sois intrigué de savoir pourquoi quand le ragdoll sort de l'écran il ne réapparait pas je préfère ne pas prendre des heures pour ce simple problème et me contenterai de ce que j'ai dis plus haut qui marche parfaitement.
Merci à toi pour toutes tes réponses. :merci:

Répondre

Revenir vers « Scripting »