Не правильно работает поворот персонажа при ходьбе

Рейтинг: 0Ответов: 1Опубликовано: 06.04.2023

Моя проблема заключается в том, что когда я нажимаю идти влево, мой персонаж переворачивается с ног на голову, подскажите что не так с кодом

using System.Collections; using System.Collections.Generic; using
System.Security.Cryptography.X509Certificates; using UnityEngine;

public class PlayerController : MonoBehaviour {
    public float speed;
    public float jumpForce;


    private float moveInput;
    private Rigidbody2D rb;

    private bool facingRight = true;

    private void Start() 
    {
        rb = GetComponent<Rigidbody2D>();
    }

    private void FixedUpdate()
    {
        moveInput = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);
        if (facingRight == false && moveInput > 0)
        {
            Flip();
        }
        else if (facingRight == true && moveInput < 0) 
        {
            Flip();
        }
    }

    void Flip() 
    {
        facingRight = !facingRight;
        Vector3 Scaler = transform.localScale;
        Scaler *= -1;
        transform.localScale = Scaler;
    } }

Ответы

▲ 0Принят

Помимо поворота, также подправил немного условия в FixedUpdate().

    private void FixedUpdate()
{
    moveInput = Input.GetAxis("Horizontal");
    rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);
    if (!facingRight && moveInput > 0)
    {
        Flip();
    }
    else if (facingRight && moveInput < 0) 
    {
        Flip();
    }
}

void Flip() 
{
    facingRight = !facingRight;
    Vector3 Scaler = transform.localScale;
    Scaler = new Vector3(transform.localScale.x * -1, transform.localScale.y, transform.localScale.z);
    transform.localScale = Scaler;
}