Нужно плавно передвигать камеру за курсором. Научился перемещать резко, но как сделать это плавно не знаю :\
Вот код:
using UnityEngine;
public class CameraMoving : MonoBehaviour
{
private UnityEngine.Transform Player;
public static bool Flag = false;
Vector3 Cam;
Vector3 temp;
void Start()
{
Player = GameObject.FindGameObjectWithTag("Player").transform;
temp = Input.mousePosition;
}
void LateUpdate()
{
temp.x = Input.mousePosition.x + Player.transform.position.x - Camera.main.pixelWidth / 2;
temp.y = Input.mousePosition.y + Player.transform.position.y - Camera.main.pixelHeight / 2;
temp.z = -15;
float mw = Input.GetAxis("Mouse ScrollWheel");
if (mw > 0.1)
{
temp.z += Time.deltaTime * 50;
}
if (mw < -0.1)
{
temp.z -= Time.deltaTime * 50;
}
if (Flag == false)
{
transform.position = temp;
}
}
}
C#
Unity2D Плавное перемещение камеры
using UnityEngine;
public class CameraMoving : MonoBehaviour
{
private Transform Player;
public static bool Flag = false;
Vector3 Cam;
Vector3 temp;
Vector3 velocity = Vector3.zero ;
float smoothTime = 0.3f;
void Start()
{
Player = GameObject.FindGameObjectWithTag("Player").transform;
temp = Input.mousePosition;
}
void LateUpdate()
{
temp.x = Input.mousePosition.x + Player.transform.position.x - Camera.main.pixelWidth / 2;
temp.y = Input.mousePosition.y + Player.transform.position.y - Camera.main.pixelHeight / 2;
temp.z = -15;
float mw = Input.GetAxis("Mouse ScrollWheel");
if (mw > 0.1)
{
temp.z += Time.deltaTime * 50;
}
if (mw < -0.1)
{
temp.z -= Time.deltaTime * 50;
}
if (Flag == false)
{
Vector3 targetPosition = temp;
transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime);
}
}
}
Попробуй эта
public class CameraMoving : MonoBehaviour
{
private Transform Player;
public static bool Flag = false;
Vector3 Cam;
Vector3 temp;
Vector3 velocity = Vector3.zero ;
float smoothTime = 0.3f;
void Start()
{
Player = GameObject.FindGameObjectWithTag("Player").transform;
temp = Input.mousePosition;
}
void LateUpdate()
{
temp.x = Input.mousePosition.x + Player.transform.position.x - Camera.main.pixelWidth / 2;
temp.y = Input.mousePosition.y + Player.transform.position.y - Camera.main.pixelHeight / 2;
temp.z = -15;
float mw = Input.GetAxis("Mouse ScrollWheel");
if (mw > 0.1)
{
temp.z += Time.deltaTime * 50;
}
if (mw < -0.1)
{
temp.z -= Time.deltaTime * 50;
}
if (Flag == false)
{
Vector3 targetPosition = temp;
transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime);
}
}
}
Попробуй эта
using UnityEngine;
public class CameraMoving : MonoBehaviour
{
private Transform Player;
public static bool Flag = false;
Vector3 Cam;
Vector3 temp;
public float smoothSpeed = 0.125f; // Скорость сглаживания
void Start()
{
Player = GameObject.FindGameObjectWithTag("Player").transform;
temp = Input.mousePosition;
}
void LateUpdate()
{
temp.x = Input.mousePosition.x + Player.transform.position.x - Camera.main.pixelWidth / 2;
temp.y = Input.mousePosition.y + Player.transform.position.y - Camera.main.pixelHeight / 2;
temp.z = -15;
float mw = Input.GetAxis("Mouse ScrollWheel");
if (mw > 0.1)
{
temp.z += Time.deltaTime * 50;
}
if (mw < -0.1)
{
temp.z -= Time.deltaTime * 50;
}
if (Flag == false)
{
// Используйте Lerp для плавного перемещения камеры
Vector3 smoothedPosition = Vector3.Lerp(transform.position, temp, smoothSpeed);
transform.position = smoothedPosition;
}
}
}
В этом коде я добавил переменную smoothSpeed, которая определяет скорость сглаживания. Функция Vector3.Lerp затем используется для плавного перемещения камеры от текущего положения к новому положению. Вы можете настроить smoothSpeed для получения желаемой скорости перемещения.Похожие вопросы
- Визуализация вида сверху в Unity2D
- Unity. Как отключить видимость объекта в камере
- Почему когда я доделал игру то камера смотрела ровно на игру а когда компилировал она приблизилась хотя в Unity на месте
- Зачем существует возможность выбора 24 к/с в настройках камеры смартфона, если при 30 и 60 к/с видео будет плавнее?
- "Плавная" Мышка в CS:GO. Как настроить сенсу.
- А почему при перемещении сверху вниз АТОМНЫЕ РАДИУСЫ элементов растут?
- вопрос по поводу перемещения во времени
- Возможено ли перемещение работника в другое структурное подразделение с изменением его должностных обязанностей?
- временное перемещение сотрудника
Работает
if (mw > 0.1)
{
Mousepos.z += Time.deltaTime * 50;
}
if (mw < -0.1)
{
Mousepos.z -= Time.deltaTime * 50;
}
if (!Flag)
{
Vector3 targetPosition = Mousepos;
Vector3 playerToTarget = targetPosition - Player;
if (playerToTarget.magnitude > distance)
{
playerToTarget = playerToTarget.normalized * distance;
targetPosition = Player + playerToTarget;
}
transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime);
}
}
}
public class CameraMoving : MonoBehaviour
{
private Vector3 Player;
public static bool Flag = false;
Vector3 Mousepos;
Vector3 velocity = Vector3.zero ;
float smoothTime = 2f;
float distance = 10;
void Start()
{
Mousepos = Input.mousePosition;
}
void LateUpdate()
{
Player = GameObject.FindGameObjectWithTag("Player").transform.position;
Mousepos.x = Input.mousePosition.x + Player.x - Camera.main.pixelWidth / 2;
Mousepos.y = Input.mousePosition.y + Player.y - Camera.main.pixelHeight / 2;
Mousepos.z = -15;
if (mw > 0.1)
{
Mousepos.z += Time.deltaTime * 50;
}
if (mw < -0.1)
{
Mousepos.z -= Time.deltaTime * 50;
}
if (!Flag)
{
Vector3 targetPosition = Mousepos;
Vector3 playerToTarget = targetPosition - Player;
{
playerToTarget = playerToTarget.normalized * distance;
targetPosition = Player + playerToTarget;
}
targetPosition = new Vector3(targetPosition.x, targetPosition.y, -15f);
Debug.Log(targetPosition);
transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime);
}
}
}