Добрый день, друзья! Подскажите, пожалуйста. Почему не падает герой не землю и не срабатывает движение влево и вправо и прыжок.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
Rigidbody2D rb; // rb имеет класс риджибади.
public float speed;
public float jumpHeight;
bool isGrounded; // переменная которая определяет, стоит ли персонаж на каком-либо объекте.
public Transform groundCheck; // переменная оценивает находится ли персонаж на поверхности.
void Start()
{
rb = GetComponent<Rigidbody2D>();// в переменную помещаем класс Rigidbody2D
}
void Update()
{
Flip();
CheckGround();
}
void FixedUpdate() // функция или метод отвечающие за физические действия
{
rb.velocity = new Vector2(Input.GetAxis("Horizontal") * speed, rb.velocity.y); // присваиваем в переменную скорость класс инпут - это ввод, GetAxis – определяет какая кнопка влево или вправо нажата, velocity - скорость
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)//если нажат пробел
rb.AddForce(transform.up * jumpHeight, ForceMode2D.Impulse);// добавляем силовой прыжок
}
void Flip()
{
if (Input.GetAxis("Horizontal") > 0) // если нажата клавиша вправо
transform.localRotation = Quaternion.Euler(0, 0, 0); // то смотрим вправо
if (Input.GetAxis("Horizontal") < 0)// если нажата клавиша влево
transform.localRotation = Quaternion.Euler(0, 180, 0); // то смотрим влево
}
void CheckGround()// проверка пола
{
Collider2D[] colliders = Physics2D.OverlapCircleAll(groundCheck.position, 0.2f);// 0,2 - это радиус коллайдера, все коллайдеры помещаются в список в этом радиусе 0,2
isGrounded = (colliders.Length > 1); //условие земли, если длина списка colliders.Length>1, то рядом с персонажем больше одного объекта, например земля или враг, то он прыгать уже не будет.
}
}
Запринтуй то что у тебя в Input.GetAxis, возможно, инпут просто не хватается стрелками в настройках ввода. Если не собираешься выпускать игру на консоли, лучше пользоваться напрямую кнопками по keycode, как у тебя с пробелом.