Числа с плавающей точкой и Mathf
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 16 из 85.
Ты уже встречал f в разделе «Десятичным числам нужна f»: C# воспринимает 0.5 как double, а в Unity используют float. То же самое происходит с математическими функциями. System.Math работает с числами типа double, поэтому float s = Math.Sin(x); приводит к ошибке CS0266: Cannot implicitly convert type 'double' to 'float'.
В Unity есть версия для типа float — Mathf: Mathf.Sin, Mathf.Abs, Mathf.Sqrt, Mathf.PI. Этот покачивающийся буй выдавал обе ошибки, а после исправления компилируется:
// ранее: float y = 1 + Math.Sin(Time.time * 2) * 0.5;
float y = 1 + Mathf.Sin(Time.time * 2) * 0.5f;
transform.position = new Vector3(0, y, 0);Целым числам, таким как 1 и 2, суффикс не нужен: при преобразовании int в float точность не теряется.
Задание
ЛегкоИсправь скрипт сердца, чтобы он снова пульсировал.
- В строке
sizeзамениMath.AbsиMath.SinнаMathf.AbsиMathf.Sin. - Замени
0.5на0.5f, а остальную часть формулы оставь без изменений.
Нажми «Играть»: сердце увеличивается от 1 до 1.5 и обратно примерно раз в секунду. Затем нажми «Проверить».
Попробуйте сами
using System;
using UnityEngine;
public class Pulse : MonoBehaviour
{
void Update()
{
float size = 1 + Math.Abs(Math.Sin(Time.time * 3)) * 0.5;
transform.localScale = new Vector3(size, size, size);
}
}
Все уроки раздела Основы скриптинга в Unity
1Основы C# в Unity
Привет, UnityПеременныеДля дробных чисел нужна fТекст в консолиПеременные, которые запоминаютЕсли и иначеСравнение чиселПовторение: сборщик монет7Циклы и методы
Повторение с forЦиклы внутри цикловНапишите методМетоды, которые возвращают значениеМассивыПовторение: лестница10Поиск объектов
Поиск по имениТегиПоиск по типуСсылки лучше поискаNull в UnityПовторение: ближайшая монета13Проект: уворачиваемся от блоков
БегунБлоки с неба2Заставь двигаться
Размести кубДвигай каждый кадрПоворачивай каждую секундуУправляй клавишамиПовторение: веди куб5Векторы
Сложение векторовНаправленияЛокальное и мировое пространствоСкорость по диагоналиРасстояние между объектамиVector3 — это структураПовторение: пилот дрона8Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказ и скрытиеПовторение: выключатель света3Инспектор
Поля инспектораSerializeFieldЧисла с плавающей точкой и MathfАтрибуты инспектораПовторение: лифт6Трансформации и иерархия
Родители и детиПоднять флагМасштабСмотреть на объектыДвигаться к точкеПовторение: Луна на орбитеПотренируйтесь самостоятельно: Песочница Unity