Как сделать границы камеры - Unity Легко

preview_player
Показать описание
В этом видео я покажу, как реализовать границы камеры таким образом, чтоб она не выходила за пределы рамок, которые я укажу в Unity.

Номер карты для поддержки - 4149629398195479

Рекомендации по теме
Комментарии
Автор

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

roxydevil
Автор

Как раз этого давно не хватало, в каком то смысле уникальный ролик подобных я не встречал.Удаче и спасибо за канал с видео-архивами по c# !

karpa
Автор

Спасибо за видео, давно уже ищу как это сделать!

zeroks
Автор

Супер отличное видео, то что я простл.Спасибо за отзывчивость, ты лучший, спасибо тебе)))

hummylisii
Автор

Спасибо! Очень полезно. Чтобы убрать лишний код можно еще так
[SerializeField] float leftLimit, rightLimit, bottomLimit, upperLimit;

armm
Автор

Видео прикольное, но ждал его долго... Всё делается через один плагин "Cinemachine". Он вроде с 2017 или 2018 встроен в Unity и его можно найти в Package Manager.

mebuckee
Автор

Круто, надо было давно уже заснять это видео. Покажи потом, как сделать рандомную генерацию данжа, типа как в игре SoulKnight

КонстантинЧигрик-рм
Автор

Привет, я очень люблю тебя смотреть, скажи пожалуйста, у меня есть спрайты персонажа (все) и я хочу сделать так что бы он при нажатии на кнопки ходил, а когда отпускал включал анимацию поворота в ту сторону, создаю игру с видом сверху

fishfishing
Автор

проще использовать Cinemachine и никаких скриптов не нужно
намного гибче настройки следования за персом, границ и тряски камеры
+ отдельно коллайдером выставляешь зоны за которые камера не будет попадать для границ на уровне

varan
Автор

Как всегда - максимально полезно и без порожняка. Можно нескромный вопрос - как сделать рандомно разлетающиеся предметы из одной точки. Или рандомно падающие предметы. Как из одной точки так и в разных местах уровня? Спасибо.

piijjen
Автор

вопрос, а не лучше было бы сделать это через cinemachine?

maksimsazanovich
Автор

Господи, а как сделать тоже самое если камера умеет приближать???? такой метод не подходит

TV-TAB
Автор

СЛУШАЙ, ПОКАЖИ ПОЖАЛУЙСТА В СЛЕДУЮЩЕМ ВИДЕО, КАК ПОДБИРАТЬ ПРЕДМЕТЫ С ПОМОЩЬЮ СЕНСОРНОЙ КНОПКИ в 2D!!! УМОЛЯЮ 🙏

zeroks
Автор

Привет, а если у меня камера двигается не за персонажом, а за движениями мышки или тапами по экрану?
Я добавил твой код в конце кода для движения камеры, но камера всеравно выходит на те кординаты, которые я ввёл (
Помоги пожалуйста
Вот код:
using UnityEngine;

[DisallowMultipleComponent,
public sealed class CameraControl : MonoBehaviour {

[Range(0, 10f)]
public float moveSpeed = 10f;
[Range(0f, 5f)]
public float sensitivity = 3;
public bool isDragging { get; private set; }
public new Camera camera { get; private set; }

private Vector2 tempCenter, targetDirection, tempMousePos;
private float tempSens;

private void Start() {
this.camera = GetComponent<Camera>();
}

private void Update() {
UpdateInput();
UpdatePosition();
}

[SerializeField] public float LeftLimit;

[SerializeField] public float RightLimit;

[SerializeField] public float BottomLimit;

[SerializeField] public float UppertLimit;



private void UpdateInput() {
Vector2 mousePosition = Input.mousePosition;
if (Input.GetMouseButtonDown(0)) OnPointDown(mousePosition);
else if (Input.GetMouseButtonUp(0)) OnPointUp(mousePosition);
else if (Input.GetMouseButton(0)) OnPointMove(mousePosition);
}

private void UpdatePosition() {
float speed = Time.deltaTime * this.moveSpeed;
if (this.isDragging) this.tempSens = this.sensitivity;
else this.tempSens = Mathf.Lerp(this.tempSens, 0f, speed);
Vector2 newPosition = this.position + this.targetDirection * this.tempSens;
this.position = Vector2.Lerp(this.position, newPosition, speed);
}

private void OnPointDown(Vector2 mousePosition) {
this.tempCenter =
this.targetDirection = Vector2.zero;
this.tempMousePos = mousePosition;
this.isDragging = true;
}

private void OnPointMove(Vector2 mousePosition) {
if (this.isDragging) {
Vector2 point =
float sqrDist = (this.tempCenter - point).sqrMagnitude;
if (sqrDist > 0.1f) {
this.targetDirection = (this.tempMousePos - mousePosition).normalized;
this.tempMousePos = mousePosition;
}
}
}

private void OnPointUp(Vector2 mousePosition) {
this.isDragging = false;
}

public Vector2 position {
get { return this.transform.position;}
set { this.transform.position = new Vector3(value.x, value.y, -10f); }
}

private Vector2 GetWorldPoint(Vector2 mousePosition) {
Vector2 point = Vector2.zero;
Ray ray =
Vector3 normal = Vector3.forward;
Vector3 position = Vector3.zero;
Plane plane = new Plane(normal, position);
float distance;
plane.Raycast(ray, out distance);
point = ray.GetPoint(distance);
return point;

transform.position = new Vector3(Mathf.Clamp(transform.position.x, LeftLimit, RightLimit), Mathf.Clamp(transform.position.y, BottomLimit, UppertLimit), transform.position.z);

}

}

SpaceB
Автор

А как это сделать В 3D
По сути я прописал всё тоже самое но только с методом rotation
И он высвечивает ошибку "не удается неявно преобразовать тип unityengine.vector3 на unityengine.quaternion"

Vanat
Автор

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

kankprodkilla
Автор

Привет! Спасибо за видео! У меня вопрос. Когда я делаю сцену в обычно режиме у меня все отлично работает, а когда перехожу в режим игры и включаю полный экран, все идёт не по плану... Либо становятся видны границы, либо камера слишком близко приближается к игроку, либо же совсем не находится в том фокусе, который изначально был выставлен. Настройки я сохраняю, все ок) просто мне интересно, когда я сделаю билд и включу его на компе, оно будет так же как в полноэкранном режиме в юнити, или так, как было настроено на сцене... Меня терзает этот вопрос, было пересмотрено 100500 туториалов, но нигде ничего дельного по этому поводу... Спасибо

alisasoloviova
Автор

Есть еще один способ. Через синемашин и полигон коллайдер 2д. Там даже код писать не нужно.

xSPESHERx
Автор

Кто-то подскажет, почему не работает скрипт вместе с Cinemachine? Ни на меин камере, ни на виртуальной.

I.G.R
Автор

Такая ситуация:
Есть комната в которой определённые координаты для ограничений, при переходе дальше меняю точки координат через скрипт и исчезает персонаж, с чем это может быть связано?

fetral