Задние объекты при параллаксе должны двигаться медленней, чем передние, а не наоборот, как здесь. Самый задний план (облака) буду почти неподвижны => задние объекты должны двигаться в другую сторону.
ФИшка с гейм объектами не работает. "Земля" по игреку смещена на -2.4 вниз. Гейм объекты смещаются вверх на 2.4 при скроллинге, в итоге земля опять на отметке 0 по игреку
Привет, вопрос по поводу viewzone - это значение берется из системы координат мира? Тоесть: если размер спрайта в данном случае был 19, то viewzone - 10, это как бы тоже значение по x?
Привет. Не так давно вы опубликовали видео "Движение по клику в 3d...". Хотелось бы увидеть такой метод в 2D, как в игре, к примеру: The Masterplan. Само движение персонажа к курсору реализовать легко, но чтобы тот обходил, допустим стены, сложнее, и пока мне не понятно как это реализовать. Стоит ли ждать такого рода видео от вас? Просто мне нравится ваша подача и "доступность объяснения", вот и решил спросить/ предложить.
@@graphicaldesign2776 Да, этот вариант я тоже рассматривал, но тогда нужно будет переделывать все материалы(скрипты, персонажей, анимацию и т.д.), да и эффект "рисовки" пропадает. В Asset Store я нашёл плагин Nav 2D, но он платный, правда и стоит копейки, но хочется в своё обучение не вкладывать лишние деньги. А другой вариант: делать скрипт самому по зарубежным урокам/видео, что меня не очень устраивает, так-как половину информации пропускаю.
@@Black_Game Я скачал в Asset Store бесплатный Standard Assets (assetstore.unity.com/packages/essentials/asset-packs/standard-assets-for-unity-2017-3-32351). Там есть сцена CharacterThirdPersonAI. Удалил дефолтный пол с его навмешем, сделал свой пол и препятствия стандартно по урокам Navmesh 3d. Камеру направил в пол, повесил на нее 2d Pixel Perfect для корректного отображения спрайтов, добавил спрайт персонажа, повернул к камере. Потом просто в скрипте AICharacterControl.cs добавил строчку GameObject.FindWithTag("igrok").transform.position = character.transform.position; в функцию Update. Тегом "igrok" у меня помечен спрайт персонажа. Если отключить рендерер у тела 3д-модели, создается иллюзия пойнтклик-2д. Можно анимировать спрайт с условиями, зависящими от character.transform.rotation, то есть от угла поворота 3д-модели.
Сделал всё как в уроке. Иду влево - картинки перемещаются как задумано, кроме 2, они начинают по оси з уплывать куда то. Иду на право - ничего не работает. 3 раза перепроверил код - всё равно.
Отбой тревоги. Нашел ошибку. Всё работает как часы. Здвиг по оси з - фиксится большем расстоянием между слоями. Или можно засунуть в пустые объекты с нулевыми координатами картинки.
Походу тут косяк, ругаеться на private void ScrollLeft() using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript2 : MonoBehaviour { public float backgroundSize; public float paralaxSpeed; private Transform cameraTransform; private Transform [] layers; private float viewZone = 10; private int lefIndex; private int rightIdex; private float lastCameraX;
Приветствую. Спасибо за интересный и познавательный урок! Хотел бы уточнить один момент. Как настроить камеру так, чтобы не было видно нижнюю границу карты. В дополнении отмечу, что камеру привязывал к персонажу по вашему уроку.
думай) мне тож нужен вертикальный паралакс, но он и до просмотра видео не составлял у меня проблем, я думал мож в юньке есть готовое решение, а всё равно придётся всё ручками делать ;)
Надеюсь не поздно, а то много времени прошло) Как сделать так, чтобы фон и по y шел за персонажем. Ну то есть, когда персонаж идет вверх, то фон не остается на координате x, а двигается за персонажем?
Привет написал твой код вылезла ошибка "не удалось изменить возвращаемое значение "Transform.position"т,к оно не является переменной. " Почему у тебя не было ошибки и как исправить посоветуй.
В updates у облоков сделай перемещение отновитсельно их нинешеншо пересечения, напишем на 1/2 пикселя от нынешнего положения, или лучше создай класс который будет вызываться по времени, update будет зависит от кадров
отличный урок но... Массивы в c#? List для тебя какая-то шутка? Можно было бы код сократить сильно и повысить производительность просто используй ты List, вместо массива
Если я тебя правильно понял, то тебе просто следует переключить Camera.Projection на Perspective, а камеру закрепить по оси Z, чтобы "взглядом" не мог вертеть её и она смотрела на твоего персонажа(или место действия) сбоку. После расставь на заднем фоне разные 3D декорации и все эти махинации из видео с кодом не понадобятся.
Все круто, и понятно. Но конечно же без вопроса не обойтись. А вот как сделать также, только с остравами, ну земля находится на растоянии друг от друга.
Зачем ты создал int lastLeft и int lastRight если ты ни разу их не использовал? И второй вопрос, как сделать точно так же, только для двух картинок, а не для трёх? Ошибка вылезает IndexOutOfBound
Спасибо огромное за туториал! Единственное нормальное видео о том как сделать параллакс эффект 🔥
Спасибо огромное! Чудесный урок и объяснение понятное, я думала все будет сложнее чем оказалось
Спасибо тебе еще раз, я благодаря тебе начинаю понимать C# и вообще механику разработки игр. Спасибо😊
Спасибо большое автору !!!
Задние объекты при параллаксе должны двигаться медленней, чем передние, а не наоборот, как здесь. Самый задний план (облака) буду почти неподвижны => задние объекты должны двигаться в другую сторону.
А этот способ можно использовать для раннера где персонаж стоит на месте и мне надо чтобы он просто плавно переходил
Спасибо за урок!
мне одному интересно зачем тебе
int lastRight = rightIndex;
int lastLeft = leftIndex;
Супер !!! спасибо очень позновательно
При движении вправо в момент когда третья картинка перемещается появляется ошибка "Index was outside the bounds of the array"
В ScrollLeft() где if поменяй leftIndex на rightIndex
Крутое видео
Полезные знания, спасибо
Как сделать вертикальный параллакс?
Всем привет! У меня есть игра top down(вид сверху) и мне нужно сделать повторяющийся фон. Каким образом это можно реализовать?
ФИшка с гейм объектами не работает. "Земля" по игреку смещена на -2.4 вниз. Гейм объекты смещаются вверх на 2.4 при скроллинге, в итоге земля опять на отметке 0 по игреку
@KalmikFF нашел решение?
Топ видео
Привет, вопрос по поводу viewzone - это значение берется из системы координат мира? Тоесть: если размер спрайта в данном случае был 19, то viewzone - 10, это как бы тоже значение по x?
Да.
@@graphicaldesign2776 Спасибо за уточнение и за материалы. Удачи и здоровья!
Можно полный скрипт под мой комм пожалуйста?
А как контролировать z-координату ? Фон в 0 становится по Z.
Привет. Не так давно вы опубликовали видео "Движение по клику в 3d...". Хотелось бы увидеть такой метод в 2D, как в игре, к примеру: The Masterplan. Само движение персонажа к курсору реализовать легко, но чтобы тот обходил, допустим стены, сложнее, и пока мне не понятно как это реализовать. Стоит ли ждать такого рода видео от вас? Просто мне нравится ваша подача и "доступность объяснения", вот и решил спросить/ предложить.
Добрый вечер. Пока о таком не задумывался. А почему не сделать 3d, но с видом сверху? тогда вообще никакой проблематики.
@@graphicaldesign2776 Да, этот вариант я тоже рассматривал, но тогда нужно будет переделывать все материалы(скрипты, персонажей, анимацию и т.д.), да и эффект "рисовки" пропадает. В Asset Store я нашёл плагин Nav 2D, но он платный, правда и стоит копейки, но хочется в своё обучение не вкладывать лишние деньги. А другой вариант: делать скрипт самому по зарубежным урокам/видео, что меня не очень устраивает, так-как половину информации пропускаю.
@@Black_Game я подумаю как это правильно реализовать
@@graphicaldesign2776 Спасибо!
@@Black_Game Я скачал в Asset Store бесплатный Standard Assets (assetstore.unity.com/packages/essentials/asset-packs/standard-assets-for-unity-2017-3-32351).
Там есть сцена CharacterThirdPersonAI. Удалил дефолтный пол с его навмешем, сделал свой пол и препятствия стандартно по урокам Navmesh 3d. Камеру направил в пол, повесил на нее 2d Pixel Perfect для корректного отображения спрайтов, добавил спрайт персонажа, повернул к камере. Потом просто в скрипте AICharacterControl.cs добавил строчку GameObject.FindWithTag("igrok").transform.position = character.transform.position;
в функцию Update. Тегом "igrok" у меня помечен спрайт персонажа. Если отключить рендерер у тела 3д-модели, создается иллюзия пойнтклик-2д. Можно анимировать спрайт с условиями, зависящими от character.transform.rotation, то есть от угла поворота 3д-модели.
Сделал всё как в уроке. Иду влево - картинки перемещаются как задумано, кроме 2, они начинают по оси з уплывать куда то. Иду на право - ничего не работает. 3 раза перепроверил код - всё равно.
Отбой тревоги. Нашел ошибку. Всё работает как часы. Здвиг по оси з - фиксится большем расстоянием между слоями. Или можно засунуть в пустые объекты с нулевыми координатами картинки.
Походу тут косяк, ругаеться на
private void ScrollLeft()
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript2 : MonoBehaviour
{
public float backgroundSize;
public float paralaxSpeed;
private Transform cameraTransform;
private Transform [] layers;
private float viewZone = 10;
private int lefIndex;
private int rightIdex;
private float lastCameraX;
private void Start()
{
cameraTransform = Camera.main.transform;
lastCameraX = cameraTransform.position.x;
layers = new Transform [transform.chikdCount];
for (int i=0; i < transform.chikdCount; i++)
{
layers[i] = transform.GetChild(i);
}
leftIndex = 0;
rightIndex = layers.Lenght -1;
}
private void Update()
{
float deltaX = cameraTransform.position.x - lastCameraX;
transform.position += Vector3.right * (deltaX *paralaxSpeed);
lastCameraX = cameraTransform.position.x;
if (cmeraTransform.position.x < (layers[leftIndex].transform.position.x + viewZone))
{
ScrollLeft ();
}
{
if (cmeraTransform.position.x > (layers[rightIndex].transform.position.x + viewZone))
{
ScrollRight ();
}
}
private void ScrollLeft()
{
int lastRight = rightIndex;
layers [rightIndex].position = Vector3.right = (layers[leftIndex].position.x - backgroundSize);
leftIndex = rightIndex;
rightIndex -;
if (rightIndex < 0)
{
rightIndex = layers.Length - 1;
}
}
private void ScrollRight()
{
int lastLeft = leftIndex;
layers [leftIndex].position = Vector3.right = (layers[rightIndex].position.x + backgroundSize);
rightIndex = leftIndex;
leftIndex ++;
if (leftIndex == layers.Length)
{
leftIndex = 0;
}
}
}
Во-первых, текст ошибки писать/гуглить не пробовали?
Во-вторых, cmera и camera - уж определитесь
у тебя ошибок хоть жопой жуй
Приветствую. Спасибо за интересный и познавательный урок! Хотел бы уточнить один момент. Как настроить камеру так, чтобы не было видно нижнюю границу карты. В дополнении отмечу, что камеру привязывал к персонажу по вашему уроку.
зафиксировать передвижении камеры по оси игрик
Graphical Design, а как сделать вертикальный паралакс, у меня игра прыгун вверх и есть все для паралакса, но у тебя урок как сделать горизонтальный
думай) мне тож нужен вертикальный паралакс, но он и до просмотра видео не составлял у меня проблем, я думал мож в юньке есть готовое решение, а всё равно придётся всё ручками делать ;)
проверяй другую ось и всё
Надеюсь не поздно, а то много времени прошло) Как сделать так, чтобы фон и по y шел за персонажем. Ну то есть, когда персонаж идет вверх, то фон не остается на координате x, а двигается за персонажем?
повесить тот же скрипт на камеру и/или сделать фон дочерним от камеры
Ori топ игра, был удивлен,что на Unity сделано
Большое спасибо)
Привет написал твой код вылезла ошибка "не удалось изменить возвращаемое значение "Transform.position"т,к оно не является переменной. " Почему у тебя не было ошибки и как исправить посоветуй.
ответов много может быть. ты лучше код кидай. скорее всего координату Х забыл после position
А как сделать, у меня камера не движется, но надо чтоб задний фон (облака) двигались.
В updates у облоков сделай перемещение отновитсельно их нинешеншо пересечения, напишем на 1/2 пикселя от нынешнего положения, или лучше создай класс который будет вызываться по времени, update будет зависит от кадров
Что за игрулька на фоне?
Или это не игра?
ori
0:07 ori and the will of the wisps
НУ ПОЧЕМУ У МЕНЯ СРЕДНЯЯ КАРТИНКА СКРОЛЛИТСЯ ВЛЕВО КОГДА Я ИДУ ВПРАВО!!!!!!!!!!!!!!!!!!?????????????
отличный урок но... Массивы в c#? List для тебя какая-то шутка? Можно было бы код сократить сильно и повысить производительность просто используй ты List, вместо массива
просто используя lerp в 1 строку можно написать все это
@@raxtwink как именно подскажи?
А по вертикали как? Спасибо)
Так же, только через Y
@@graphicaldesign2776 а по диагонали
@@en_li_85 X + Y
а как сделать паралакс если у меня игра 3Д но с 2Д камерой !?
Если я тебя правильно понял, то тебе просто следует переключить Camera.Projection на Perspective, а камеру закрепить по оси Z, чтобы "взглядом" не мог вертеть её и она смотрела на твоего персонажа(или место действия) сбоку. После расставь на заднем фоне разные 3D декорации и все эти махинации из видео с кодом не понадобятся.
Все круто, и понятно. Но конечно же без вопроса не обойтись. А вот как сделать также, только с остравами, ну земля находится на растоянии друг от друга.
ua-cam.com/video/ujvNGHdUbw8/v-deo.html
@@graphicaldesign2776 мне одному интересно зачем тебе
int lastRight = rightIndex;
int lastLeft = leftIndex;
Зачем ты создал int lastLeft и int lastRight если ты ни разу их не использовал?
И второй вопрос, как сделать точно так же, только для двух картинок, а не для трёх? Ошибка вылезает IndexOutOfBound
тоже не понял про int lastLeft и int lastRight