본문 바로가기

내배켐 Unity TIL

(38)
Unity 27일차 TIL - Unity 팀 프로젝트 4 (RigidBody 2D) 이런저런 방법들을 다 써봤지만 RigidBody가 붙어있는 두 Object의 물리적 영향을 막을 수 있는 방법을 아직은 몰라서그냥 이동만 구현하는 Paddle 쪽에 RigidBody2D를 빼고, 기존에 Velocity로 이동을 구현했던 부분을 tarnsform의 position을 변경해 주는 식으로 구현을 했다. 이렇게 해도 한 가지 문제가 아직 남아 있는데, Ball이 Paddle 끝 쪽에 충돌이 됐을 때 MouseCursor 방향으로 Vector2가 생성이 되는데 이렇게 되면 Ball이 Paddle에 끌리듯이 이동하다가 나가는 현상이 있었다. 그래서 Ball의 Position이 Paddle의 모서리에 닿는 y 값을 찾아서 그때는 Vector2로 가는 게 아니라 Collider 충돌만 받게 해 가지고 ..
Unity 26일차 TIL - Unity 팀 프로젝트 3 (RigidBody 2D) 3일을 두 Object의 RigidBody 충돌을 어떻게 제어할 수 있는지 고민하고 시도하고 고민하고 시도했던 부분을 아직 완전하게 해결은 못했지만 어느 정도 꼼수를 이용해서 구현했다. 문제였던 부분은 Ball이 내려올 때 Paddle의 옆면에 치이게 되면 Ball의 속도가 증가하게 된다.그래서 RigidBody를 둘 다 적용했지만 한 Object에는 영향을 받지 않게 설정을 해주고 싶었는데 이 부분을 아무리 찾아봐도 답이 없었다. 그래서 생각해낸 게 Ball이 충돌감지를 했을 때 그 Layer가 Paddle인 경우와 Paddle이 충돌감지를 했을 때 그 Layer가 Ball인 경우에는 Ball과 Paddle의 RigidBody2D의 Velocity를 zero로 먼저 넣어주고, 그 뒤에 원래 넣으려고 했..
Unity 25일차 TIL - Unity 팀 프로젝트 2 (GetComponent<>) 오늘은 Item을 생성하기 위해서 다른 분이 만들어두신 코드를 봤다.ObjectPool로 Brick들을 생성해 주고, Ball과 Brick의 충돌을 구현해 주셨다.Brick의 Hp가 0이 될 때 SetActive(false)를 통해서 Object를 제외했다. Item이 생성될 때 제외된 Brick들의 Position에서 생성을 하면 좋겠다고 생각을 했는데, 막상 구현해 보려고 해보니 생성된 각 Brick들에 어떻게 접근해야 될지가 문제였다. 처음에는 싱글톤으로 만들었던 GameManager에서 List 변수를 만들어서 SetActive(false)를 구현하는 곳에서 Add 시키려고 했지만, 뭔가 싱글톤을 쓰고 싶지가 않았다. 왜인지는 아직까지도 모르겠다...... 그래서 어떻게 하면 넣을 수 있을까 고민..
Unity 24일차 TIL - Unity 팀 프로젝트 1 (마우스 Position) 오늘은 팀 프로젝트 1일 차이다. 팀원들과 회의 끝에 구현할 기능들을 나열해 보니 생각보다 할만한 것 같아서 블록 깨기 게임을 선택했다. 가장 먼저 Ball과 Paddle의 움직임을 구현하면서 여태 외워서 썼지만 잘 이해하지 못했던 개념들을 이해할 수 있는 시간이었다. Ball이 Paddle에 닿았을 때 Mouse 커서 방향으로 Ball이 향하도록 게임 방식을 설정했는데, 이때 Input System을 통해서 MouseCursor의 Position 값을 받아오게 끔 설정했다.기존에 TopDownViewGame을 만들 때처럼 Action이 실행될 때 InputValue를 받아와서 Vector2로 값을 받고, camera.ScreenToWorldPoint(Vector2 InputValue)를 통해서 월드 좌..
Unity 23일차 TIL - Unity Canvas 2D 프로젝트를 진행하면서 UI를 사용하는 부분들이 많았었는데 알아뒀으면 좋았을 부분들을 배우게 됐다. 1. Canvas Scaler해상도가 달라졌을 때 UI 크기를 조정하는 컴포넌트이다.- Constant Pixel Size : UI를 지정한 픽셀의 사이즈로 조정한다.- Scale With Screen Size : 해상도 크기에 맞게 스케일을 조정한다. (Trnasform에 있는 Scale)- Constant Physical Size : UI를 지정한 물리적 사이즈로 저장한다.(사용 비추) 해상도 크기에 맞게 스케일을 조정하는 옵션을 사용하게 되면 Reference Resolution에 X와 Y 값을 입력하는데 기존 작업하던 해상도 크기를 넣어주면 된다. 그러면 해상도가 크기가 작아지거나 더 커지더라도..
Unity 22일차 TIL - Unity 2D 프로젝트2 이전에 고민했었던 NPC 대화를 구현하고 TileMap에 Text도 월드 좌표로 추가 했다. NPC는 Collider를 통해서 구현했는데 기존에 만들어뒀던 TileMap에 새로운 TileMap을 하나 추가해서 Collider를 추가한 뒤 isTriger를 적용했다. 그리고 원하는 부분에 블록을 채워넣고 Script를 만들어서 OnTriggerEnter일 때 NPC UI가 뜰 수 있도록 [SerializeField]를 이용해서 UI의 GameObject를 넣어준 뒤 SetActive(true)로 변경해서 UI 창이 보이도록 만들었다.그 뒤에는 버튼들을 이용해서 오브젝트들을 넣고 SetActive를 변경해주면서 새로운 UI가 생기고, 기존의 UI는 사라지게끔 만들었다. 주어진 기능들을 다 구현하려고 했고, ..
Unity 21일차 TIL - Unity 2D 프로젝트1 오늘은 개인 과제로 하고 있는 것 중에서 참석인원 UI와 NPC 대화를 제외하고 다 구현했다. 진행하면서 다른 Script에 있는 Class를 사용하고 싶어서 처음에는 [SerializeField]를 사용해서 필요한 오브젝트들을 추가하는 식으로 진행하다가 변수 하나 찾으려고 오브젝트를 넣는게 비효율적인 것 같아서 변수를 static으로 변경해서 사용했더니 신세계였다. 물론 좋은 방법인지는 모르겠지만 일단 완성을 목표로 진행할 것 같다. 그리고 버튼을 사용하면서 기존에 있던 Script들을 재활용하고 필요한 오브젝트들을 찾아서 넣어주는 부분이 은근 헷갈리는 것 같다. UI를 사용하는 도중 TMP - TextMeshPro가 붙어있는 오브젝트들은 Text class로 받아오는 것이 아니라 TMP_InputFi..
Unity 20일차 TIL - Unity(InputSystem을 이용한 캐릭터 이동) 1. 편한 관리를 위해서 Assets 폴더에 Input 폴더를 하나 생성해준다.2. Create -> Input Actions (맨 밑에)으로 Input Action Asset을 생성해준다.3. Input Action Asset을 실행한 뒤 ActionMpas를 하나 추가해주면 Actions도 하나 추가된다.4. Component - Player Input에서 Behavior : Send Messages를 사용할 때 Actions에서 설정해둔 이름으로 함수를 호출 할 수 있다. 여기서는 Move로 이름을 설정해뒀기 때문에 움직일 때 호출 받는 함수는 OnMove로 사용한다.ex) 만약에 Move가 아니라 MoveInput이라고 이름을 설정했다면 OnMove가 아니라 OnMoveInput으로 사용하면 된다..