Das ist mein Skript für die Spielerbewegung in Unity (2d).Wie man diagonale Bewegung stoppt - Einheit 2d?
Wenn zwei Richtungstasten gedrückt werden - statt diagonal zu bewegen - ich brauche den Spieler in der zuletzt gedrückten Richtung zu bewegen (und wenn das freigegeben wird, die Richtung der bereits nach unten gehalten)
if (!attacking)
{
if (Input.GetAxisRaw("Horizontal") > 0.5f || Input.GetAxisRaw("Horizontal") < -0.5f)
{
//transform.Translate (new Vector3(Input.GetAxisRaw("Horizontal") * moveSpeed * Time.deltaTime, 0f, 0f));
myRigidBody.velocity = new Vector2(Input.GetAxisRaw("Horizontal") * currentMoveSpeed, myRigidBody.velocity.y);
PlayerMoving = true;
lastMove = new Vector2(Input.GetAxisRaw("Horizontal"), 0f);
}
if (Input.GetAxisRaw("Vertical") > 0.5f || Input.GetAxisRaw("Vertical") < -0.5f)
{
//transform.Translate(new Vector3(0f, Input.GetAxisRaw("Vertical") * moveSpeed * Time.deltaTime, 0f));
myRigidBody.velocity = new Vector2(myRigidBody.velocity.x, Input.GetAxisRaw("Vertical") * currentMoveSpeed);
PlayerMoving = true;
lastMove = new Vector2(0f, Input.GetAxisRaw("Vertical"));
}
}
ein paar private Variablen hinzufügen, den vorherigen Wert erinnern und vergleichen? Suchen Sie nach grundlegenden Ideen, wie Sie damit umgehen sollen, oder haben Sie Probleme bei der Codierung? –