유니티 TIL

유니티 내일배움캠프 18일차 TIL : 유니티 입문 강의 듣기

부엥 2024. 10. 8. 21:05


 

GetAxis / GetAxisRaw

GetAxis만 쓰면 바로바로 멈추지 않는 느낌이 들 수 있는데, Raw를 붙이면 해결된다.

강의 내용만으로는 잘 이해가 가지 않아 찾아보았다.

 

키보드, 조이스틱의 입력을 받을 때

GetAxis는  -1 ~ 1 사이의 값을 반환

GetAxisRaw스무스 필터링이 적용되지 않아 -1, 0, 1 을 반환

 

일정한 속도의 움직임 >> GetAxisRaw

빨라졌다 느려졌다가 있는 움직임 >> GetAxis

 


 

InputManager / New Input System

InputManager 

다양한 플랫폼에 대응 어려움, 게임에서 키셋팅 변경 불가

확장성, 유지보수성 떨어짐

 

 

입력 처리와 실제 로직 주체를 분리하여

기능별로 클래스를 나누기

>> 객체지향 프로그램에서 단일 책임 원칙(Single Responsibility Principle)이라 한다.

(클래스는 하나의 기능이나 역할을 수행해야 하며 그 기능과 관련된 변경만이 해당 클래스를 수정하게 해야 한다.)

 

 

 

New Input System

핵심 개념

  Input Action : 입력 행동을 정의 (점프, 공격 등) 하고, 키 또는 버튼을 정할 수 있다.

  Input Action Asset : ㄴ> 여러개의 입력 행동을 그룹화해서 관리. 

  Player Input Component : 자동으로 입력행동을 처리

 

장점

  Cross-Platform Compatibility

  Rebinding : 플레이어가 게임 내에서 키세팅 변경

  Multiplayer Support

 


TopDownController

Action, 옵저버 패턴..?Invoke, PubSub패턴


더보기

픽셀 이미지 넣기

이미지 설정

Filter Mode : Point(no filter)

Compression : None

 

Pixel Per Unit을 1 유닛 당 1픽셀로 하면 좋다는데 >>이렇게하면 32x32이미지가 1920x1080에서는 많이 작긴 하다

강의의 패키지는 32x32이미지가 2유닛으로 설정되어 있길래 강의를 따라해보았다.


Create >> Input Actions

Move : Vector2로 표현가능

Look : Vector2로 표현가능 (마우스 위치에 따라 보는 것) 

Fire : 눌렀다 안 눌렀다

 

Move, Look : 액션 타입 Value, 컨트롤 타입 Vector 2

Fire : 액션타입 Value,  컨트롤 타입 Any 

 

더보기

MainSprite에는 Sprite Renderer

Player에 RigidBody2d, Player Input >> 위에서 만든 TopDownController

Player Inputd의 Behavior

 

Send Messages: 같은 게임 오브젝트의 모든 컴포넌트에 뿌려지는 메세지 (이벤트 함수처럼 발생?)

Broadcast Messages: 같은 게임 오브젝트와 그 자식 게임 오브젝트의 모든 컴포넌트...

                                    (성능 문제로 추천하지 않음, Send messages를 받아서 넘겨주거나,

                                    Invoke Unity Event를 통해서 넘겨주는 방법을 추천하심)

Invoke Unity Events: 버튼 같응거

Invoke C Sharp Events: PlayerInput.OnActionTriggered

 

더보기

Unity Event??가 뭔데..

특정한 동작이나 상황이 발생했을 때  실행되는 메커니즘.

사용자의 입력, 게임 오브젝트의 상태 변화, 게임 내 특정 조건이 충족될 때

UnityEvent, Input Event, UI Event로 구분된다.


더보기

Ctrl + .


더보기

캐릭터가 왜 안움직이지 했는데...

PlayerInputController스크립트에 OnMove가 Onmove로 쓰여있던거임...

흑흑ㅎ긓ㄱ흑흑흑흑흑흑😭😭😭😭😭😭


 

 

🤔A가(0,0)이고 B가(1,1)일때

A - B를 하면 (-1,-1)이 되기 때문에 B - A를 한다고 하셨는데 왜 -1이 되면 안되지?

 

캐릭터(A), 마우스 포인터의 위치(B)라면

A가(0,0)이고 B가(1,1)일때

B - A 를 해야 A에 대해 B가 어디로 얼마나 떨어져있는지 알 수 있다.

B - A 하면 (1,1)이고 이건 B가 A로부터 오른쪽, 위쪽으로 1만큼 떨어져있다는 뜻이 된다.

 

A - B를 하면 마우스 포인터에서 캐릭터로, 반대의 것을 구하는 거라 안 되는 거였당.🤓


충돌!!

 

충돌 발생 시

OnCollisionEnter, OnCollisionStay, OnCollisionExit등의 이벤트 발생. (2D는 뒤에 2D붙임)

 

BoxCollider, SphereColider같은 3D콜라이더가 붙어있는 오브젝트에는 2D충돌이 일어나지 않음.

(2D가 붙지 않은 것은 3D라는 것) 

반대의 경우에도 마찬가지.

 

Collision이 있고 Trigger가 있음

Trigger는 물리적인 충돌이 아닌 것. 이벤트만 발생 (아이템 획득, 구역 진입 등에 사용)


타일맵

잼다.


과제시작

강의 진도를 나가면서 과제에 적용되는 내용이 있다면 바로 복습해보기 위해 또 일단 시작했다.

절대로 삼각함수 부분을 보다가 그만 보고싶어서 시작한 게 맞다.

 

고양이 에셋이 있어서 당장 받아보았다.

아직은 wasd로 움직이기까지만 된다.

 

타일맵...재밌다.........하루종일 찍고 싶다.