Unity Поворот объекта за мышкой
Делаю игру от 1 лица и понадобился поворот камеры за мышкой (как в кс), но при этом у меня дёргается камера. Она поворачивается, но трясётся.
Мой код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Threading;
public class ddd : MonoBehaviour
{
public float sensitivity = 1F;
private Vector3 MousePos;
private float MyAngle = 0F;
private float MyAngle2 = 0F;
int delay = 0;
public float AddAngle = 0F;
public float AddAngle2 = 0F;
bool b = false;
void Start()
{
Cursor.visible = false;
}
void Update()
{
MousePos = Input.mousePosition;
}
void FixedUpdate()
{
if (sensitivity != 0)
{
MyAngle = 1.3f * sensitivity * ((MousePos.y - (Screen.height / 2)) / Screen.height);
MyAngle2 = 2 * sensitivity * ((MousePos.x - (Screen.width / 2)) / Screen.width);
if (!b)
{
MyAngle2 = (MyAngle2 + AddAngle) % 360;
MyAngle = (MyAngle + AddAngle2) % 360;
}
else
{
MyAngle2 = AddAngle;
MyAngle = AddAngle2;
}
transform.eulerAngles = new Vector3(-MyAngle, MyAngle2, 0);
}
delay++;
if(delay % 10 == 0)
{
Cursor.lockState = CursorLockMode.Locked;
AddAngle = MyAngle2;
AddAngle2 = MyAngle;
b = true;
}
else
{
Cursor.lockState = CursorLockMode.None;
b = false;
}
}
}
Ответы (1 шт):
Автор решения: Mr.AntonDer
→ Ссылка
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Threading;
public class ddd : MonoBehaviour
{
public float sensitivity = 1F;
private Vector3 MousePos;
private float MyAngle = 0F;
private float MyAngle2 = 0F;
int delay = 0;
public float AddAngle = 0F;
public float AddAngle2 = 0F;
bool b = false;
void Start()
{
Cursor.visible = false;
}
void Update()
{
MousePos = Input.mousePosition;
}
void FixedUpdate()
{
if (sensitivity != 0)
{
MyAngle = 1.3f * sensitivity * ((MousePos.y - (Screen.height / 2)) / Screen.height) * Time.deltaTime;
MyAngle2 = 2 * sensitivity * ((MousePos.x - (Screen.width / 2)) / Screen.width)* Time.deltaTime;
if (!b)
{
MyAngle2 = (MyAngle2 + AddAngle) % 360;
MyAngle = (MyAngle + AddAngle2) % 360;
}
else
{
MyAngle2 = AddAngle;
MyAngle = AddAngle2;
}
transform.eulerAngles = new Vector3(-MyAngle, MyAngle2, 0);
}
delay++;
if(delay % 10 == 0)
{
Cursor.lockState = CursorLockMode.Locked;
AddAngle = MyAngle2;
AddAngle2 = MyAngle;
b = true;
}
else
{
Cursor.lockState = CursorLockMode.None;
b = false;
}
}
}