[Résolu]Modifier la sensibilité de la souris

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
stigma
Messages : 1561
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst

[Résolu]Modifier la sensibilité de la souris

Message par stigma » 14 Juil 2024 11:27

J'aimerais pouvoir modifier la sensibilité de la souris dans un menu car certains joueurs ont un PC trop rapide par exemple, mais je ne sais pas comment accéder à cette valeur.
Image
voici le script utilisé :

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

namespace Footsteps {

	public class CameraView : MonoBehaviour {

		[SerializeField] float minTiltAngle = -70f;
		[SerializeField] float maxTiltAngle = 80f;
		[SerializeField] float sensitivity = 3f;
		[SerializeField] bool smooth = true;
		[SerializeField] float smoothFactor = 15f;
		[SerializeField] bool invert;

		[Header("References")]
		[SerializeField] Transform worldCamera;

		Transform characterTransform;

		Quaternion characterTargetRotation;
		Quaternion cameraTargetRotation;
		Vector2 lastMousePosition;
		float xAngle;
		float deltaYAngle;


		void Start() {
			characterTransform = transform;
			Cursor.lockState = CursorLockMode.Locked;

			if(!worldCamera) {
				Debug.LogError("Please assign 'world_camera' in the inspector, fps controller will not work.");
				enabled = false;

				return;
			}
		}

		void FixedUpdate() {
			// Modify the angle based on the user input
			xAngle += Input.GetAxis("Mouse Y") * sensitivity * (invert ? -1 : 1);
			xAngle = Mathf.Clamp(xAngle, minTiltAngle, maxTiltAngle);
			deltaYAngle = Input.GetAxis("Mouse X") * sensitivity;

			characterTransform.rotation *= Quaternion.Euler(Vector3.up * deltaYAngle);
			cameraTargetRotation = Quaternion.Euler (-xAngle, 0f, 0f);

			// Rotate the camera 
			worldCamera.localRotation = smooth ? Quaternion.Lerp(worldCamera.localRotation, cameraTargetRotation, Time.fixedDeltaTime * smoothFactor) : cameraTargetRotation;
		}
	}
}
Dernière édition par stigma le 15 Juil 2024 18:16, édité 1 fois.
Il n'y a que les poissons morts qui suivent le courant.

Avatar de l’utilisateur
jmhoubre
Messages : 883
Inscription : 05 Oct 2019 22:05

Re: Modifier la sensibilité de la souris

Message par jmhoubre » 14 Juil 2024 13:44

Bonjour,

voilà ce que m'a fourni le félin qui flatule :

Code : Tout sélectionner

using UnityEngine;

public class MouseSensitivityController : MonoBehaviour
{
    // Variable pour la sensibilité de la souris
    [SerializeField] private float mouseSensitivity = 100f;

    // Référence à la caméra
    [SerializeField] private Transform playerBody;

    float xRotation = 0f;

    void Start()
    {
        // Verrouiller le curseur au centre de l'écran
        Cursor.lockState = CursorLockMode.Locked;
    }

    void Update()
    {
        // Récupérer les mouvements de la souris
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;

        // Calculer la rotation en Y
        xRotation -= mouseY;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);

        // Appliquer la rotation
        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
        playerBody.Rotate(Vector3.up * mouseX);
    }
}


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

Re: Modifier la sensibilité de la souris

Message par stigma » 14 Juil 2024 14:48

J'ai mis la variable à 2 et ça agit surtout sur l'axe vertical et assez peu sur l'axe horizontal.
Il n'y a que les poissons morts qui suivent le courant.

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

Re: Modifier la sensibilité de la souris

Message par boubouk50 » 15 Juil 2024 08:58

@Stigma :
Dans ton code, il te suffit de multiplier tes variables Input.GetAxis("Mouse Y") et Input.GetAxis("Mouse X") par Time.deltaTime.
En multipliant par le deltaTime, tu t'assures de faire correspondre la vitesse avec le temps, sinon elle est dépendante du taux de rafraichissement (frameRate) et donc de la puissance du PC.
Le deltaTime équivaut au temps mis pour rendre une frame -> A 60 fps, le deltaTime équivaudra plus ou moins à 1/60, à 30fps, 1/30. Ainsi, tu gardes la proportionnalité avec les secondes.
"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 : 1561
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst

Re: Modifier la sensibilité de la souris

Message par stigma » 15 Juil 2024 18:15

ok merci
Il n'y a que les poissons morts qui suivent le courant.

Répondre

Revenir vers « Scripting »