Vector3.right는 new Vector3(1f,0f,0f)와 같다.
⚔ 캐릭터 이동
void Update()
{
if (Input.GetMouseButtonDown(0))
{
direction *= -1;
renderer.flipX = !renderer.flipX;
}
(생략)
//transform.position += new Vector3(1f, 0, 0) * direction; -- 아래 구문과 같은 동작
transform.position += Vector3.right * direction;
}
Application.targetFrameRate는 Unity가 게임을 렌더링하려고 시도하는 최대 프레임 속도를 지정하는 속성.
기기 성능이 좋으면 Frame이 높아지므로, 기기 성능과 관계없이 1초에 60번 호출/계산하도록 고정 시킬 수 있다.
⚔ 프레임 60으로 고정
void Start()
{
Application.targetFrameRate = 60;
renderer = GetComponent<SpriteRenderer>();
}
GameObject의 충돌을 체크하기 위해서는 collider 컴포넌트가 필요하며, 둘 중 하나는 반드시 Rigidbody 컴포넌트를 가지고 있어야 한다. 그리고 충돌이 일어났을 때 충돌된 객체를 확인하려면 GameObject의 name 또는 CompareTag()함수를 이용할 수 있다.
⚔ 충돌
private void OnCollisionEnter2D(Collision2D other)
{
// GameObject의 name을 이용한 방식
// if(other.gameObject.name == "Ground")
// {
// Destroy(gameObject);
// }
// Tag를 이용한 방식
if (other.gameObject.CompareTag("Ground"))
{
Destroy(gameObject);
}
}
유니티 에디터에서 색상을 변경할 때 다음 이미지와 같이 RGBA의 최댓값은 255다.
하지만 코드에서 Color RGBA의 최댓값은 1.0f 이므로 다음 코드와 같이 255.0f를 나눠줘야 한다.
⚔ Color 변경
SpriteRenderer renderer;
void Start()
{
renderer.color = new Color(100 / 255f, 100 / 255f, 1f, 1f);
}
InvokeRepeating() 함수는 지연시간 후 지정한 주기로 함수를 반복 실행하는 함수다. 반복을 멈추려면 CancelInvoke()함수를 사용해야 한다.
InvokeRepeating("함수명", 지연시간, 반복주기);
CancelInvoke("함수명");
⚔ 함수를 일정 주기로 반복 실행
void Start()
{
InvokeRepeating("MakeRain", 0f, 1f); // 0초 뒤에 1초 간격으로 MakeRain() 함수 실행
// CancelInvoke("MakeRain"); -- 반복을 중지
}
void MakeRain()
{
Instantiate(rain);
}
Invoke()함수는 지연시간 후 한 번 실행하고, InvokeRepeating() 함수는 지연시간 후 지정한 주기로 함수를 반복 실행한다.
InvokeRepeating 참고 사이트
싱글톤 패턴이란 클래스가 단 하나만 존재하는 인스턴스를 갖고, 다른 스크립트에서 쉽게 접근이 가능하도록 전역으로 인스턴스를 사용하는 패턴이다.
⚔ 싱글톤 예시
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
private void Awake()
{
if(Instance == null) // 인스턴스가 없으면
{
Instance = this; // 자신을 인스턴스로 설정
}
else
{
Destroy(Instance); // 이미 있으면 파괴
}
}
}
"N2": 소수점 둘 째자리까지
timeTxt.text = totalTime.ToString("N2");