Page 1 sur 1

Mon rigidboby n'arrête pas de bugger

Publié : 31 Jan 2020 09:21
par BasisEssence779
Bonjour, j'ai un gros problème. J'ai créé un joueur composé (tête, corp, yeux, nez, caméra...) mais la rigidboby ne marche mas correctement. Quand je commence le jeu, le personnage se tortille dans tout les sens comme une balle rebonndissante et quand je freeze toutes les rotation, Le personnage se met à monter dans les air sans s'arrêter. Merci d'avance !

Re: Mon rigidboby n'arrête pas de bugger

Publié : 31 Jan 2020 09:37
par boubouk50
Encore une fois, fais un effort sur les informations. Le rigidbody fonctionne bien, tu en fais donc une mauvaise utilisation. Sans nous expliquer ce que tu as fait, ce que tu as mis en place, comment tu l'as fait, on ne peut pas te répondre correctement. C'est trop vague, on est à la limite du "ça marche pas".

Re: Mon rigidboby n'arrête pas de bugger

Publié : 31 Jan 2020 09:44
par BasisEssence779
J'ai utiliser deux codes avec mon rigidboby. Un qui permet de déplacer le personnage...

Code : Tout sélectionner

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

public class PlayerMovements : MonoBehaviour
{
    // Public variables
    public float Speed;
    // Private variables
    private float X;
    private float Z;
    private Transform PlayerBody;
    private Vector3 Movements;

    // Start is called before the first frame update
    void Start()
    {
        PlayerBody = this.transform;
    }

    // Update is called once per frame
    void Update()
    {
        X = Input.GetAxis("Horizontal");
        Z = Input.GetAxis("Vertical");
        Movements = new Vector3(X, 0, Z);

        if(X != 0.0f || Z != 0.0f)
        {
            PlayerBody.Translate(Movements * Speed * Time.deltaTime);
        }
    }
}
...et un autre qui permet de faire tourner le personnage.

Code : Tout sélectionner

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

public class MouseLook : MonoBehaviour
{
    // Public variables
    public float MouseSensivity;
    public bool RotateX;
    public bool RotateY;
    // Private variables
    private Transform PlayerBody;
    private float MouseX;
    private float MouseY;

    // Start is called before the first frame update
    void Start()
    {
        PlayerBody = this.transform;
    }

    // Update is called once per frame
    void Update()
    {
        if(RotateX == true)
        {
            MouseX = Input.GetAxis("Mouse X") * Time.deltaTime;
            PlayerBody.Rotate(Vector3.up * MouseSensivity * MouseX);
        }

        if(RotateY == true)
        {
            MouseY = Input.GetAxis("Mouse Y") * Time.deltaTime;
            PlayerBody.Rotate(Vector3.left * MouseSensivity * MouseY);
        }

        // transform.eulerAngles = new Vector3(Mathf.Clamp(transform.eulerAngles.x, -90f, 90f), transform.eulerAngles.y, transform.eulerAngles.z);
    }
}

Re: Mon rigidboby n'arrête pas de bugger

Publié : 31 Jan 2020 14:52
par Max
Bonjour,

Première chose, tu pars sur un "Controller" basé sur un RigidBody, donc ton code devrais être basé la dessus.
Là tu ne travailles que sur le Transform, ce qui n'est pas vraiment la bonne approche dans ce cas.
En suite dans ta partie MouseLook tu codes une rotation sur deux axes. Normalement ton Player ne devrait pouvoir tourner que sur l'axe des Y.

Tu devrais regarder du coté des StandardAssets où il y un exemple de RigidBodyFPSController, et t'en inspirer, cela te fournirait de bonnes pistes à suivre.