[Résolu]paramètre pour courir

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Avatar de l’utilisateur
stigma
Messages : 1415
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

[Résolu]paramètre pour courir

Message par stigma » 28 Sep 2023 15:58

Voilà, j'avais pris un FirstPersonController dans les outils Unity et mon personnage court quand j'appuie sur Shit. Jusque là, tout est normal.
Mais depuis, j'ai ajouté des bruits de pas (FREE Footsteps System) mais quand je cours, c'est comme si il y avait 20 bruits de pas à chaque pas. Pourtant mon perso ne court pas trop vite.

Mon problème actuel est que je ne sais pas où modifier le paramètre pour courir. J'ai cherché dans Project Settings et je n'ai rien trouvé.
Quelle serait la solution ?
Merci d'avance !

Image

Code du script, je n'ose pas y toucher. De plus, le player a tendance à ne pas changer de direction, il faut que j'appuie de nouveau sur la touche Z

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(CharacterController))]
public class FPSController : MonoBehaviour {

    [Range(1,20)]
	public float speed = 6.0f;
    [Range(1, 20)]
    public float jumpForce = 8.0f;

    [Space(10)]
    [Range(1, 20)]
    public float cameraHorizontalSpeed = 5.0f;
    [Range(1, 20)]
    public float cameraVerticalSpeed = 7.0f;

	GameObject cameraFPS;
	Vector3 moveDirection = Vector3.zero;
	CharacterController controller;
	float rotacaoX = 0.0f, rotacaoY = 0.0f;

	void Start () {
		transform.tag = "Player";
		Camera cameraComponent = GetComponentInChildren<Camera>();
        if (!cameraComponent) {
            return;
        }
        cameraFPS = cameraComponent.transform.gameObject;
		cameraFPS.transform.localPosition = new Vector3 (0, 1, 0);
		cameraFPS.transform.localRotation = Quaternion.identity;
		controller = GetComponent<CharacterController> ();
	}

	void Update () {
        if (cameraFPS) {
            Vector3 direcaoFrente = new Vector3(cameraFPS.transform.forward.x, 0, cameraFPS.transform.forward.z);
            Vector3 direcaoLado = new Vector3(cameraFPS.transform.right.x, 0, cameraFPS.transform.right.z);
            direcaoFrente.Normalize();
            direcaoLado.Normalize();
            direcaoFrente = direcaoFrente * Input.GetAxis("Vertical");
            direcaoLado = direcaoLado * Input.GetAxis("Horizontal");
            Vector3 direcFinal = direcaoFrente + direcaoLado;

            if (direcFinal.sqrMagnitude > 1) {
                direcFinal.Normalize();
            }

            if (controller.isGrounded) {
                moveDirection = new Vector3(direcFinal.x, 0, direcFinal.z);
                moveDirection *= speed;
                if (Input.GetButton("Jump")) {
                    moveDirection.y = jumpForce;
                }
            }

            moveDirection.y -= 20.0f * Time.deltaTime;
            controller.Move(moveDirection * Time.deltaTime);
            CameraPrimeiraPessoa();
        }
	}

	void CameraPrimeiraPessoa(){
		rotacaoX += Input.GetAxis ("Mouse X") * cameraVerticalSpeed;
		rotacaoY += Input.GetAxis ("Mouse Y") * cameraHorizontalSpeed;
		rotacaoX = ClampAngleFPS (rotacaoX, -360, 360);
		rotacaoY = ClampAngleFPS (rotacaoY, -80, 80);
		Quaternion xQuaternion = Quaternion.AngleAxis (rotacaoX, Vector3.up);
		Quaternion yQuaternion = Quaternion.AngleAxis (rotacaoY, -Vector3.right);
		Quaternion rotacFinal = Quaternion.identity * xQuaternion * yQuaternion;
		cameraFPS.transform.localRotation = Quaternion.Lerp (cameraFPS.transform.localRotation, rotacFinal, Time.deltaTime * 10.0f);
	}

	float ClampAngleFPS(float angulo, float min, float max){
		if (angulo < -360) {
			angulo += 360;
		}
		if (angulo > 360) {
			angulo -= 360;
		}
		return Mathf.Clamp (angulo, min, max);
	}
}
Dernière édition par stigma le 01 Oct 2023 11:32, édité 1 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6246
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: paramètre pour courir

Message par boubouk50 » 28 Sep 2023 16:31

Si le problème n'est que le son, dans ce cas, c'est dans les paramètres de Footsteps System qu'il faut bidouiller.
Il doit surement définir une distance de pas qui déclenche un son quand il est atteint.
Quand tu accélères, cette distance entre 2 pas est atteinte X fois plus vite, X étant la multiplication de vitesse de déplacement. Donc le son est joué X fois plus rapidement.
Reste donc, à mon avis, à bien paramétrer les 2.

À voir aussi, si le système n'est pas dupliqué ou autre.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
stigma
Messages : 1415
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: paramètre pour courir

Message par stigma » 29 Sep 2023 08:42

Le problème, c'est que je ne sais pas comment faire que le player court moins vite.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6246
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: paramètre pour courir

Message par boubouk50 » 29 Sep 2023 08:50

Dans le code, rien n'indique que la touche Shift doit être appuyée.
Si tu utilises Visual Studio tu peux faire une recherche Ctl + Shift + F dans toute la solution à la recherche de "Shift" pour trouver quel script s'occupe de la course. Je ne sais pas comment faire avec les autres IDEs mais ça doit aussi exister.
Si rien n'apparaît, alors la touche a dû être configurée dans le Input Manager avec un nom de touche. Dans ce cas, c'est ce nom qu'il faut chercher dans la solution.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
stigma
Messages : 1415
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: paramètre pour courir

Message par stigma » 29 Sep 2023 16:27

c'est dans le Input Manager que j'avais commencé à chercher, mais rien.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6246
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: paramètre pour courir

Message par boubouk50 » 29 Sep 2023 17:09

Tu as forcément un code, quelque part, qui décide de multiplier la vitesse de déplacement si la touche Shift est appuyée.
À toi de le trouver, probablement au niveau du CharacterController.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
stigma
Messages : 1415
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: paramètre pour courir

Message par stigma » 30 Sep 2023 08:18

c'est bien là le problème, je n'ai pas trouvé.

Edit:
Je suis un idiot. Il s'agissait d'une routine Playmaker en fait. Je l'avais importée de mon ancien projet et j'avais oublié qu'elle était là.
Mais de toutes façons, j'ai vu que FootSystem avait un FirstController pas mal du tout dans sa démo. Je vais l'utiliser.

Répondre

Revenir vers « Unity le logiciel »