Как создать ПЛАТФОРМЕР в 2023 году на Unity #1 [GameDev]

Поделиться
HTML-код
  • Опубликовано: 21 окт 2024

Комментарии • 44

  • @sergejunk
    @sergejunk Год назад +1

    Собсна сам скрипт, для тех, кому лень тапать))
    using UnityEngine;
    public class player : MonoBehaviour
    {
    [SerializeField] private float playerSpeed;
    [SerializeField] private float jumpForce;
    [SerializeField] private float groundCheckRadius;
    [SerializeField] private Transform groundCheckPoint;
    [SerializeField] private LayerMask whatIsGround;
    private bool isGrounded = false;
    private Rigidbody2D rb;
    private void Start() {
    rb = GetComponent();
    }
    private void Update()
    {
    isGrounded = Physics2D.OverlapCircle(groundCheckPoint.position, groundCheckRadius, whatIsGround);
    float moveHorizpntal = Input.GetAxis("Horizontal");
    Vector3 movement = new Vector3(moveHorizpntal, 0f, 0f);
    if (isGrounded && Input.GetKeyDown(KeyCode.Space)){
    rb.AddForce(new Vector2(0f, jumpForce));
    }
    transform.Translate(movement * playerSpeed * Time.deltaTime);
    }
    }
    каменты в код добавляйте сами и не забываем проверить правильность названия класса у себя😉

  • @almaz303.
    @almaz303. Год назад +3

    Уууууууу лучшее видео лучшего ютубера!!!!

    • @gedrolitgamedev
      @gedrolitgamedev  Год назад +2

      Спасибо, бро 😎

    • @almaz303.
      @almaz303. Год назад +2

      @@gedrolitgamedev Почему персонаж не красный куб с глазами?(⁠◕⁠દ⁠◕⁠)????

    • @gedrolitgamedev
      @gedrolitgamedev  Год назад +2

      @@almaz303. Так изображаются враги 😁

    • @almaz303.
      @almaz303. Год назад +2

      @@gedrolitgamedev а меня не волнует 😡🥵🔥

  • @Trollgo
    @Trollgo 9 месяцев назад +1

    чтобы менять значение переменных прямо в инспекторе можно просто указать модефикатор доступа public чтобы не писать так много)

    • @gedrolitgamedev
      @gedrolitgamedev  9 месяцев назад

      Можно. И так меньше писать, но это не правильно, так как public нужен для считывания/изменения переменной из, например, другого класса (скрипта), но если ты это не делаешь, то нужен private. Этот недочёт конечно особо не испортит твой код, но избежание этого недочёта сделает твой скрипт правильнее и чище 😊

    • @Trollgo
      @Trollgo 9 месяцев назад +1

      @@gedrolitgamedev Интересно, спасибо

  • @kuyli3744
    @kuyli3744 7 месяцев назад +1

    Почему так мало лайков, подпискчиков???

  • @DaS_10
    @DaS_10 Год назад +1

    Недооценённый контент

  • @lolerplay2191
    @lolerplay2191 Год назад +1

    Здравствуйте! Появилась проблема. У меня в Unity возникла проблема с кодом: " "physics2D" does not exist in the current content ". Что мне с этим делать?

    • @gedrolitgamedev
      @gedrolitgamedev  Год назад +1

      Привет, напиши Physics2D с большой буквы, скрипт любит придраться к таким мелочам как заглавная и незаглавная буква

    • @lolerplay2191
      @lolerplay2191 Год назад +1

      Хорошо, благодарю!@@gedrolitgamedev

  • @lammaxx7787
    @lammaxx7787 Год назад +2

    в целом туториал имба, круто и понятно, но у меня ошибка при тесте, когда нажимаю пробел чтобы прыгнуть, игры зыкрывается и пишет: Object reference not set to an instatnce of an object
    и что мне делать, что я пропустил... помоги пожалуйста!

    • @gedrolitgamedev
      @gedrolitgamedev  Год назад

      Ты что-то где-то не указал, эта ошибка выскакивает, если какое-то поле осталось пустым. Возможно ты не повесил на объект игрока Rigidbody2D (5:23).
      Также на 13:53 я показал как находить ошибки по числам, можешь их назвать и я смогу точно определить с чем проблема.

    • @lammaxx7787
      @lammaxx7787 Год назад +1

      @@gedrolitgamedev я перепроверил в коде всё совпадает 1 в 1, а Rigidbody2D на теле игрока установлен. баг именно с прыжком, ходьба, камера и всё остальное работает исправно
      в консоли пишет следующее:
      NullReferenceException: Object reference not set to an instance of an object Player.Update () (at Assets/Scenes/scripts/Player.cs:33)

    • @gedrolitgamedev
      @gedrolitgamedev  Год назад +1

      @@lammaxx7787 А что у тебя находится на 33 строчке кода? Консоль жалуется на неё.

    • @lammaxx7787
      @lammaxx7787 Год назад +1

      @@gedrolitgamedevна 33 у меня rb.AddForce(new Vector2(0f, jumpForce)); и вроде всё также как у тебя

    • @gedrolitgamedev
      @gedrolitgamedev  Год назад +2

      @@lammaxx7787 Ну да, видимо, по какой-то причине, скрипт не может найти Rigidbody2D самостоятельно. Это можно решить так - при объявлении Rigidbody2D (на 14 строчке) установи модификатор доступа "public" вместо "private" (public Rigidbody2D rb), а в функции Start() убери строчку где мы объявляем Rigidbody2D игрока (rb = GetComponent(); - эту строчку нужно стереть). После этого, в проекте, в инспекторе игрока (где все переменные: скорость, сила прыжка и т.д.) у тебя
      появится пустое поле под названием "Rb", в него просто перетащи компонент Rigidbody2D, который висит на игроке и вроде всё должно заработать.
      Но возможно ты что-то не так написал в функции Start(), проверь, чтобы везде было Rigidbody2D, а не Rigidbody (в том числе и в инспекторе игрока), так как мы работаем с 2Д. Надеюсь это поможет.

  • @chelchkik
    @chelchkik 10 месяцев назад +2

    Всё работает но почему-то прыжок через пару кликов перестаёт работать что делать?

    • @gedrolitgamedev
      @gedrolitgamedev  10 месяцев назад +1

      А ты прыжок в функции Update() вызываешь?

    • @chelchkik
      @chelchkik 10 месяцев назад +1

      @@gedrolitgamedev я всё как ты делал посмотри
      private void Update()
      {
      isGrounded = Physics2D.OverlapCircle(groundCheckPoint.position, groundCheckRadius, wathIsGround);
      float moveHorizontal = Input.GetAxis("Horizontal");
      Vector3 movement = new Vector3(moveHorizontal, 0f,0f);
      if (isGrounded == true && Input.GetKeyDown(KeyCode.Space))
      {
      rb.AddForce(new Vector2(0f, jumpForce));
      }
      transform.Translate(movement * playerSpeed * Time.deltaTime);
      }

    • @chelchkik
      @chelchkik 10 месяцев назад +1

      @@gedrolitgamedev А кстати у мена камера за игроком не следует

    • @gedrolitgamedev
      @gedrolitgamedev  10 месяцев назад +1

      @@chelchkik Со скриптом вроде всё ок, попробуй установить значение groundCheckRadius побольше (а groundCheckPoint установить у ног на игроке). По поводу камеры - проверь, поместил ли ты игрока в поле Follow у камеры

    • @chelchkik
      @chelchkik 10 месяцев назад +1

      @@gedrolitgamedev он почему-то именно на одном блоке не может прыгать

  • @kuyli3744
    @kuyli3744 7 месяцев назад +1

    У меня летать можно😂

    • @gedrolitgamedev
      @gedrolitgamedev  7 месяцев назад

      Если ты имеешь ввиду бесконечный прыжок, то попробуй уменьшить радиус обнаружения земли (или перепроверь, правильно ли ты написал скрипт - при таких багах в основном виновато неправильное условие в скрипте). Если не найдёшь ошибку, можешь написать мне в дс или тг - помогу :3 (ссылки на тг чат и дс сервер в описании под каждым видео, можешь найти меня там, буду рад если заглянешь ;D )

    • @kuyli3744
      @kuyli3744 7 месяцев назад +1

      @@gedrolitgamedev да я уже исправил всё, но зато теперь знаю как флеппи берд делать).
      А у тебя есть дс сервер?)

  • @hopperox2720
    @hopperox2720 Год назад +1

    спасибо , Гедролит а почему у меня в меню выбора спрайтов 2д нет треугольника ?

    • @gedrolitgamedev
      @gedrolitgamedev  Год назад +1

      Незнаю, вроде должен быть. Если что, вместо его можешь использовать квадрат. Возможно у тебя что-то не докачано.

    • @hopperox2720
      @hopperox2720 Год назад +1

      @@gedrolitgamedev ясно , думаю его можно скачать через то где мы скачивали симашин

  • @sandman-l4m
    @sandman-l4m 10 месяцев назад +1

    пж помогите мне у меня вместо визуал студио запускается блокнот и с этим я ничего не мщгу поделать

    • @gedrolitgamedev
      @gedrolitgamedev  10 месяцев назад

      Ты скачал visual studio?

    • @sandman-l4m
      @sandman-l4m 10 месяцев назад +1

      давно, но к сожелению я уже успел всё исправить до твоего ответа спс тебе@@gedrolitgamedev

  • @sandman-l4m
    @sandman-l4m 10 месяцев назад +1

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

    • @gedrolitgamedev
      @gedrolitgamedev  10 месяцев назад

      Есть ли ошибка в консоли? Так же проверь, поместил ли ты этот скрипт на персонажа и добавил ли ты персонажу компонент Rigidbody2D

  • @dimanap8572
    @dimanap8572 Год назад +1

    а как увеличить силу тяжести помогите пж

    • @gedrolitgamedev
      @gedrolitgamedev  Год назад

      Тебе нужно чтобы игрок быстрее падал? Если да, то в компонента Rigidbody 2D у игрока в поле Mass увеличь значение, можешь поиграться с ним, пока не найдешь нужный результат

    • @dimanap8572
      @dimanap8572 11 месяцев назад +1

      спасибо

  • @j0ck.d555
    @j0ck.d555 7 месяцев назад +1

    у меня шото неполучается