Je suis actuellement sur un exercice sur Unity dans lequel j'aimerais faire bouger deux personnages avec deux manettes différentes.
Jusque-là rien de bien complexe en soi sauf que je me heurte à un problème que je suis complètement incapable de comprendre: les assignations de joystick que je rentre dans les input settings ne correspondent pas systématiquement à la bonne manette; et même, elles semblent changer à chaque redémarrage système.
Par-exemple, mon player 1 va faire appel au joystick 1 et le player 2 au joystick 2 et tout va bien fonctionner, sauf qu'une fois que j'aurai redémarré mon système ça ne fonctionnera plus. Les manettes indiquent bien player 1 et 2 ( manettes Xbox ) mais ne sont plus appelées par les même input joystick. Il faudra que je règle les input sur d'autres joystick ( 3 ou 4 ou 5, etc ).
Du coup je ne comprends pas; est-ce que le problème viendrait de l'initialisation de mes manettes?...
Je vous mets ici quelques screen et le script au besoin :
Un aperçu du jeu avec les deux players en bas:
Mes réglages joysticks horizontaux pour le player 1 et 2
Les réglages variables pour le player 1:
Et mon code:
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
// SERIALIZED variables
[SerializeField]
private string ControlH = "HorizontalP1", ControlV = "VerticalP1";
[SerializeField]
private float speed = 4f, curSpeed, vol = 0.5f;
[SerializeField]
private AudioClip steps, stepFast;
// PRIVATE variables
private AudioSource aSource;
private bool drugActivated = false;
private double drugTime, speedy, amp, fixTime, timeLoop, sinus = 0;
// PUBLIC variables
public GameObject maCamera;
private void Awake()
{
aSource = GetComponent<AudioSource>();
aSource.loop = true;
aSource.clip = steps;
aSource.Play();
aSource.volume = 0;
maCamera = GameObject.Find("Main_Camera");
}
void FixedUpdate()
{
Vector3 fwd = transform.TransformDirection(Vector3.forward);
// Running
if (Input.GetKey(KeyCode.LeftControl))
{
curSpeed = speed * 2;
aSource.clip = stepFast;
}
else
{
curSpeed = speed;
aSource.clip = steps;
}
// Step sound
if (Input.GetAxis(ControlV) != 0)
{
aSource.volume = Mathf.Abs(Input.GetAxis(ControlV)) * vol;
Debug.Log(ControlV);
}
if (Input.GetAxis(ControlH) != 0 && Mathf.Abs(Input.GetAxis(ControlH)) != 1)
{
aSource.volume = Mathf.Abs(Input.GetAxis(ControlH)) * vol;
Debug.Log(ControlH);
}
if (Input.GetAxis(ControlV) == 0 && Input.GetAxis(ControlV) == 0)
{
aSource.volume -= 0.06f;
}
if (!aSource.isPlaying)
{
aSource.Play();
}
// Moving and turning head
transform.Translate(Vector3.back * curSpeed * Time.fixedDeltaTime * (Input.GetAxis(ControlH)));
transform.Translate(Vector3.left * curSpeed * Time.fixedDeltaTime * (Input.GetAxis(ControlV)));
}
}