Essentiellement, j'essaie de créer un système de déplacement de joueur similaire à celui de RPG Maker avec 8 directions. J'ai réussi en partie, mais pas complètement. Lorsque j'essaie de changer brusquement de direction par exemple de haut à gauche, le personnage bégaye et refuse de bouger sans relâcher toutes les touches au préalable.
L'échelle de gravité est désactivée ou plutôt réglée à 0, le type de corps est dynamique.
Voici un code :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MoveChar : MonoBehaviour {
Rigidbody2D rigid;
public float Vitesse;
// Utilisez ceci pour l'initialisation
void Start () {
rigid = GetComponent();
}
// Update est appelé une fois par frame
void Update () {
// float horiz = Input.GetAxis("Horizontal");
// float vert = Input.GetAxis("Vertical");
if(Input.GetKeyDown(KeyCode.W)) //________________________________________MOUVEMENT VERS LE HAUT
{
rigid.velocity = new Vector2(rigid.velocity.x, 1 * Vitesse);
}
else if(Input.GetKeyUp(KeyCode.W))
{
rigid.velocity = new Vector2(0, 0);
}
if (Input.GetKeyDown(KeyCode.S)) //_______________________________________MOUVEMENT VERS LE BAS
{
rigid.velocity = new Vector2(rigid.velocity.x, -1 * Vitesse);
}
else if (Input.GetKeyUp(KeyCode.S))
{
rigid.velocity = new Vector2(0, 0);
}
if (Input.GetKeyDown(KeyCode.A)) //_______________________________________MOUVEMENT VERS LA GAUCHE
{
rigid.velocity = new Vector2(-1 * Vitesse, rigid.velocity.y);
}
else if (Input.GetKeyUp(KeyCode.A))
{
rigid.velocity = new Vector2(0, 0);
}
if (Input.GetKeyDown(KeyCode.D)) //_______________________________________MOUVEMENT VERS LA DROITE
{
rigid.velocity = new Vector2(1 * Vitesse, rigid.velocity.y);
}
else if (Input.GetKeyUp(KeyCode.D))
{
rigid.velocity = new Vector2(0, 0);
}
}