Я делаю 3D-игру, но мой игрок может двигаться только по осям X и Y.У меня есть плеер с подключенной камерой, следующий за моей мышью, но я хочу, чтобы он шел только до максимального радиуса от Vector3.zero, даже если моя мышь находится за этими границами.
Я попытался изменить положениеигрок на максимальное расстояние по радиусу каждый кадр пытается следовать за мышью за пределами своих границ, но это вызывает дрожание камеры даже в LateUpdate.
void LateUpdate()
{
if (Input.GetMouseButtonDown(0)) {
firstTouchPos = movementCam.ScreenPointToRay(Input.mousePosition);
playerPos = transform.position;
}
if (Input.GetMouseButton(0)) {
Ray currentTouchPos = movementCam.ScreenPointToRay(Input.mousePosition);
Vector2 direction = currentTouchPos.origin - firstTouchPos.origin;
float distance = Vector3.Distance(transform.position, Vector3.zero);
if (distance >= radius) {
targetPosition = direction.normalized * radius;
} else {
targetPosition = playerPos + direction * touchSensitivity;
}
}
transform.position = Vector3.Lerp(transform.position, targetPosition, Time.deltaTime * followSpeed);
}
Я думаю, что должен быть способ зафиксировать позиционированиеигрока в радиусе, так что мне не нужно «привязывать» его назад, перемещая его через код в каждом кадре.