Мне бы хотелось отключить диагональное движение в этом сценарии движения, но я понятия не имею, как это сделать.Я хочу, чтобы мой игрок двигался всякий раз, когда я нажимаю на карту, она движется, но включает в себя диагонали, от которых я хочу избавиться.Я также хотел бы, чтобы мои анимации работали.Не могли бы вы, ребята, помочь мне?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move : MonoBehaviour
{
[Range(1f, 10f)]
public float moveSpeed = 1f;
Touch touch;
private Vector3 touchPosition, whereToMove;
private bool isWalking = false;
float previousDistanceToTouchPos, currentDistanceToTouchPos;
private Animator anim;
Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
void Update()
{
if (isWalking)
currentDistanceToTouchPos = (touchPosition - transform.position).magnitude;
if (Input.touchCount > 0)
{
touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
previousDistanceToTouchPos = 0;
currentDistanceToTouchPos = 0;
isWalking = true;
touchPosition = Camera.main.ScreenToWorldPoint(touch.position);
touchPosition.z = 0;
whereToMove = (touchPosition - transform.position).normalized;
rb.velocity = new Vector3(whereToMove.x * moveSpeed, whereToMove.y * moveSpeed, );
}
}
if (currentDistanceToTouchPos > previousDistanceToTouchPos)
{
isWalking = false;
rb.velocity = Vector2.zero;
}
if (isWalking)
{
previousDistanceToTouchPos = (touchPosition - transform.position).magnitude;
}
float horizontalMovement = Input.GetAxisRaw("Horizontal");
float verticalMovement = Input.GetAxisRaw("Vertical");
// If the player wants to move and is not walking.
// The future position is calculated.
if (horizontalMovement != 0 && !isWalking)
{
whereToMove += Vector3.right * horizontalMovement;
}
else if (verticalMovement != 0 && !isWalking)
{
whereToMove += Vector3.up * verticalMovement;
}
// If the future position is different from the current one, it is because the player wants to move the character.
//if (whereToMove != transform.position)
//{
// transform.position = Vector3.MoveTowards(transform.position, whereToMove, Time.deltaTime * moveSpeed);
// if (!isWalking) { isWalking = true; }
//}
//if (horizontalMovement != 0 || verticalMovement != 0)
//{
//}
// Animating the player when moving
anim.SetFloat("x", Input.GetAxisRaw("Horizontal"));
anim.SetFloat("y", Input.GetAxisRaw("Vertical"));
}
}
Я бы тоже хотел, чтобы мои анимации работали.Не могли бы вы, ребята, помочь мне?Я новичок, поэтому, пожалуйста, будьте в курсе