@j1mie

Как добавить эффект зума при спринте в Unity?

Хочу, чтоб при спринте "Field of View" на камере менялся и создавался эффект зума, но не понимаю как это написать в коде, помогите пожалуйста.
public class PlayerMovement : MonoBehaviour
{
    public CharacterController controller;

    public float speed = 15f;
    public float gravity = -9.81f;
    public float jumpHeight = 3f;

    public Transform groundCheck;
    public float groundDistance = 0.4f;
    public LayerMask groundMask;

    Vector3 velocity;
    bool isGrounded;

    public bool isMoving = false;
    public float sprint = 1.3f;


    void Start()
    {
        
    }

    
    void Update()
    {
        isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);

        if(isGrounded && velocity.y < 0)
        {
            velocity.y = -2f;
        }

        float x = Input.GetAxis("Horizontal");
        float z = Input.GetAxis("Vertical");

        Vector3 move = transform.right * x + transform.forward * z;

        controller.Move(move * speed * Time.deltaTime);
        isMoving = true;
        

        if(Input.GetButtonDown("Jump") && isGrounded)
        {
            velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);
        }

        velocity.y += gravity * Time.deltaTime;

        controller.Move(velocity * Time.deltaTime);

        if (Input.GetKey(KeyCode.LeftShift) & isMoving & isGrounded)
        {
            controller.Move(move * speed * Time.deltaTime * sprint);
        }
    }
}
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
Figma-designer
@Figma-designer
float fov = 40; // значение по умолчанию
int k = 1; //коэффициент  

Camera.main.fieldOfView = fov + Time.deltaTime * sprint*k;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@j1mie Автор вопроса
Вроде правильно написал, но ничего не изменилось
public class PlayerMovement : MonoBehaviour
{
    public CharacterController controller;

    public float speed = 15f;
    public float gravity = -9.81f;
    public float jumpHeight = 3f;
    public float fov = 40;
    int k = 1;

    public Transform groundCheck;
    public float groundDistance = 0.4f;
    public LayerMask groundMask;

    Vector3 velocity;
    bool isGrounded;

    public bool isMoving = false;
    public float sprint = 1.3f;


    void Start()
    {
        
    }

    
    void Update()
    {
        isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);

        if(isGrounded && velocity.y < 0)
        {
            velocity.y = -2f;
        }

        float x = Input.GetAxis("Horizontal");
        float z = Input.GetAxis("Vertical");

        Vector3 move = transform.right * x + transform.forward * z;

        controller.Move(move * speed * Time.deltaTime);
        isMoving = true;

        

        if(Input.GetButtonDown("Jump") && isGrounded)
        {
            velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);
        }

        velocity.y += gravity * Time.deltaTime;

        controller.Move(velocity * Time.deltaTime);

        if (Input.GetKey(KeyCode.LeftShift) & isMoving & isGrounded)
        {
            controller.Move(move * speed * Time.deltaTime * sprint);
            Camera.main.fieldOfView = fov + Time.deltaTime * sprint * k;
        }
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы