실수와 Mathf
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 16번째.
소수에는 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까지 커졌다가 다시 작아지며, 약 1초에 한 번 반복됩니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
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 스크립팅 기초의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드