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)
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;
}
}
- 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