Спасибо очень помог мне. Я долго искал как сделать 2D контроллер движения персонажа в стиле Top-Down. Негде не мог найти и вот та дам и вдруг попалось это видео. Всё просто и понятно спасибо.
@doublek16314 жыл бұрын
Боже, наконец то кто то на русском не просто так говорит надо так сделать, а объясняет
@babich16903 жыл бұрын
Маловато объяснений на самом деле
@icevideos76555 жыл бұрын
Как всегда всё круто. Больше Unity)))
@uragan_275 жыл бұрын
Юху, больше таких уроков, желательно прям все по полочкам ! )
@zippich74954 жыл бұрын
как сделать что бы персонаж поворачивался в сторону мышки
@КотэКотович-у5й5 жыл бұрын
Зачем Rigidbody2D ставить в kinematic? Можно просто Gravity scale поставить на 0 и Freeze Rotation Z. Если кинематик, то, игрок будет проходить сквозь колайдеры без столкновения..
@Volrest5 жыл бұрын
В последнее время я заметил,, если столкнуть другой объект с каким-то весом и скоростью с объектом, на котором вместо кинематика выключена гравитация, он начнёт медленно двигаться, как объекты в реальном космосе. Ну и при этом, у двух таких объектов без кинематика, если коллайдеры заезжают друг на друга, то они будут выталкивать друг друга из себя.
@КотэКотович-у5й5 жыл бұрын
@@Volrest я тоже подобное начал замечать, вроде колайдеры на одних координатах, а вот притормаживает игрок, пытаюсь фиксить
@Volrest5 жыл бұрын
Armagee у меня в ногах персонажа был бокс коллайдер, я заменил его на полигон и немного срезал углы внизу, чтобы персонаж мог как будто заезжать на маленькие неровности
@dr.respe6t4 жыл бұрын
@@Volrest да это и надо делать а то надо будет прыгать на малейших неровностях
@pikpokart48284 жыл бұрын
Низкий поклон тебя и огромнейшее спасибо, сколько я искала этот простой код для движения по осям x и y, но все было слишком мудреное и мне не подходило, а это именно то, что нужно.
@АнатолийКацы-б9и5 жыл бұрын
теперь...Мне нужно знать как поворачивать объект на курсор :)
@zloy_kak_tus4 жыл бұрын
Вот так будет работать поворот спрайта за курсором Если не хотите чтоб персонаж двигался за курсором, просто оставьте код отвечающий за движение как в этом видеоуроке показано. А именно вот так /////////////////////////////////////////// void Update () { Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); moveVelocity = moveInput.normalized * speed; mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); // Тот самый поворот // вычисляем разницу между текущим положением и положением мыши Vector3 difference = mousePosition - transform.position; difference.Normalize(); // вычисляемый необходимый угол поворота float rotation_z = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg; // Применяем поворот вокруг оси Z transform.rotation = Quaternion.Euler(0f, 0f, rotation_z); } /////////////////////////////////////////////Движение за курсором////////////////////////// private Vector3 mousePosition; public float moveSpeed = 2f; void Update () { mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); transform.position = Vector2.MoveTowards(transform.position, mousePosition, moveSpeed * Time.deltaTime); // вычисляем разницу между текущим положением и положением мыши Vector3 difference = mousePosition - transform.position; difference.Normalize(); // вычисляемый необходимый угол поворота float rotation_z = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg; // Применяем поворот вокруг оси Z transform.rotation = Quaternion.Euler(0f, 0f, rotation_z); }
@ЕгорСкорюкин-х3х5 жыл бұрын
Очень коротко и содержательно! Огромное спасибо!!!
@Shargim8224 жыл бұрын
Но с Kinematic коллайдеры не действуют, так что, проще сделать Gravity Scale на 0 и всё!
@kslstep9294 жыл бұрын
Благословит господь(сильно помог)
@Shargim8224 жыл бұрын
@@kslstep929 всегда пожалуйста
@dr.respe6t4 жыл бұрын
Спасибо
@yerlen65844 жыл бұрын
Ты делаешь нашу жизнь легче, подписка и лайк тебе👍
@СаянАубакиров-ч8о3 жыл бұрын
какой скрипт надо использовать чтобы повернуть персонажа в сторону движения, используя только ось Х?(в других учебных роликах видел как можно использовать функцию Flip, но все равно не получается реализовать задуманное)
@olehkaa19423 жыл бұрын
Зделал всье так же но когда вибирать скорость 10 строки нету что делать?
@GGYaroslav4 жыл бұрын
Блин ты красава единсвенный кто мне помог.Спасибо:)
@ЧевавекЧевавекав2 жыл бұрын
Дай Бог тебе здоровья. Помог очень
@АлексейА-д8д Жыл бұрын
Спасибо оооогромное!!! Не мог сделать обзор уровня в 2Д без персонажа, пробовал сделать через Синематик управление камерой, но не вышло. А тут просто накинул скрипт на пустой объект, накинул на него этот скрипт добавил камеру в дочерние и готово. СПАСИБО)))
@tanyusha70184 жыл бұрын
Спасибо чтоб просто двигать кусок персонажа подходит, я вот начинающий и пытаюсь делать 2d rpg уже зделал персонажа и создал его анимацию вверх низ лево право, пилю управление под Андроид тоесть нужно зделать 4 кнопки привязать к нему движение и анимацию, как это зделать не понимаю, если есть возможность сними такое видео, весь канал перерыл именно то что нужно не нашел, кто суть уловил , яб с радостью посмотрел на код
@Artim4ik4 жыл бұрын
что там
@cyberwell19073 жыл бұрын
Спасибо. Просто и понятно. Но все заработало только когда вписал Raw!
@lastsirafim11355 жыл бұрын
А как сделать чтобы персонаж поворачивался в сторону направления движения?
@antondana27734 жыл бұрын
могу показать, надо?
@interesting48994 жыл бұрын
@@antondana2773 тут напиши, мне надо
@antondana27734 жыл бұрын
@@interesting4899 там просто надо создать переменную: private bool facingRight = true; потом в апдейт или фиксет апдейт пишем: if(facingRight == false && moveInput > 0){ Flip(); } else if(facingRight == true && moveInput < 0){ Flip(); } а потом создаем нов метод: void Flip() { facingRight = !facingRight; Vector3 Scaler = transform.localScale; Scaler.x *= -1; transform.localScale = Scaler; } и готово если что-то не так, я могу записать видео)
@interesting48994 жыл бұрын
@@antondana2773 ok
@Fleshka714 жыл бұрын
@@antondana2773 так нельзя же else if(facingRight == true && moveInput < 0 - потому что тип инт и вектор2
@Gabriel-hg7fl4 жыл бұрын
Раз уж это урок, неплохо было бы объяснять на кой нужно всё что ты делаешь. Цель достигнута, это да. Но от этого код лучше понимать конкретно я явно не стал.
@lphoenixl77714 жыл бұрын
Достаточно знания английского и нормально развитой логики, чтобы это все понять. Код легко читается...
@genjuca64074 жыл бұрын
мне пишет типо код не компилируемый, поэтому игра не запускается
@c.a.d54122 жыл бұрын
Я конечно не уверен но думаю Rigidbody2D rb; должно быть не private а public что-бы перекинуть сам компонент Rigidbody в переменную... Короче, если у вас ошибка: NullReferenceException: Object reference not set to an instance of an object. То попробуйте в коде установить public Rigidbody rb; И в инспекторе перетащить компонент Rigidbody в rb.
@DankeMart2 жыл бұрын
У него в функции Start есть строка, которая берёт Rigidbody с объекта, на котором висит этот скрипт, и записывает его в переменную rb
@ДНЕВНИКРАЗРАБОТЧИКА-ю8м4 жыл бұрын
ВСе круто по по какой-то причине персонаж проходит сквозь стены , то есть сквозь другой колайдер
@egghead73153 жыл бұрын
А́ риджи боди стоит?
@ZvezdaHourNews4 жыл бұрын
А почему у меня ничего не работает постоянно ошибку выдает какую то...?
@netunika11724 жыл бұрын
+
@gast54763 жыл бұрын
+
@globalacademyorigina1 Жыл бұрын
Весьма интересный алгоритм, после небольших доработок очень даже легко интегрируется в свою игрю. А есть ли видео о том, как в кинематике 2д реализовать прыжок?
@иксатор-э9ч2 жыл бұрын
Где скрипт посмотреть?
@toxic_waste53074 жыл бұрын
А какие нужны установленные пакеты для visual studio 2019 чтобы он узнавал и подсвечивал этот синтаксис?
@mtfunit13013 жыл бұрын
Подсказки от unity
@BastetRa2 жыл бұрын
в строке 26 плюс не катит у меня выдаёт ошибку. как исправить?
@Алексей-и5д3в Жыл бұрын
Спасибо за труд. Такой вопрос: как сделать, чтобы персонаж пятился назад
@dekud95955 жыл бұрын
Помогите, как сделать управление в виде джойстика, много способов пробовал, выдает ошибки
@RivaKing5 жыл бұрын
Мне бы тоже хотелось узнать
@Romquaa5 жыл бұрын
@@RivaKing в Asset Store скачиваешь joustick, бесплатный добавляешь его на сцену - создать, UI - JoyStick, ставишь в любую удобную позицию, и создаешь простой скрипт для него
@Romquaa5 жыл бұрын
using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using UnityEngine.EventSystems; using System.Collections; #if UNITY_EDITOR using UnityEditor; #endif namespace UnityEngine.UI { [AddComponentMenu("UI/Joystick", 36), RequireComponent(typeof(RectTransform))] public class Joystick : UIBehaviour, IBeginDragHandler, IEndDragHandler, IDragHandler { [SerializeField, Tooltip("The child graphic that will be moved around")] RectTransform _joystickGraphic; public RectTransform JoystickGraphic { get { return _joystickGraphic; } set { _joystickGraphic = value; UpdateJoystickGraphic(); } } [SerializeField] Vector2 _axis; [SerializeField, Tooltip("How fast the joystick will go back to the center")] float _spring = 25; public float Spring { get { return _spring; } set { _spring = value; } } [SerializeField, Tooltip("How close to the center that the axis will be output as 0")] float _deadZone = .1f; public float DeadZone { get { return _deadZone; } set { _deadZone = value; } } [Tooltip("Customize the output that is sent in OnValueChange")] public AnimationCurve outputCurve = new AnimationCurve(new Keyframe(0, 0, 1, 1), new Keyframe(1, 1, 1, 1)); public JoystickMoveEvent OnValueChange; public Vector2 JoystickAxis { get { Vector2 outputPoint = _axis.magnitude > _deadZone ? _axis : Vector2.zero; float magnitude = outputPoint.magnitude; outputPoint *= outputCurve.Evaluate(magnitude); return outputPoint; } set { SetAxis(value); } } RectTransform _rectTransform; public RectTransform rectTransform { get { if(!_rectTransform) _rectTransform = transform as RectTransform; return _rectTransform; } } bool _isDragging; [HideInInspector] bool dontCallEvent; public void OnBeginDrag(PointerEventData eventData) { if(!IsActive()) return; EventSystem.current.SetSelectedGameObject(gameObject, eventData); Vector2 newAxis = transform.InverseTransformPoint(eventData.position); newAxis.x /= rectTransform.sizeDelta.x * .5f; newAxis.y /= rectTransform.sizeDelta.y * .5f; SetAxis(newAxis); _isDragging = true; dontCallEvent = true; } public void OnEndDrag(PointerEventData eventData) { _isDragging = false; } public void OnDrag(PointerEventData eventData) { RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, eventData.position, eventData.pressEventCamera, out _axis); _axis.x /= rectTransform.sizeDelta.x * .5f; _axis.y /= rectTransform.sizeDelta.y * .5f; SetAxis(_axis); dontCallEvent = true; } void OnDeselect() { _isDragging = false; } void Update() { if(_isDragging) if(!dontCallEvent) if(OnValueChange != null) OnValueChange.Invoke(JoystickAxis); } void LateUpdate() { if(!_isDragging) if(_axis != Vector2.zero) { Vector2 newAxis = _axis - (_axis * Time.unscaledDeltaTime * _spring); if(newAxis.sqrMagnitude _deadZone ? _axis : Vector2.zero; float magnitude = outputPoint.magnitude; outputPoint *= outputCurve.Evaluate(magnitude); if(!dontCallEvent) if(OnValueChange != null) OnValueChange.Invoke(outputPoint); UpdateJoystickGraphic(); } void UpdateJoystickGraphic() { if(_joystickGraphic) _joystickGraphic.localPosition = _axis * Mathf.Max(rectTransform.sizeDelta.x, rectTransform.sizeDelta.y) * .5f; } [System.Serializable] public class JoystickMoveEvent : UnityEvent { } } } #if UNITY_EDITOR static class JoystickGameObjectCreator { [MenuItem("GameObject/UI/Joystick", false, 2000)] static void Create() { GameObject go = new GameObject("Joystick", typeof(Joystick)); Canvas canvas = Selection.activeGameObject ? Selection.activeGameObject.GetComponent() : null; Selection.activeGameObject = go; if(!canvas) canvas = Object.FindObjectOfType(); if(!canvas) { canvas = new GameObject("Canvas", typeof(Canvas), typeof(RectTransform), typeof(GraphicRaycaster)).GetComponent(); canvas.renderMode = RenderMode.ScreenSpaceOverlay; } if(canvas) go.transform.SetParent(canvas.transform, false); GameObject background = new GameObject("Background", typeof(Image)); GameObject graphic = new GameObject("Graphic", typeof(Image)); background.transform.SetParent(go.transform, false); graphic.transform.SetParent(go.transform, false); background.GetComponent().color = new Color(1, 1, 1, .86f); RectTransform backgroundTransform = graphic.transform as RectTransform; RectTransform graphicTransform = graphic.transform as RectTransform; graphicTransform.sizeDelta = backgroundTransform.sizeDelta * .5f; Joystick joystick = go.GetComponent(); joystick.JoystickGraphic = graphicTransform; } } #endif
@Romquaa5 жыл бұрын
@@ДенисШуть-к8х Не проверял) но прыжок можно вынести отдельной кнопкой) добавь строчку еще в свой скрипт управления игроком - public void Move (Vector2 dir) { transform.Translate (dir * Time.deltaTime * speed); после чего добавь на сам джойстик в On Value Change (Vector2) своего персонажа, и выбери вместо no function наш скрипт управления персонажем, и выбери функцию Move, которую ты и вписывал в скрипт управления персонажем) должно все работать
@shuone3745 жыл бұрын
@@Romquaa Простой скрипт
@minoddein72054 жыл бұрын
А как сделать,чтобы персонаж не проходил сквозь коллайдер карты из-за кинематики?
@dr.respe6t4 жыл бұрын
Попробуй дать ему мх
@minoddein72054 жыл бұрын
@@dr.respe6t , мх?
@dr.respe6t4 жыл бұрын
Даже не знаю но кинематик не должен проходить если там бокс коллайдер ,посмотри у тя бокс стоит на обеих объектах,на персе и на карте
@minoddein72054 жыл бұрын
@@dr.respe6t ,у меня на карте бокс,а на персонаже полигон
@minoddein72054 жыл бұрын
@@dr.respe6t ,это может стать причиной?
@contex10503 жыл бұрын
Очень полезное видео! Благодарен за информацию, но как сделать движение только по одной оси (за исключением прыжков И что бы персонаж не проваливался сквозь твердое дело?)
@kekman43642 жыл бұрын
Не появляется параметр "speed", что делать?
@prostovladik6876 Жыл бұрын
тоже самое сейчас,нашел решение ?
@kekman4364 Жыл бұрын
@@prostovladik6876 нет, к тому же потерял навык переписывания скриптов для юнити
@rernik91098 ай бұрын
Тоже самое, решили что-то?
@design_art_style3 жыл бұрын
Всё получилось спасибо а для андроида управление запилите пожалуйста
@c.a.d54122 жыл бұрын
using System.Collections; using System.Collections.Generic; using UnityEngine; public class move : MonoBehaviour { public float speed; public Rigidbody2D rb; public Joystick joystick; private Vector2 moveVelocity; void Start() { GetComponent(); } void Update() { Vector2 moveInput = new Vector2(joystick.Horizontal, joystick.Vertical); moveVelocity = moveInput.normalized * speed; } void FixedUpdate() { rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime); } } И кстати, что-бы это работало надо из assets store скачать пак joystick. И перекинуть прифаб с джойстиком в скрипт, в инспекторе объекта на котором будет этот скрипт. В поле со скриптом будет строчка joystick и туда надо перекинуть прифаб. Наверное не актуально но если что-то не понятно то пиши.
@c.a.d54122 жыл бұрын
грубо говоря я заменил input ("Horizontal/Vertical") на joystick.Vertical/Horizontal
@forestgump20814 жыл бұрын
Почему перс не ходит? Написал точь в точь, но перс бездействует
@rivanigaming81814 жыл бұрын
Потому что для начала код нужно понимать, а для этого выучи с#
@angelxgodd4 жыл бұрын
@@rivanigaming8181 А нахуй ты сюда заходишь раз ты такой умный
@rivanigaming81814 жыл бұрын
@@angelxgodd c# под консоль учил, поэтому и зашёл
@fortochka52274 жыл бұрын
У меня не работало потому, что не стояла галочка у персонажа в применении скрипта, там где можно было менять скорость
@AniStoRGom3 жыл бұрын
хммммм я написал скрипт а он не роботает не чё((( что делать?
@angry9565 жыл бұрын
А как настроить движение персонажа на другие клавиши? Заранее спасибо
@graphicaldesign27765 жыл бұрын
Через Input.GetKeyDown
@kerliaa4 жыл бұрын
Или поменять в настройках кнопки, которые установлены по дефолту
@deadwerwolf51674 жыл бұрын
Можно попробовать этот код: (он для переделки в ускорение и дрифт) using System.Collections; using System.Collections.Generic; using UnityEngine; public class Movie : MonoBehaviour { public float speedObsh; public float speedObshGrd; float speedTank; float speedGrd; public float Trnszdn = 0.4f; //стопорение задней трансмиссии public float Trnsprdn = 0.4f;// ускорение поворота передней трансмиссии Rigidbody2D rd; //физ тело void Start() { rd = GetComponent(); } //Движение (переделать на ускорение) void FixedUpdate() { if (Input.GetKey(KeyCode.W)) { speedTank = speedObsh; // скорость при зажатии W } else if (Input.GetKey(KeyCode.S)) { speedTank = -speedObsh * Trnszdn;//скорость при зажатой клавише S } if (Input.GetKey(KeyCode.S) && (Input.GetKey(KeyCode.D) || (Input.GetKey(KeyCode.A))))//градусный поворот при зажатой клавише S { if (Input.GetKey(KeyCode.A)) { speedGrd = -speedObshGrd * Trnszdn * 2; } else if (Input.GetKey(KeyCode.D)) { speedGrd = speedObshGrd * Trnszdn * 2; } } else if (Input.GetKey(KeyCode.W) && (Input.GetKey(KeyCode.D) || (Input.GetKey(KeyCode.A))))//градусный поворот при зажатой клавише W { if (Input.GetKey(KeyCode.D)) { speedGrd = -speedObshGrd * Trnsprdn; } else if (Input.GetKey(KeyCode.A)) { speedGrd = speedObshGrd * Trnsprdn; } } else //Градусный поворот на месте (А||D) { if (Input.GetKey(KeyCode.D)) { speedGrd = -speedObshGrd; } else if (Input.GetKey(KeyCode.A)) { speedGrd = speedObshGrd; } } transform.Translate(new Vector3(0, speedTank, 0) * Time.deltaTime);//скорость перемещения(от времени) transform.Rotate(new Vector3(0 , 0 , speedGrd) * Time.deltaTime);//Скорость вращения (от времени) speedTank = 0; speedGrd = 0; } }
@никитакаргин-ю2о4 жыл бұрын
привет! я занимаюсь созданием 2D Top Dawn для android, а можешь заснять видео как сделать управление джостиком для top Dawn пожалуйста ну мы можем связатся через инс если что !!)) зарание спасибо
@teiffik4 жыл бұрын
А как сделать такое, только чтобы управлять джойстиком с андроида?
@hybik4 жыл бұрын
сначала создаёшь переменную джойстик. public Joystick joystick; После удали это: Vector2 moveInput = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")); и впиши это вместо: Vector2 moveInput = new Vector2(joystick.Horizontal, joystick.Vertical);
@romaosh_play4 жыл бұрын
@@hybik это сложно. Легче скачать кроссплатформенный SimpleInput к примеру и изменить Input.GetAxis на SimpleInput.GetAxis.
@reddandelion65104 жыл бұрын
@@hybik Спасибо, очень сильно помог)
@mr-ganimurat4 жыл бұрын
@@hybik привет пж скажи как управлять с кликом он мне очень нужно
@asksoma34504 жыл бұрын
Простите, есть одна проблема. Я сделал также как было сказано, но персонаж не двигается. Вы немогли бы сказать где ошибка. using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { public float speed; private Rigidbody2D rb; private Vector2 moveVelocity; void Start() { rb = GetComponent(); } void Update() { Vector2 moveInput = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")); moveVelocity = moveInput.normalized * speed; } void FixedUpdate() { rb.MovePosition(rb.position * moveVelocity * Time.fixedDeltaTime); } }
Можно перенести их на отдельный слой и в параметрах указать его игнорирование.
@unq14004 жыл бұрын
@@graphicaldesign2776 Я решил эту проблему ,но все ровно спасибо
@shadowzain5 жыл бұрын
Делаю всё точно так же. Скрипт висит на персонаже, ошибок компиляции нет, но персонаж не двигается ни при каких нажатиях кнопок...
@graphicaldesign27765 жыл бұрын
может ошибка в именах, или скорость нулевая
@shadowzain5 жыл бұрын
@@graphicaldesign2776 скорость менял от 10 до 1000, 0 реакции. Может быть проблемы в настройках Input? Хотя там вроде всё норм. Я даже VS обновил с 2017 до 2019 (+использование в Unity подключил), думал она с кодом как-то неправильно работала. Вот просто игнор любых нажатий со стороны персонажа, WASD и стрелок. Завтра ещё попробую.
ZAIN нет переменной FixUpdate) есть переменная FixedUpdate))
@vlpalamar86392 жыл бұрын
а это норма в каждом кадре new вызывать? типа оно же место выделяет
@ДавидКуприянов-т4щ3 жыл бұрын
У меня пиксельный перс не движется как так то
@alekseykustov95742 жыл бұрын
Здраствуйте! Огромное спасибо за уроки как раз постигаю все это при помощи их. Может подскажите каким редактором пользуетесь что б была такая же подсветка кода?
@Antogonistick3 жыл бұрын
Не подскажите,почему при движении персонажа может образовываться шлейф за ним?
@michael57924 жыл бұрын
Спасибо большое. Не понимаю почему это видео такое малопопулярное.
@plague_karich3 жыл бұрын
пожалуйста, сделай видео про джойстик для этого перса, да у тебя уже есть видео про джойстик, но там не то
@mrfire735_1 Жыл бұрын
Спасибо большое!
@slowrunner1314 жыл бұрын
Ребят, а можно файл скрипта для ленивых???
@mikhailsivtsov4 жыл бұрын
Нельзя, нужно учиться все писать самому, так научишься быстрей
@reddandelion65104 жыл бұрын
Здраствуйте, у меня есть вопрос: как заставить перса смотреть туда, куда он идет? Нужно для создания TopDown 2D Shooter для мобилок. Буду благодарен если ответете!
@graphicaldesign27764 жыл бұрын
Можно в зависимости от нажатой кнопки, зеркалить или поворачивать через rotate саму картинку.
@JavaSqr3 жыл бұрын
Там есть функция Flip
@thevit16725 жыл бұрын
Когда я пишу например Rigidbody2D У меня в подсказках ничего невыходит
@graphicaldesign27765 жыл бұрын
мне бы чуть больше информации. В каких подсказках и что должно выходить?
@thevit16725 жыл бұрын
Ну когда вы начинали писать например rb GetComponent у вас высвечивалась та табличка снизу. И в том случае у меня с риджидбади2д ничего не высыечивалось . И вот эти слова Rigidbody2D у вас горели зеленым а у меня белым
@graphicaldesign27765 жыл бұрын
Так, ну либо в основе скрипта есть ошибка, либо проблема в самой студии. У меня так показывается по стандарту, я ничего не менял
@thevit16725 жыл бұрын
@@graphicaldesign2776 А у вас версия студии 2019?
@graphicaldesign27765 жыл бұрын
2017
@Shergon_41k2 жыл бұрын
Если скрипт не будет работать и стоит ошибка что то про normlizied, то просто удалите это (я про normalizied). Мне помогло
@FloatStudioGames2 жыл бұрын
Как сделвть так чтобы игрок не проходил сквозь объекты
@Griel884 жыл бұрын
Кто может подсказать, уже все ролики просмотрел и гугл сломал. Делаю всё точь в точь как у всех на видео в том числе и на этом, но в VS просто не появляются переменные RegidBody, SerializeField и прочие. В чём может быть причина?
@graphicaldesign27764 жыл бұрын
Скрипт не подвязан к Unity. Необходимо загрузить проект. Работать все будет нормально, разве что не будет подсказок на библиотеки.
@Апчхий-и6э4 жыл бұрын
Та же беда, VS с Unity связан, выяснил что не так?
@Апчхий-и6э4 жыл бұрын
Короче это связано с NET.Framework, наверно VSCode не поддерживает самую новую его версию. Мой запрашивал версию NET Framework 4.7.1 Developer Pack: дам ссылку на всякий dotnet.microsoft.com/download/dotnet-framework/net471
@graphicaldesign27764 жыл бұрын
В самой студии надо сделать Include project
@blindsidar65464 жыл бұрын
я все написал точь в точь, и чертов перс не двигается, такая проблема и в 3d. И слово RigidBody 3d у меня не выделяется, в чем проблема - не знаю. Что я делаю не так то. Я новичок и пользуюсь Virtual Studio 2019, норм не
@tigershark733 жыл бұрын
Кхэм... А ничего что складываете разные типы данных? Такой код не скомпилируется...
@4yp4i2 жыл бұрын
сделал все также как у тебя, но юнити выдаёт ошибку
@plague_karich3 жыл бұрын
Сделай пж как пр крутить к такому персонажу джойстик
@mr.cheeze31063 жыл бұрын
Помогите пожалуйста, когда я закидываю скрипт на игрока пишет: Can't be add script component 'PlayerControler' because the script class cannot be found. Что делать?
@ginso03 жыл бұрын
У меня было то же самое. Тогда я скопировал написанный скрипт, удалил его, и создал новый скрипт уже через инспектор игрока, и вставил в этот новый скрипт написанный код.
@clickclack33752 жыл бұрын
Скорее всего ты поменял название класса внутри скрипта и юнька не может найти такой скрипт
@x0m4ek4 жыл бұрын
Бро, лучший помог
@Geva2654 жыл бұрын
а как сделать, чтобы он не переворачивался при столкновении с объектами? А так, урок классный, все получилось, спасибо)))
@ZmastaZz4 жыл бұрын
Ребята подскажите пожалуйста как сделать чтобы Kinematic не мог проходить сквозь другие объекты(полигон колайдеры сцены)?
@vladuxa_yout94045 жыл бұрын
Помогите как сделать стены(тип чтоб этот персонаж не мог пройти через них)
@graphicaldesign27765 жыл бұрын
достаточно добавить элементу Box Collider, и персонаж прекратит проходить через этот элемент
@vladuxa_yout94045 жыл бұрын
@@graphicaldesign2776 я пробовал но персонаж по обычному проходит сквозь стену
@vladuxa_yout94045 жыл бұрын
Бокс коллайдер на персонаже и стене
@graphicaldesign27765 жыл бұрын
хм проверьте галочку is trigger, ее не должно быть
@vladuxa_yout94045 жыл бұрын
@@graphicaldesign2776 а что она дает?
@ТапокСергеич3 жыл бұрын
Assets\Scripts\PlayerController.cs(20,33): error CS7036: There is no argument given that corresponds to the required formal parameter 'y' of 'Vector2.Vector2(float, float)' ПОМОГИ ПЛИИЗ
@clickclack33752 жыл бұрын
Скорее всего ты уже ее решил, но напишу все равно. Вообщем для вектора2, там где нужно записать значение для параметра y, значение отсутствует, ты скорее всего забыл прописать туда значение
@AlexNompe4 жыл бұрын
@Graphical Design у меня не работает эта строчка rb2D.MovePosition (rb2D.position + moveVelosity * Time.fixedDeltaTime); пишет NullReferenceException: Object reference not set to an instance of an object PlayerController.FixedUpdate ()
@graphicaldesign27764 жыл бұрын
Кто называет папки на русском?...
@AlexNompe4 жыл бұрын
если что 2b2D я специально поменял ошибка не в этом
@graphicaldesign27764 жыл бұрын
@@AlexNompe при чем тут это. Что за директория "Скрипты"?
@AlexNompe4 жыл бұрын
@@graphicaldesign2776 это неважно по ошибке скопировал сюда просто скажи в чём ошибка
@AlexNompe4 жыл бұрын
версия unity 5
@golub_zxc52242 жыл бұрын
РЕБЯТ ОЧЕНЬ МАЛО ВРЕМЕНИ ПЖ ДАЙТЕ ЭТОТ СКРИПТ=( А ТО ВРЕМЕНИ НЕТ
@_.nexus._4 жыл бұрын
Не увидел плавности под конец)
@-_--_-73334 жыл бұрын
Ребят помогите делаю все как в видео но ошибка в Unity: all compiler errors have to be fixed before you can enter play mode.. Мой скрипт: using UnityEngine; using System.Collections; using System.Collections.Generic; public class Move : MonoBehaviour { public float speed; public Rigidbody2D rb; private Vector2 moveVelocity; void Start() { rb = GetComponent(); } void Update() { Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); moveVelocity = moveInput.normalized * speed; } void FixedUpdate() { rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime); } }
@graphicaldesign27764 жыл бұрын
Значит проблема не в этом скрипте.
@fckrg4154 жыл бұрын
@@graphicaldesign2776 да это скрипт правильно написан
@АртемийСарапулов-ю3ф5 жыл бұрын
Не работает! Делал все символ в символ, и не чего не хочет запускаться!
@graphicaldesign27765 жыл бұрын
Грустно
@MusMoment4 жыл бұрын
Может ты не создал компонент скрипта на персонаже? Нужно по моему просто скрипт перетащить в объект перса на сцене и в нем появится компонент script
@graphicaldesign27764 жыл бұрын
@Assassin какая?)
@zambrsanimations4 жыл бұрын
@Assassin поставь персонажу "Order in Layer" на 1 больше чем у фона
@vladimirleontiev88674 жыл бұрын
А как он узнает какую кнопку мне нужно нажать что бы выполнить передвижение ? Если я к примеру захочу на сенсор перенести управление.
@vladimirleontiev88674 жыл бұрын
@ я уже переписал по другому совсем , намного круче скрипт
@asilbekyoldoshbekov55334 жыл бұрын
что делать? помоги плиз. NullReferenceException: Object reference not set to an instance of an object Player.FixedUpdate () (at Assets/Player.cs:22)
@graphicaldesign27764 жыл бұрын
Как помочь то?
@asilbekyoldoshbekov55334 жыл бұрын
@@graphicaldesign2776 NullReferenceException: Object reference not set to an instance of an object Player.FixedUpdate () (at Assets/Player.cs:22) такая ошыбка. Загуглил, ответа нету. Думаю что ты знаеш это!
@graphicaldesign27764 жыл бұрын
@@asilbekyoldoshbekov5533 ошибка дает краааайне мало информации.
@asilbekyoldoshbekov55334 жыл бұрын
@@graphicaldesign2776 нашел ответ!! спасибо
@Pene4k4 жыл бұрын
@@asilbekyoldoshbekov5533 чел пж ответь как , у меня такая же ошибка
@macintoshtermo5994 жыл бұрын
Я хотел создать игру похожую на игру "gesundheit".Тоже с видом сверху, но не знал, как сделать, чтоб он не падал вниз. (я только начинающий) спасибо за урок😅
@Semga4 жыл бұрын
Боже! Просто гравитацию отключить! Кстати игру я не нашёл. Может ты неправильно написал название?
@deninanayev81653 жыл бұрын
можеш показать как добавить персонажа в unity2d
@ЯнЛазарев-м8у3 жыл бұрын
Здравствуйте, у меня не получается передвигать персонажа как у вас. Версия Unity 5.5.6f1 (64-bit). Вроде код был переписан точно но, всё равно не получается. Вот код: using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { public float speed; private Rigidbody2D rb; private Vector2 moveVelocity; // Use this for initialization void Start () { rb = GetComponent(); } // Update is called once per frame void Update () { Vector2 moveInput = new Vector2 (Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); moveVelocity = moveInput.normalized * speed; } void FixedUpdate () { rb.MovePosition (rb.position + moveVelocity * Time.fixedDeltaTime); } } Буду благодарен если ответят (необязательно автор).
@DankeMart2 жыл бұрын
Скорее всего в Unity ты назвал скрипт PlayerController, но не переименовал класс в самом скрипте, то есть строка "public class NewBehaviourScript : MonoBehaviour" должна выглядеть так: public class PlayerController : MonoBehaviour
@WNDLESS5 жыл бұрын
Чел, хэлп. Мой персонаж не двигается а просто падает а так спасибо, четко все объяснил
@graphicaldesign27765 жыл бұрын
Возможно в Box Collider надо сменить dinamic на kinematic
@WNDLESS5 жыл бұрын
@@graphicaldesign2776 ок. Ща
@vladuxa_yout94045 жыл бұрын
@@WNDLESS ну как работает*
@AlexeySinyushkin4 жыл бұрын
Что делать, если он стоит на месте? То есть вообще не двигается при нажатии на клавиши. Я добавил 2й объект без скриптов, всё остаётся статичным
@graphicaldesign27764 жыл бұрын
видимо, что-то не доделал
@AlexeySinyushkin4 жыл бұрын
@@graphicaldesign2776 а кнопки движения вправо влево вверх и вниз назначаются автоматически?
@graphicaldesign27764 жыл бұрын
@@AlexeySinyushkin нет, все надо прописать в скрипте, как на видео
@realy6865 жыл бұрын
Здравствуйте были вы связаны с игрой red ball 4 не магу понять как прописать врага квадрат при движение вправа что бы он крутился по часовой стрелки а при движение влево крутился против часовой стрелки у меня он крутится в одну сторону не зависимо в кокую сторону он двигается влево или вправо
@graphicaldesign27765 жыл бұрын
Надо переворачивать персонажа, через скрипт, либо задав условие для поворота, либо физически поворачивать через Rotate
@микроволновка-м3ж4 жыл бұрын
Крутой урок ,нооо, что делать если когда перетягиваешь скрипт на плеера вылезает(Can't add script)
@graphicaldesign27764 жыл бұрын
Надо исправить все ошибки.
@микроволновка-м3ж4 жыл бұрын
Спасибо
@микроволновка-м3ж4 жыл бұрын
Исправил
@rycun51473 жыл бұрын
Подскажите как сделать анимацию для такой игры
@Imudonnn2 жыл бұрын
Что делать если персонаж двигается, но постепенно падает?
@aksolove02 жыл бұрын
Может под ним нет материала?
@void-zl4pp5 жыл бұрын
Можете весь скрипт скинуть?
@graphicaldesign27765 жыл бұрын
Неа
@ghjcnjxtkjdtr8874 жыл бұрын
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { public float speed; private Rigidbody2D rb; private Vector2 moveVelocity; void Start() { rb = GetComponent(); } void Update() { Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); moveVelocity = moveInput.normalized * speed; } void FixedUpdate() { rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime); } }
@zippich74954 жыл бұрын
скажите пожалуйста как сделать такое же но с джойстиком
@fincoric10933 жыл бұрын
Эй бро а можно так же зделать только в 3д? Спасибо за ответ!
@cheburek80814 жыл бұрын
А что делать если скрипт не видит компонент? То есть когда пишу строку private Rigidbody2D rb; компонент не высвечивается другим цветом. Кто-нибудь знает что с этим делать?
@MorPoYT_IloveYou4 жыл бұрын
он не видит его потому что его нужно добавлять на персонажа, и уже после кидать код на персонажа
@ЮНЕСКЙО4 жыл бұрын
А если например мы хотим вставить анимацию передвижения своего персонажа?
@graphicaldesign27764 жыл бұрын
Вставляйте смело)
@aristokrat84043 жыл бұрын
привет,можете подсказать, я добавил компонент ригидбади2д для перса,но в скрипте его не находит, просто обычный серый текст ,когда я ввожу
@fazuler3 жыл бұрын
Надо настроить Unity под Visual Studio или через что вы пишите код
@pixl74453 жыл бұрын
Ничиво не получилось игрок не двигаться помоги
@thevit16725 жыл бұрын
Кстати вы удаляли то что было после public class PLC : MonoBehaviour ? Или нужно было это все писать после void Update
@thevit16725 жыл бұрын
Только заместо PLC moveing
@Motiv404lls4 жыл бұрын
как сделать чтобы самолётик наклонялся в 2д
@haymiritch59395 жыл бұрын
Пожалуйста помоги когда я запускаю игру у меня ошибка NullReferenceException: Object reverse not set to an instance of an object Что делать?
@graphicaldesign27765 жыл бұрын
Он не может найти какой-то элемент, нужно перепроверить скрипт на наличие ошибок
@haymiritch59395 жыл бұрын
@Graphical Design я проверял все на наличие ошибок никаких ошибок не нашел. Может легче скинуть готовый скрипт?
@graphicaldesign27765 жыл бұрын
Скидывай
@haymiritch59395 жыл бұрын
@Graphical Design держи using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { public float speed; private Rigidbody2D rb; private Vector2 moveVelocity; void start() { rb = GetComponent(); } void Update() { Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); moveVelocity = moveInput.normalized * speed; } void FixedUpdate() { rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime); } }
@graphicaldesign27765 жыл бұрын
почему в void start, сам Start с маленькой буквы?
@bbsinkerri89764 жыл бұрын
У меня не работает, ошибка компилятора, хнык, но всё равно подпишусь
@Low-YT4 жыл бұрын
Тоже
@GGradik4 жыл бұрын
А на телефонах будет работать......
@НатальяБаталова-у6г5 жыл бұрын
плиз дайте код
@LennyGMD3 жыл бұрын
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Название Скрипта : MonoBehaviour { public float speed; private Rigidbody2D rb; private Vector2 moveVelocity; void Start() { rb = GetComponent(); } void Update() { Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); moveVelocity = moveInput.normalized * speed; } void FixedUpdate() { rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime); } }
@danyan_musicyt74315 жыл бұрын
Помоги пожалуйста, когда я отпускаю стрелку движения, персонаж ещё некоторое время продолжает двигаться. Я так понимаю, что это физика движения... Как это отключить? Нужно, чтобы персонаж сразу останавливался. Заранее спасибо)
@graphicaldesign27765 жыл бұрын
можно попробовать в RigidBody повысить Mass
@potolok7775 жыл бұрын
хммм... То есть если я не умножу на Time.fixedDeltaTime, то действие не будет повторятся? Time.fixedDeltaTime это время между вызовами функции FixedUpdate. Немного неправильное у вас объяснение. Компьютер и так поймет))
@никитакаргин-ю2о4 жыл бұрын
а можешь тоже самое но только для андроид под телефоны
@etek45514 жыл бұрын
Приветствую можешь подсказать у меня вылазиет Error CS0029: Cannont implicitly convert type 'UnityEngine.Rigidbody2D[]' to 'UnityEngine.Rigidbody2D' Я сделал в точности как у тебя на видео. Я новичёк и не понимаю вчём проблема помоги пожалуйста. Заранее спасибо.
@c.a.d54122 жыл бұрын
ЕСЛИ ЭТО ЕЩЁ АКТУАЛЬНО ТО кинь свой код сюда я посмотрю и отвечу. Даже если он такой же мне будет легче уже точно проверить что нет никаких мелких ошибок.
@Laungy3 жыл бұрын
Можешь сделать "переход анимаций" в играх 2дтопдовн
@flytkins3 жыл бұрын
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { public float speed; private Rigidbody2D rb; private Vector2 moveVelocity; void Start() { rb = GetComponent(); } void Update() { Vector2 MoveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); moveVelocity = MoveInput.normalized * speed; } void FixedUpdate() { rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime); } }