Задать вопрос
Avikiy
@Avikiy
Человек

Как сделать, чтобы камера не выходила за границу?

Игра простая, с видом сверху.
Камера свободная, управляется WASD, персонажа нет.

private float movementSpeed = 2f;
void Update()
{
    float horizontalInput = Input.GetAxis("Horizontal");
    float verticalInput = Input.GetAxis("Vertical");
    transform.position = transform.position - new Vector3(horizontalInput * movementSpeed * Time.deltaTime, 0, verticalInput * 
    movementSpeed * Time.deltaTime);
}
  • Вопрос задан
  • 90 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos Куратор тега Unity
Написать код который будет проверять куда хочет переместиться персонаж и если туда нельзя перемещаться - не менять transform.position.
Вариантов такого кода - миллион и зависит от реализации карты и стенок в первую очередь.
Ответ написан
Комментировать
Avikiy
@Avikiy Автор вопроса
Человек
Но тут для 2Д
private void Update()
{
float limit_X_min = -1000f; //Лимит
float limit_X_max = 1000f; //Лимит
float camera_X = privezat_k.transform.position.x;
if (camera_X < limit_X_min) camera_X = limit_X_min;
if (camera_X > limit_X_max) camera_X = limit_X_max;
transform.position = new Vector3(camera_X, 0f, -10f);
}
Ответ написан
@SWA512
Gamedev
private float movementSpeed = 2f;
public Rect limits = new Rect(0,0,20,20);
Vector2 newPosV2 = new Vector2();
Vector3 newPosV3 = new Vector3();
void Update1()
{
	float horizontalInput = Input.GetAxis("Horizontal");
	float verticalInput = Input.GetAxis("Vertical");
	newPosV3 = transform.position - new Vector3(horizontalInput * movementSpeed * Time.deltaTime, 0, 
                      verticalInput * movementSpeed * Time.deltaTime);
	newPosV2.Set(newPosV3.x, newPosV3.z);
	if (limits.Contains(newPosV2)) transform.position = newPosV3;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы