- Home /
Disable Diagonal Movement
So I am having a few problems trying to disable diagonal movement of the player in my 2d rpg style game. I have tried including "return" and "else" commands to the if statements, however it has caused some problems with the animations of the player. I have looked at other tutorials also but that hasn't helped either. I would also like the player to be able to change direction on the spot without moving (pretty much the movement style of the original pokemon games). Here is my script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour {
public float moveSpeed;
private Animator anim;
private bool playerMoving;
private Vector2 lastMove;
// Use this for initialization
void Start () {
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update() {
playerMoving = false;
if (Input.GetAxisRaw("Horizontal") > 0.5f || Input.GetAxisRaw("Horizontal") < -0.5f)
{
transform.Translate(new Vector3(Input.GetAxisRaw("Horizontal") * moveSpeed * Time.deltaTime, 0f, 0f));
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));
playerMoving = true;
lastMove = new Vector2(0f, Input.GetAxisRaw("Vertical"));
}
anim.SetFloat("MoveX", Input.GetAxisRaw("Horizontal"));
anim.SetFloat("MoveY", Input.GetAxisRaw("Vertical"));
anim.SetBool("PlayerMoving", playerMoving);
anim.SetFloat("LastMoveX", lastMove.x);
anim.SetFloat("LastMoveY", lastMove.y);
}
Thanks in advance.
Answer by tormentoarmagedoom · Apr 12, 2018 at 11:13 AM
Good day.
You just need to "block" horizontal movement if vertical is active.
replace the "if" with a "else if"
else if (Input.GetAxisRaw("Vertical") > 0.5f || Input.GetAxisRaw("Vertical") < -0.5f)
So horitzontal have priority over vertical., and is not possible to execute both at same time..
Bye!
Hi ausar000, did you manage to get a working script for this problem? I'm having the same issue.
Your answer
Follow this Question
Related Questions
How Do I Check if another key was pushed while one key was being held down? 0 Answers
Handling input, movement, animation with scripts? 1 Answer
Animation not occuring instant,Survival Shooter Walking animation not instant... 1 Answer
My character is not moving when playing animation 0 Answers
Input System Can't Catch Event on Update 0 Answers