@Romanuss

Как сделать передвижение персонажа вперёд-назад по клику?

Здравствуйте, помогите решить проблему. Имеется скрипт передвижения персонажа вперёд и назад по клику мыши. Проблема заключается в том, что для смены направления персонажа нужно кликать несколько раз.

Сам скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovment : MonoBehaviour {


    private Rigidbody2D rb;


    private bool isFacingRight = true;
    private bool isGrounded;
    private Animator anim;

    [Header("Value:")]
    public float speed;
    public float jumpForce;
    public Transform groundCheck;
    public float checkRadius;
    public LayerMask whatIsGround;

    [Header("ExtraJumps:")]
    private int extraJumps;
    public int extraJumpsValue;

    void Start() {
        extraJumps = extraJumpsValue;
        rb = GetComponent<Rigidbody2D>();
        anim = GetComponent<Animator>();
    }

    void FixedUpdate()
    {

        isGrounded = Physics2D.OverlapCircle(groundCheck.position, checkRadius, whatIsGround);

        int t = 1;

        rb.velocity = new Vector2(t * speed, rb.velocity.y);

        if (Input.GetMouseButtonDown(1))
        {
            if (isFacingRight == true)
            {
                Flip();
                t = -1;
                Debug.Log("->");
                isFacingRight = false;
            }
            else if (isFacingRight == false)
            {
                Flip();
                t = 1;
                Debug.Log("<-");
                isFacingRight = true;
            }
        }
    }

    void Update()
    {
        if (isGrounded == true)
        {
            extraJumps = extraJumpsValue;
            anim.SetBool("isJump", false);
        }
            
        if ((Input.GetMouseButtonDown(0) && extraJumps > 0))
        {
            rb.velocity = Vector2.up * jumpForce;
            extraJumps--;
            anim.SetBool("isJump", true);
        }
        else if ((Input.GetMouseButtonDown(0) && extraJumps == 0 && isGrounded == true))
        {
            rb.velocity = Vector2.up * jumpForce;
            anim.SetBool("isJump", true);
        }
    }

    private void Flip()
    {
        //меняем направление движения персонажа
        isFacingRight = !isFacingRight;
        //получаем размеры персонажа
        Vector3 theScale = transform.localScale;
        //зеркально отражаем персонажа по оси Х
        theScale.x *= -1;
        //задаем новый размер персонажа, равный старому, но зеркально отраженный
        transform.localScale = theScale;
    }
}
  • Вопрос задан
  • 375 просмотров
Пригласить эксперта
Ответы на вопрос 1
AngryProgrammer001
@AngryProgrammer001
Unity C# Developer
GetMouseButtonDown попробуйте заменить на GetMouseButtonUp или GetMouseButton
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы