скрипт для управления 2д персонажем на C#

всем привет у меня появилась такая проблема я нарисовал спрайты, создал карты для игры и полез в интернет за скриптами и оказалось что нормальных скриптов очень мало короче я не нашел подходящий скрипт пожалуйста напишите скрипт что бы можно было бы ходить в право и лево прыгать. заранее СПАСИБО!


Ответы (1 шт):

Автор решения: svnomove

не совсем понял твой вопрос но вот код для пк.

"//" - это комментарии.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move : MonoBehaviour
{
    public Rigidbody2D rb;
    public Vector2 moveVector2;
    public float speed = 2f; //это скорость, вместо 2 можешь поставить любое число
    public float jumpForce = 5f; //сила прыжка тоже можешь любое число
    public bool faceRight = true; //смотрит вправо или нет
    public LayerMask Ground; 
    public bool CanJump; //может прыгать или нет

    void Start()
    {
        rb = GetComponent<Rigidbody2D>(); //получаю ссылку на риджидбоди и даю ей имя что бы не писать каждый раз
    }

    void Update() //все что написано в этой группе методов, вызываются каждый кадр
    {
        walk(); //вызываю функции
        Reflect();
        Jump();


        //стреляю невидимым лучем вниз, если попадает на обьект со слоем "Ground" то можно прыгать
        RaycastHit2D CheckGround = Physics2D.Raycast(transform.position, transform.TransformDirection(Vector2.down), 1.5f, Ground);
        if(CheckGround)
        {
            CanJump = true;
        }
        else
        {
            CanJump = false;
        }
    }

    void walk()
    {
        moveVector2.x = Input.GetAxis("Horizontal"); // данные о нажатии горизонтальных стрелочек перемещаются в МовеВектор2.х 
        rb.velocity = new Vector2(moveVector2.x * speed, rb.velocity.y); //через rigidbody2d двигаю персонажа умноженное на скорость
    }

    void Reflect()
    {
        if ((moveVector2.x > 0 && !faceRight) || (moveVector2.x < 0 && faceRight))
        {
            transform.localScale *= new Vector2(-1, 1);
            faceRight = !faceRight;
        }
    }

    void Jump()
    {
        if(Input.GetKeyDown(KeyCode.Space)) //при нажатии на пробел, сначала проверяет можно ли прыгать
        {
            if (CanJump)
            {
                rb.AddForce(Vector2.up * jumpForce); //прыжок
            }
        }
    }
}

В самом юнити не забудь создать слои "Ground" и присвоить им земле где можно прыгать

→ Ссылка