unity не может неявно преобразовать тип float ‘ в bool’, чтобы увеличить масштаб камеры?

#c# #unity3d #zooming

#c# #unity-игровой движок #масштабирование

Вопрос:

Я использую C #, и я новичок. Я пытаюсь создать функцию масштабирования для игры на Unity. Вот мой код (который у меня есть на данный момент):

 using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Zoom : MonoBehaviour
{
    public Camera cam;
    public float zoom_speed = 20f;

    // Update is called once per frame
    void Update ()
    {
        if(Input.GetAxis("Mouse ScrollWheel"))
        {
            cam.fieldOfView = zoom_speed;
        }
    }
}
  

Однако я получаю сообщение об ошибке «не удается неявно преобразовать тип float в bool при наведении курсора if(Input.GetAxis("Mouse Scrollwheel")) Также был бы признателен за любые советы о том, как заставить программу масштабирования работать.

Ответ №1:

Input.GetAxis("Mouse ScrollWheel"); Скрипт возвращает значение с плавающей точкой.

Значение будет находиться в диапазоне -1 … 1 для ввода с клавиатуры и джойстика. Если ось настроена на дельта-перемещение мыши, дельта мыши умножается на чувствительность оси, и диапазон не равен -1 … 1.

 using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Zoom : MonoBehaviour
{
    public Camera cam;
    public float zoom_speed = 20f;

    // Update is called once per frame
    void Update ()
    {
         float d = Input.GetAxis("Mouse ScrollWheel");
         if (d > 0f)
         {
            //Positive value
            //Scroll up
            cam.fieldOfView  = zoom_speed;
         }
         else if (d < 0f)
         {
            //Negative value
            //Scroll down
            cam.fieldOfView -= zoom_speed;
         }

    }
}
  

Ответ №2:

Дополняя ответ из 0xBFE1A8, вам даже не нужно использовать оператор if … else, потому что значение будет находиться в диапазоне -1 … 1, просто умножьте Input.GetAxis("Mouse ScrollWheel") значение на zoom_speed. Я также предлагаю вам ограничить поле зрения между минимальным и максимальным значениями, определенными вами.

 float scroll = Input.GetAxis("Mouse ScrollWheel");
cam.fieldOfView = Mathf.Clamp(cam.fieldOfView   zoom_speed * scroll * Time.deltaTime, minFieldOfView, maxFieldOfView);