Нужно плавно передвигать камеру за курсором. Научился перемещать резко, но как сделать это плавно не знаю :\
Вот код:
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);
}
}
}