Движущаяся платформа и взаимодействие с ней / Moveing platform - Unity легко

Движущаяся платформа и взаимодействие с ней / Moveing platform - Unity легко

Graphical Design

4 года назад

17,578 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

@inkrement782
@inkrement782 - 20.04.2020 06:48

Гораздо круче и универсальнее сделать массив объектов или трансформов, в которые кидать пустышки с нужными координатами и использовать moveTorwads в замкнутом цикле к каждому элементу из массива.
Таким образом можно сделать универсальный скрипт для всех платформ и только лишь указывать им эти вэйпоинты. Причем их может быть сколько угодно и они могут располагаться вообще в разных координатах по осям и их удобно выставлять прямо в юнити наглядно.

А чтобы персонаж двигался с платформой, за это спасибо, долго не мог сообразить как это реализовать. Думал про указанный тобой способ, но почему-то не делал.

А вот кстати вопрос. Если мой способ управления реализован не через трансформ, а через ригидбади2д, то персонаж не может ходить по платформе. Как тогда сделать?

Ответить
@sembarinbom620
@sembarinbom620 - 23.04.2020 20:59

Вопрос.
Я меняю значение в право + 16f
А в лево + 5f.
То почему-то он не двигается по этим каардинатам, а уходить хер знает куда в -
Я долго следил и он просто ухадил в лево в - значение.
НЕ ПОДСКАЖИТЕ ВЧЁМ МОЖЕТ БЫТЬ ПРОБЛЕМА?

Ответить
@sembarinbom620
@sembarinbom620 - 23.04.2020 20:59

И спасибо за уроки тебе.
Очень сильно помогаю.

Ответить
@HarryArkHi
@HarryArkHi - 11.05.2020 12:09

Попробовал метод. Но не хочет персонаж реагировать на условия. Плеер контроллер у меня правда другой немного. и платформа двигается между двумя пустыми гейм обжектами. Ошибок никаких код не выдает.

Ответить
@Shorts-hn5wo
@Shorts-hn5wo - 04.06.2020 13:58

платформа только в право едет что не так?

void Update()
{
if (transform.position.x >10f)
{
moveingRight = false;
}
else if (transform.position.x <-5f)
{
moveingRight = true;
}
if (moveingRight)
{
transform.position = new Vector2(transform.position.x + speed * Time.deltaTime, transform.position.y);
}
else if (moveingRight)
{
transform.position = new Vector2(transform.position.x - speed * Time.deltaTime, transform.position.y);
}

Ответить
@orbitevcalipt
@orbitevcalipt - 15.06.2020 15:15

А нафига вы используете лишние переменные, если можно было и без них обойтись? Просто лишний блок кода с копипасты?

Ответить
@Denis_Schneider
@Denis_Schneider - 15.06.2020 21:06

Ну что-то такое себе. Не универсально каждому физичному объекту писать

Ответить
@Shorts-hn5wo
@Shorts-hn5wo - 27.06.2020 17:06

КАК ПРОПИСАТЬ ЧЕРЕЗ ТЕГ?

Ответить
@kirillushakov2121
@kirillushakov2121 - 19.07.2020 20:38

Лучшие уроки по юнити!

Ответить
@AlexeyBorisov_Alebor_
@AlexeyBorisov_Alebor_ - 22.10.2020 10:33

зачем такие сложности делать, если там есть специальный компонент для движения платформ , и кучу путей можно задавать и тд

Ответить
@Summer-lv3ed
@Summer-lv3ed - 26.10.2020 17:52

А есть видео, где платформа перемещается верх вниз?

Ответить
@tanisdrago3106
@tanisdrago3106 - 29.10.2020 20:06

так ты сделал её, чтобы она в начале двигалась. У меня она летит в начало и там двигается

Ответить
@Summer-lv3ed
@Summer-lv3ed - 02.11.2020 22:02

Переношу скрипт на платформу выходит ошибка "Невозможно добавить компонент сценария, потому что класс сценария не может быть найден, убедитесь, что нет ошибок компиляции и что имя файла и имя класса совпадают" Что делать

Ответить
@Pushka_86
@Pushka_86 - 08.12.2020 06:18

Как легко и просто ты все показываешь)) кстати а для 3д платформы что надо писать?

Ответить
@Apofize
@Apofize - 08.12.2020 17:28

на самой платформе игрок замедляется. Как это исправить?

Ответить
@firuzsheralievich1176
@firuzsheralievich1176 - 10.12.2020 10:43

как насчет нескольких платформ в одной сцене?

Ответить
@ДаниилСВП-ц3ю
@ДаниилСВП-ц3ю - 05.01.2021 19:19

МОЖНО ГОТОВЫЙ КОД

Ответить
@dilshatabdrashid1527
@dilshatabdrashid1527 - 14.01.2021 12:43

А если 3d обект?

Ответить
@svenskafiskaren3974
@svenskafiskaren3974 - 14.03.2021 11:39

Спасибо!) Самый простой и быстрый способ. Невероятно помог!

Ответить
@nikart2502
@nikart2502 - 25.03.2021 11:30

Очень полезное видео, особенно для новичков)

Ответить
@nikart2502
@nikart2502 - 25.03.2021 11:30

Moving right без e пишется

Ответить
@mrminecrafter3829
@mrminecrafter3829 - 01.06.2021 12:28

Спасибо большое автору !!!

Ответить
@lemon2617
@lemon2617 - 13.08.2021 01:34

Ты сохранил мне 10 лет моей жизни, за это я на тебя и подписался

Ответить
@ИлонМаск-р9у
@ИлонМаск-р9у - 14.08.2021 08:55

ПОдскажите пожалуйста! У меня платформа только вправо движется и потом останавливается, где может быть ошибка???

Ответить
@khusamov
@khusamov - 17.08.2021 03:25

Спасибо за ролик!
А почему физический движок не обрабатывает сам эту ситуацию? Там же трение есть. Пусть он тянет за собой объекты сверху. Не?

Ответить
@bettingworld939
@bettingworld939 - 08.09.2021 02:18

Привет. Чел, я перерыл весь интернет, но не нашел решения. Все эти transform работают только с объектами, на которых нет физики RB. Если повесить RB на платформы и реализовать движение непосредственно через RB, а не через transform, то все это не станет работать. Персонаж все-равно сползёт. Объясни, как сделать то же самое при заданном движении с RB в самом коде?

Ответить
@maslenka2219
@maslenka2219 - 21.09.2021 19:28

спиздил код

Ответить
@dmytromahas9207
@dmytromahas9207 - 26.09.2021 08:39

Ну и нах*я нам переменную dirX ? если мы ее не используем....

Ответить
@maxsmith6925
@maxsmith6925 - 11.12.2021 10:25

столкнулся со странным багом. Платформа по какой-то причине после запуска игры направляется к зоне камеры. Не могу понять с чем это связанно

Ответить
@FTWOBE
@FTWOBE - 21.12.2021 00:45

Не работает, помогите пожалуйста

Ответить
@Alex-db1id
@Alex-db1id - 29.12.2021 02:53

Хтось знає як таке реалізувати для 3д, я коли роблю так для 3д в мене змінюється форма гравця вона витягується в ту кординату в яку рухається платформа. Допоможіть

Ответить
@karbitvova
@karbitvova - 17.03.2022 11:06

Спасибо большое, это было так просто... как я только не извращался))

Ответить
@terrarisCheese
@terrarisCheese - 24.03.2022 08:43

Если у кого-то проблемы с движением вверх вниз то вот все работает:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MovingPlatform : MonoBehaviour
{
public float dir;

private float dirX;
private float speed = 3f;

private bool movingRight = true;

public bool IsHorizontal;

void Update()
{
MovingPlatforms();
}

private void MovingPlatforms()
{
if (IsHorizontal)
{
if (transform.position.x > dir)
{
movingRight = false;
}
else if (transform.position.x < -dir)
{
movingRight = true;
}

if (movingRight)
{
transform.position = new Vector2(transform.position.x + speed * Time.deltaTime, transform.position.y);
}
else
{
transform.position = new Vector2(transform.position.x - speed * Time.deltaTime, transform.position.y);
}
}
else
{
if (transform.position.y > dir)
{
movingRight = false;
}
else if (transform.position.y < -dir)
{
movingRight = true;
}

if (movingRight)
{
transform.position = new Vector2( transform.position.x ,transform.position.y + speed * Time.deltaTime);
}
else
{
transform.position = new Vector2(transform.position.x, transform.position.y - speed * Time.deltaTime);
}
}
}
}

Ответить
@littlepumpkin6058
@littlepumpkin6058 - 26.03.2022 19:13

Ребят помогите исправить проблему, у меня персонаж прыгая с движущихся платформы на обычную телепортируется куда то в начало уровня, с чем это связано и что с этим делать?((

Ответить
@gluharone
@gluharone - 04.04.2022 01:02

Я один столкнулся с проблемой что не могу прыгать на платформе, может кто помочь?

Ответить
@Дмитрий-з9ь1з
@Дмитрий-з9ь1з - 05.05.2022 10:24

Вы всегда делаете хорошие уроки, но всё усложняете
можно так

using UnityEngine;

public class PlatformMove : MonoBehaviour {

[SerializeField] private float speed;
[SerializeField] private float startingPosition;
[SerializeField] private float endPosition;

private bool upMove = true;

private Vector3 pos;

void Update () {
transform.position += transform.up * speed * Time.deltaTime;
if (pos.y > endPosition && upMove) {
upMove = false;
speed *= -1f;
}
if (pos.y < startingPosition && !upMove) {
upMove = true;
speed *= -1f;
}
pos = transform.position;
}

void OnCollisionEnter (Collision col) {
col.gameObject.transform.parent = transform;
}

void OnCollisionExit (Collision col) {
col.gameObject.transform.parent = null;
}

}

платформа будет двигаться в верх, в низ, если нужно в право, в лево замените в условиях pos.y на pos.x и transform.up на transform.right

Ответить
@Nikita_531-GameDesigner
@Nikita_531-GameDesigner - 05.08.2022 13:38

И что для каждой платформы свой участок писать?)

Ответить
@Nikita_531-GameDesigner
@Nikita_531-GameDesigner - 06.08.2022 09:28

Пиздец

Ответить
@cubicworld01
@cubicworld01 - 06.11.2022 16:25

Почему когда я прыгаю на платформу, мой персонаж начинает дёргаться как сумасшедший и меняет свою форму?

Ответить
@harek1671
@harek1671 - 22.11.2022 22:02

Всё работает,но платформа ,куда бы её не разместили всё время едет в "начальную точку", хотя по идее должна сместится на 4 юнита

Ответить
@МихаилБугаков-ф3м
@МихаилБугаков-ф3м - 08.01.2023 18:43

Здравствуйте, помогите пожалуйста. Все запускается, но платформа делает одно движение туда и обратно и замирает... в чем может быть проблема?

Ответить
@гулькаксруль
@гулькаксруль - 30.01.2023 22:19

ребят , вот норм код , можно точки старта и конца самому регулировать
Vector3 _targetPoint;
Vector3 _targetPoint1;

//Создаем переменную для обозначения скорости движения
float _speed;

public GameObject finihPoint;
public GameObject startPoint;

bool finih = true;
bool start = false;



void Start()
{

_targetPoint = finihPoint.transform.position;
_targetPoint1 = startPoint.transform.position;// Указываешь нужные координаты
_speed = 0.115f; // указываем скорость
}

void FixedUpdate(){

MoveObj(); // Вызываем метод для движения, вызов происходит каждый фрейм или что то вроде того
}

void MoveObj(){

if ( finih == true)
{
transform.position = Vector2.MoveTowards(transform.position, _targetPoint, _speed);
}

if (transform.position == _targetPoint)
{
finih = false;
start = true;
}

if (start == true)
{
transform.position = Vector2.MoveTowards(transform.position, _targetPoint1, _speed);
}

if (transform.position == _targetPoint1)
{
finih = true;
start = false;
}

}

}

Ответить
@hidusa
@hidusa - 30.03.2023 15:39

если работает в 3д поставлю лайк и подпишусь если нет поищу ещё

Ответить
@GreenLiz2
@GreenLiz2 - 02.04.2023 17:48

Код как у ЯндереДева: Гайд

Ответить
@ИванПавленко-е1х
@ИванПавленко-е1х - 09.04.2023 12:33

Официально заявляю что твои гайды одни из самых лучших и подробных на всем ютубе

Ответить
@oakimpala7701
@oakimpala7701 - 09.07.2023 21:36

Огромное спасибо, отличный туториал. Все обЪяснили и показали.

Ответить
@Анастасия-б6ъ9я
@Анастасия-б6ъ9я - 25.07.2023 22:33

СПАСИБО!!!

Ответить
@bogdan9423
@bogdan9423 - 05.09.2023 02:45

Спасибо, это было полезное видео👍

Ответить
@bogdan9423
@bogdan9423 - 07.09.2023 01:12

А вы не знаете как исправить проблему в 2д, что персонаж трясется/подпрыгивает, когда платформа, которая двигается по координате "y" вверх вниз, движется вниз?

Ответить
@kongb7480
@kongb7480 - 09.01.2024 18:49

Ни у кого не возникло проблемы в том, что камера слетает, когда встоёшь на платформу?

Ответить