скрипт для управления 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" и присвоить им земле где можно прыгать