Je sais qu'il y a déjà eu des sujet sur "comment récupérer des variables", mais j'avoue que je ne trouve pas de solution à mon problème.
J'ai un personnage qui peut soit marcher, soit courir. Marcher par la touche Z et courir lorsqu'on appuie sur Z + Q.
J'aimerais que dans certaine zone, il ne puisse que marcher.
J'ai créer une zone avec un script "zonemarche" ou je déclare la fonction "Zonelimite" en true ou false. Cette partie fonctionne, et la variable s'active bien dans la preview du jeu.
Mon soucis se situe au niveau du personnage.
J'aimerais que lorsqu'il est dans cette zone, il ne puisse pas courir. C'est à dire que lorsqu'on maintient la touche Q, la vitesse soit la même que celle de la marche.
Voici mon script du personnage et celui de la zone, j'espère que quelqu'un trouvera où est l'erreur.
J'ai mit en commentaire les parties concernant mon problème.
Merci beaucoup d'avance.
ZONE :
Code : Tout sélectionner
public class zonemarche : MonoBehaviour
{
public bool Zonelimite;
void Start()
{
Zonelimite = false;
}
void OnTriggerEnter()
{
Zonelimite = true;
}
void OnTriggerExit()
{
Zonelimite = false;
}
}
Code : Tout sélectionner
public class DeplacementPerso : MonoBehaviour
{
public float speed = 10.0f;
public float speedRotation = 180.0f;
public float minToMove = 0.1f;
Animator anim;
public float vitesseplayer;
public zonemarche Zonelimite; ///////////// RECUPERER LA VARIABLE
float horizontalSpeed = 2.0f;
void Start()
{
anim = GetComponent<Animator>();
Cursor.visible = false;
vitesseplayer = speed;
Zonelimite = GetComponent<zonemarche>();///////////// RECUPERER LA VARIABLE
}
void Update()
{
vitesseplayer = speed;
float h = horizontalSpeed * Input.GetAxis("Mouse X");
transform.Rotate(0,h,0);
if (Input.GetKey(KeyCode.Z) == true)
{
anim.SetBool("walkplayer", true);
gameObject.transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.Self);
}
else
anim.SetBool("walkplayer", false);
if (Input.GetKey(KeyCode.S) == true)
{
anim.SetBool("arriereplayer", true);
gameObject.transform.Translate(-Vector3.forward * speed * Time.deltaTime, Space.Self);
}
else
anim.SetBool("arriereplayer", false);
if (Input.GetKey(KeyCode.Q) == true)
{
if (Zonelimite) //// SI ON ENTRE EN ZONE DE MARCHE, IMPOSSIBLE DE COURIR
{
speed = 3;
anim.SetFloat("vitesseplayer", speed);
}
else
speed = 10;
anim.SetFloat("vitesseplayer", speed);
}
else
speed = 3;
anim.SetFloat("vitesseplayer", speed);
}
}