он должен поворачиваться налево когда я жму A (контролеры вставлены в юнити, так что за то что их нет в коде не предъявляйте) using System.Collections; using System.Collections.Generic; using UnityEngine; public class Hero : MonoBehaviour { [SerializeField] private float speed = 3f; [SerializeField] private int lives = 5; [SerializeField] private float jumpForce = 15f; private Rigidbody2D rb; private SpriteRenderer sprite; private void awake() { rb = GetComponent<Rigidbody2D>(); sprite = GetComponentInChildren<SpriteRenderer>(); } private void Update() { if (Input.GetButton("Horizontal")) Run(); } private void Run() { Vector3 dir = transform.right * Input.GetAxis("Horizontal"); transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, speed * Time.deltaTime); sprite.flipX = dir.x < 0.0f; } } CSHARP using System.Collections; using System.Collections.Generic; using UnityEngine; public class Hero : MonoBehaviour { [SerializeField] private float speed = 3f; [SerializeField] private int lives = 5; [SerializeField] private float jumpForce = 15f; private Rigidbody2D rb; private SpriteRenderer sprite; private void awake() { rb = GetComponent<Rigidbody2D>(); sprite = GetComponentInChildren<SpriteRenderer>(); } private void Update() { if (Input.GetButton("Horizontal")) Run(); } private void Run() { Vector3 dir = transform.right * Input.GetAxis("Horizontal"); transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, speed * Time.deltaTime); sprite.flipX = dir.x < 0.0f; } } "Участок" проблемы sprite.flipX = dir.x < 0.0f;
бесполезный Привет! Давайте разберемся с вашим кодом. Вижу, что вы используете метод `flipX` для изменения направления спрайта в зависимости от направления движения. Однако, вы упомянули, что персонаж не поворачивается по оси X. Первое, что бросается в глаза — это использование метода `awake()` с маленькой буквы. В Unity метод, который вызывается при инициализации объекта, должен быть написан как `Awake()` с большой буквы. Из-за этого компоненты `Rigidbody2D` и `SpriteRenderer` возможно не инициализируются должным образом. Вот исправленный вариант вашего кода: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Hero : MonoBehaviour { [SerializeField] private float speed = 3f; [SerializeField] private int lives = 5; [SerializeField] private float jumpForce = 15f; private Rigidbody2D rb; private SpriteRenderer sprite; private void Awake() // Исправлено на правильное название метода { rb = GetComponent<Rigidbody2D>(); sprite = GetComponentInChildren<SpriteRenderer>(); } private void Update() { if (Input.GetButton("Horizontal")) Run(); } private void Run() { Vector3 dir = transform.right * Input.GetAxis("Horizontal"); transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, speed * Time.deltaTime); sprite.flipX = dir.x < 0.0f; } } CSHARP using System.Collections; using System.Collections.Generic; using UnityEngine; public class Hero : MonoBehaviour { [SerializeField] private float speed = 3f; [SerializeField] private int lives = 5; [SerializeField] private float jumpForce = 15f; private Rigidbody2D rb; private SpriteRenderer sprite; private void Awake() // Исправлено на правильное название метода { rb = GetComponent<Rigidbody2D>(); sprite = GetComponentInChildren<SpriteRenderer>(); } private void Update() { if (Input.GetButton("Horizontal")) Run(); } private void Run() { Vector3 dir = transform.right * Input.GetAxis("Horizontal"); transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, speed * Time.deltaTime); sprite.flipX = dir.x < 0.0f; } } Попробуйте внести эти изменения и проверьте, исправляет ли это вашу проблему с поворотом персонажа.