Можно. И так меньше писать, но это не правильно, так как public нужен для считывания/изменения переменной из, например, другого класса (скрипта), но если ты это не делаешь, то нужен private. Этот недочёт конечно особо не испортит твой код, но избежание этого недочёта сделает твой скрипт правильнее и чище 😊
Здравствуйте! Появилась проблема. У меня в Unity возникла проблема с кодом: " "physics2D" does not exist in the current content ". Что мне с этим делать?
в целом туториал имба, круто и понятно, но у меня ошибка при тесте, когда нажимаю пробел чтобы прыгнуть, игры зыкрывается и пишет: Object reference not set to an instatnce of an object и что мне делать, что я пропустил... помоги пожалуйста!
Ты что-то где-то не указал, эта ошибка выскакивает, если какое-то поле осталось пустым. Возможно ты не повесил на объект игрока Rigidbody2D (5:23). Также на 13:53 я показал как находить ошибки по числам, можешь их назвать и я смогу точно определить с чем проблема.
@@gedrolitgamedev я перепроверил в коде всё совпадает 1 в 1, а Rigidbody2D на теле игрока установлен. баг именно с прыжком, ходьба, камера и всё остальное работает исправно в консоли пишет следующее: NullReferenceException: Object reference not set to an instance of an object Player.Update () (at Assets/Scenes/scripts/Player.cs:33)
@@lammaxx7787 Ну да, видимо, по какой-то причине, скрипт не может найти Rigidbody2D самостоятельно. Это можно решить так - при объявлении Rigidbody2D (на 14 строчке) установи модификатор доступа "public" вместо "private" (public Rigidbody2D rb), а в функции Start() убери строчку где мы объявляем Rigidbody2D игрока (rb = GetComponent(); - эту строчку нужно стереть). После этого, в проекте, в инспекторе игрока (где все переменные: скорость, сила прыжка и т.д.) у тебя появится пустое поле под названием "Rb", в него просто перетащи компонент Rigidbody2D, который висит на игроке и вроде всё должно заработать. Но возможно ты что-то не так написал в функции Start(), проверь, чтобы везде было Rigidbody2D, а не Rigidbody (в том числе и в инспекторе игрока), так как мы работаем с 2Д. Надеюсь это поможет.
@@chelchkik Со скриптом вроде всё ок, попробуй установить значение groundCheckRadius побольше (а groundCheckPoint установить у ног на игроке). По поводу камеры - проверь, поместил ли ты игрока в поле Follow у камеры
Если ты имеешь ввиду бесконечный прыжок, то попробуй уменьшить радиус обнаружения земли (или перепроверь, правильно ли ты написал скрипт - при таких багах в основном виновато неправильное условие в скрипте). Если не найдёшь ошибку, можешь написать мне в дс или тг - помогу :3 (ссылки на тг чат и дс сервер в описании под каждым видео, можешь найти меня там, буду рад если заглянешь ;D )
Тебе нужно чтобы игрок быстрее падал? Если да, то в компонента Rigidbody 2D у игрока в поле Mass увеличь значение, можешь поиграться с ним, пока не найдешь нужный результат
Собсна сам скрипт, для тех, кому лень тапать))
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);
}
}
каменты в код добавляйте сами и не забываем проверить правильность названия класса у себя😉
Уууууууу лучшее видео лучшего ютубера!!!!
Спасибо, бро 😎
@@gedrolitgamedev Почему персонаж не красный куб с глазами?(◕દ◕)????
@@almaz303. Так изображаются враги 😁
@@gedrolitgamedev а меня не волнует 😡🥵🔥
чтобы менять значение переменных прямо в инспекторе можно просто указать модефикатор доступа public чтобы не писать так много)
Можно. И так меньше писать, но это не правильно, так как public нужен для считывания/изменения переменной из, например, другого класса (скрипта), но если ты это не делаешь, то нужен private. Этот недочёт конечно особо не испортит твой код, но избежание этого недочёта сделает твой скрипт правильнее и чище 😊
@@gedrolitgamedev Интересно, спасибо
Почему так мало лайков, подпискчиков???
Недооценённый контент
Здравствуйте! Появилась проблема. У меня в Unity возникла проблема с кодом: " "physics2D" does not exist in the current content ". Что мне с этим делать?
Привет, напиши Physics2D с большой буквы, скрипт любит придраться к таким мелочам как заглавная и незаглавная буква
Хорошо, благодарю!@@gedrolitgamedev
в целом туториал имба, круто и понятно, но у меня ошибка при тесте, когда нажимаю пробел чтобы прыгнуть, игры зыкрывается и пишет: Object reference not set to an instatnce of an object
и что мне делать, что я пропустил... помоги пожалуйста!
Ты что-то где-то не указал, эта ошибка выскакивает, если какое-то поле осталось пустым. Возможно ты не повесил на объект игрока Rigidbody2D (5:23).
Также на 13:53 я показал как находить ошибки по числам, можешь их назвать и я смогу точно определить с чем проблема.
@@gedrolitgamedev я перепроверил в коде всё совпадает 1 в 1, а Rigidbody2D на теле игрока установлен. баг именно с прыжком, ходьба, камера и всё остальное работает исправно
в консоли пишет следующее:
NullReferenceException: Object reference not set to an instance of an object Player.Update () (at Assets/Scenes/scripts/Player.cs:33)
@@lammaxx7787 А что у тебя находится на 33 строчке кода? Консоль жалуется на неё.
@@gedrolitgamedevна 33 у меня rb.AddForce(new Vector2(0f, jumpForce)); и вроде всё также как у тебя
@@lammaxx7787 Ну да, видимо, по какой-то причине, скрипт не может найти Rigidbody2D самостоятельно. Это можно решить так - при объявлении Rigidbody2D (на 14 строчке) установи модификатор доступа "public" вместо "private" (public Rigidbody2D rb), а в функции Start() убери строчку где мы объявляем Rigidbody2D игрока (rb = GetComponent(); - эту строчку нужно стереть). После этого, в проекте, в инспекторе игрока (где все переменные: скорость, сила прыжка и т.д.) у тебя
появится пустое поле под названием "Rb", в него просто перетащи компонент Rigidbody2D, который висит на игроке и вроде всё должно заработать.
Но возможно ты что-то не так написал в функции Start(), проверь, чтобы везде было Rigidbody2D, а не Rigidbody (в том числе и в инспекторе игрока), так как мы работаем с 2Д. Надеюсь это поможет.
Всё работает но почему-то прыжок через пару кликов перестаёт работать что делать?
А ты прыжок в функции Update() вызываешь?
@@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);
}
@@gedrolitgamedev А кстати у мена камера за игроком не следует
@@chelchkik Со скриптом вроде всё ок, попробуй установить значение groundCheckRadius побольше (а groundCheckPoint установить у ног на игроке). По поводу камеры - проверь, поместил ли ты игрока в поле Follow у камеры
@@gedrolitgamedev он почему-то именно на одном блоке не может прыгать
У меня летать можно😂
Если ты имеешь ввиду бесконечный прыжок, то попробуй уменьшить радиус обнаружения земли (или перепроверь, правильно ли ты написал скрипт - при таких багах в основном виновато неправильное условие в скрипте). Если не найдёшь ошибку, можешь написать мне в дс или тг - помогу :3 (ссылки на тг чат и дс сервер в описании под каждым видео, можешь найти меня там, буду рад если заглянешь ;D )
@@gedrolitgamedev да я уже исправил всё, но зато теперь знаю как флеппи берд делать).
А у тебя есть дс сервер?)
спасибо , Гедролит а почему у меня в меню выбора спрайтов 2д нет треугольника ?
Незнаю, вроде должен быть. Если что, вместо его можешь использовать квадрат. Возможно у тебя что-то не докачано.
@@gedrolitgamedev ясно , думаю его можно скачать через то где мы скачивали симашин
пж помогите мне у меня вместо визуал студио запускается блокнот и с этим я ничего не мщгу поделать
Ты скачал visual studio?
давно, но к сожелению я уже успел всё исправить до твоего ответа спс тебе@@gedrolitgamedev
у меня скрипт с движением направо и налево не работает что делать?
Есть ли ошибка в консоли? Так же проверь, поместил ли ты этот скрипт на персонажа и добавил ли ты персонажу компонент Rigidbody2D
а как увеличить силу тяжести помогите пж
Тебе нужно чтобы игрок быстрее падал? Если да, то в компонента Rigidbody 2D у игрока в поле Mass увеличь значение, можешь поиграться с ним, пока не найдешь нужный результат
спасибо
у меня шото неполучается
Что например?