C# Unity

장현태입니다·2025년 4월 14일

※ 학습내용을 바탕으로 작성하여 틀린 사항이 있을 수 있습니다.

Unity Hub에서 유니티를 생성하게 된다면 처음 나오는 화면이 이런 모양으로 보인다.

1 → 유니티의 화면에 보이는 기능들 + 이외의 필요한 기능들을 찾을 수 있는 곳

2 → Scene과 Game씬으로 Scene에서 설계한 게임이 Game씬에서 출력하는 곳

3 → LayOut으로 화면의 배치를 바꿀 수 있는 기능을 가진다

4 → Hierarchy - 계층구조로 씬에 배치된 오브젝트들의 목록을 볼 수 있다

5 → Inspector - Hierarchy 및 파일의 오브젝트들의 구성을 볼 수 있다.

6 → Assets - 오브젝트, 스크립트 등 게임의 객체들을 관리

7 → 씬들의 기즈모, 칸 마다 정렬 등등 게임의 기능들을 실험과 조정을 가능하게 해주는 기능을 가진다.

자주쓰는 메시지함수

void Awake()

  • 스크립트가 씬에 포함 되었을 떄 1회 호출
  • 맨 처음 시작할 때 실행(존재시 호출)

void Start()

  • 게임시작 직전에 1회 실행

void Onenabled()

  • 실행마다 호출
  • 활성화시 호출

void update

  • 프레임마다 호출

void LateUpdate()

  • update 실행 뒤에 호출

void FixedUPdate()

  • 일정 시간마다 호출

void OnDestroy()

  • 오브젝트가 삭제될떄 1번 호출

Unity 실습

플레이어 제어 및 Component

물리 충돌에 대한 기능은 구현하지 않아 collider에 istrigger는 해제해줬다. 코드를 확인해보면 Input.GetKey(KeyCode.해당키)를 사용해 rigidbody를 참조하여 AddForce를 사용했는데 이때 AddForce의 매개변수에 Vector3의 방향을 제시해주고 ForceMode.Force를 사용해주어서 Player의 움직임을 제어해주었다.

🤔RigidBody를 참조할 경우 script를 적용한 오브젝트에 rigidbody가 있어야함

ForceMode

  • ForceMode.Force : 가속 적용 O + 무게 적용 O
  • ForceMode.Acceleration : 가속 적용 + 무게 적용 X
  • ForceMode.Impulse : 가속적용 X + 무게 적용 O
  • ForceMode.VelocityChange : 가속적용 X + 무게적용 X

두번쨰 씬은 아날로그 시계를 구현하였다 단, 해당 시계가 시간마다 흐르는것이 아닌 시간을 지정하면 시침, 분침의 가르키는 방향만 구현하였다.

오브젝트의 자식객체의 자식을 설정하여 MMin,HHour을 기준으로 각도를 회전하도록 설정하였다. 유니티 에러로 인해 m_Center의 변수명이 center로 되었다.

회전은 객체의 Transform을 가져와 변수명을 설정해주어 해당 객체의 각도를 가져왔다

다른 방법으로 GameObject를 설정해서 update에서 오브젝트마다 transform을 붙여주면 같은 결과를 볼 수 있다.
그 후, 오브젝트에 해당하는 각도를 Quaternion.Euler를 통해 Y축을 중심으로 임직여야 하기에 x,z의 값은 0, Y값은 각각 m_Time 6°로 (분침은 1분당 6°)설정, h_Time 30°(시침은 1시간당 30°)로 설정해주었다.

0개의 댓글