Отключить диагональное движение - PullRequest
0 голосов
/ 24 января 2019

Мне бы хотелось отключить диагональное движение в этом сценарии движения, но я понятия не имею, как это сделать.Я хочу, чтобы мой игрок двигался всякий раз, когда я нажимаю на карту, она движется, но включает в себя диагонали, от которых я хочу избавиться.Я также хотел бы, чтобы мои анимации работали.Не могли бы вы, ребята, помочь мне?

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"));

    }
}

Я бы тоже хотел, чтобы мои анимации работали.Не могли бы вы, ребята, помочь мне?Я новичок, поэтому, пожалуйста, будьте в курсе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...