Юнити от первого лица
Делаю игру от первого лица Но есть проблема Когда я начинаю ходить возле какого-то объекта Например Квадрата и ходить вокруг него то мой персонаж возвращается и разные стороны Я понимаю что это физика но можно ли как-то это убрать, чтобы персонаж вертелся только когда мне нужно
Код передвижения Персонажа:
using UnityEngine;
public class Movement : MonoBehaviour
{
public float Speed = 5f;
public Rigidbody rb;
private bool _isGrounded;
void FixedUpdate()
{
MovementLogic();
}
private void MovementLogic()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
transform.Translate(movement * Speed * Time.fixedDeltaTime);
}
void OnCollisionEnter(Collision collision)
{
IsGroundedUpate(collision, true);
}
void OnCollisionExit(Collision collision)
{
IsGroundedUpate(collision, false);
}
private void IsGroundedUpate(Collision collision, bool value)
{
if (collision.gameObject.tag == ("Ground"))
{
_isGrounded = value;
}
}
}
Код вражения камеры:
using UnityEngine;
public class CameraControl : MonoBehaviour
{
public Transform player;
public float mouseSensitivity = 2f;
float cameraVerticalRotation = 0f;
//bool lockedCursor = true;
// Start is called before the first frame update
void Start()
{
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
// Update is called once per frame
void Update()
{
MouseControl();
}
void FixedUpdate()
{
}
private void MouseControl()
{
float inputX = Input.GetAxis("Mouse X") * mouseSensitivity;
float inputY = Input.GetAxis("Mouse Y") * mouseSensitivity;
cameraVerticalRotation -= inputY;
cameraVerticalRotation = Mathf.Clamp(cameraVerticalRotation , -90f , 90f);
transform.localEulerAngles = Vector3.right * cameraVerticalRotation;
player.Rotate(Vector3.up * inputX);
Код слежения камеры за персонажем:
using UnityEngine;
public class FollowPlayer : MonoBehaviour
{
public Transform player;
public Vector3 offset;
public float rotation;
// Update is called once per frame
void Update()
{
transform.position = player.position + offset;
}
}
Источник: Stack Overflow на русском