Для создания камеры, которая будет следить за игроком и приближаться к нему при касании пола или стен в Unity, вы можете использовать следующий подход с помощью обычного скрипта на C#. Мы создадим скрипт для камеры, который будет отслеживать положение игрока, а также проверять столкновения с полом и стенами.
### Шаг 1: Создание скрипта для камеры
1. Создайте новый C# скрипт и назовите его, например, CameraFollow.
2. Откройте скрипт и добавьте следующий код:
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
public Transform player; // Ссылка на игрока
public float followSpeed = 2f; // Скорость следования камеры
public float proximityDistance = 2f; // Расстояние, на котором камера будет приближаться
public Vector3 offset; // Смещение от игрока
private Camera cam;
private void Start()
{
cam = GetComponent<Camera>();
offset = transform.position - player.position; // Устанавливаем начальное смещение
}
private void LateUpdate()
{
// Следим за игроком
Vector3 desiredPosition = player.position + offset;
transform.position = Vector3.Lerp(transform.position, desiredPosition, followSpeed * Time.deltaTime);
// Проверяем нажатие на землю или стену
if (IsTouchingWall() || IsTouchingGround())
{
// Если касание стены или пола, приближаем камеру
offset = Vector3.MoveTowards(offset,
Vector3.zero , Time.deltaTime);
}
else
{
// Возвращаемся к изначальному смещению
offset = Vector3.MoveTowards(offset, new Vector3(0, 0, -5f), Time.deltaTime);
}
}
private bool IsTouchingWall()
{
// Логика для проверки соприкосновения со стеной
RaycastHit hit;
// Излучаем луч от камеры вперед
if (Physics.Raycast(transform.position, transform.forward, out hit, proximityDistance))
{
return hit.collider.CompareTag("Wall"); // Предполагаем, что стены имеют тег "Wall"
}
return false;
}
private bool IsTouchingGround()
{
// Логика для проверки соприкосновения с полом
RaycastHit hit;
if (Physics.Raycast(transform.position, Vector3.down, out hit, proximityDistance))
{
return hit.collider.CompareTag("Ground"); // Предполагаем, что пол имеет тег "Ground"
}
return false;
}
}
### Шаг 2: Установка скрипта
1. Перетащите созданный скрипт на объект камеры в вашей сцене.
2. В инспекторе запомните ссылку на игрока, перетащив объект игрока в поле Player вашего CameraFollow скрипта.
### Шаг 3: Настройка тегов
1. Убедитесь, что у стен и пола установлены соответствующие теги (Wall и Ground), иначе скрипт не сможет определить, касается ли камера стены или пола.
### Шаг 4: Настройка параметров
- Вы можете настроить значения followSpeed и proximityDistance в инспекторе, чтобы изменить скорость следования камеры и расстояние, на котором камера реагирует на касания.
### Заключение
Теперь ваша камера будет следить за игроком и приближаться к нему при касании пола и стен. Если вы хотите, чтобы приближение происходило быстрее или медленнее, измените параметры followSpeed и proximityDistance. Вы также можете дополнительно улучшать и расширять функциональность, например, добавляя эффекты сглаживания или другие механики.