Задать вопрос
@Haraz

Как сделать, чтобы персонаж поворачивался в сторону движения в Unity2d?

Помогите, хочу, чтобы персонаж поворачивался в ту сторону, в которую идет. Игра 2D.
Изначально смотрит налево.
Вот код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerContrl2 : MonoBehaviour
{
    public Rigidbody2D rb;
    public Vector2 moveVector;
    public float speed = 10f;
    void Start()
    {
        rb.GetComponent<Rigidbody2D>();
    }


    void Update()
    {
        walk();
        Jump();
        CheckingGround();
    }
    void walk()
    {
        moveVector.x = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveVector.x * speed, rb.velocity.y);
    }

    public float jumpForce = 7f;
    void Jump()
    {
        if (Input.GetKeyDown(KeyCode.Space) && onGround)
        {
            //rb.velocity = new Vector2(rb.velocity.x, jumpForce);
            rb.AddForce(Vector2.up * jumpForce);
        }
    }

    public bool onGround;
    public Transform GroundCheck;
    public float checkRadius = 0.5f;
    public LayerMask Ground;
    void CheckingGround()
    {
        onGround = Physics2D.OverlapCircle(GroundCheck.position, checkRadius, Ground);
    }
}
  • Вопрос задан
  • 3056 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
EdMSL
@EdMSL
Free Developer
Самый примитивный способ (а значит не самый лучший).
Создаем метод:
private void Flip()
    {
        if (Input.GetAxisRaw("Horizontal") == 1)
        {
            transform.localScale = new Vector3(1, 1, 1);
        } else if (Input.GetAxisRaw("Horizontal") == -1)
        {
            transform.localScale = new Vector3(-1, 1, 1);
        }
    }

В Update пишем:
if (Input.GetAxis("Horizontal") != 0) {
    Flip();
}

Иначе говоря, мы просто зеркалим спрайт по оси Х, меняя значение между 1 и -1.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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