본문 바로가기
개발자가 되어보자..공부공부

C# 유니티 공부 6 - 2D 제작(Spriter, 이미지 애니메이션 적용, 좌/우 이동, 2단 점프, 레이캐스트)

by 묭묭이와소담이 2022. 12. 5.
반응형


2d....

1. spriter 생성
spriterender

2. 아틀라스?? 이미지 삽입
이미지 inspector에서 픽셀 수, 내가 사용하는 이미지에 맞추어서 수정.
rigidbody, boxcolider (2d)로 삽입.

너무 작은 이미지의 경우 spriter간의 약간의 간극 발생.
edit - project setting - Default Contact Offset 수정(최소 0.0001)

------------------------

1. 아틀라스 자르는 법.
이미지 inspecotr에서 sprite editor 클릭.

2. sprite 애니메이션 만드는 법.
애니메이션으로 만들 이미지를 전체 클릭 후 , 드래그하여 player hierachy에 이동.
저장하면 애니메이션 자동 생성.

window-animation-animation
키 프레임 조절 가능.

애니메이션 재생을 원하지 않으면, 생성한 애니메이션 파일에서 Loop Time 을 꺼주면 됨.

window-animation-animator

애니메이션 흐름 등 조절 가능. (set as layer default animation : 기본 애니메이션으로 세팅)
애니메이션 속도도 조절 가능. (키프레임 이동이랑 동일한 효과 - 더 간단)

최대속도 조정. (if문)
forcmode는 가속도이기때문에 속도가 무한하게 붙기때문!

마찰은 0으로 해주고...
rigdbody - liner drag(공기저항??) 을 조금 늘려주기.
(저항을 너무 많이 설정하면, 점프에서 내려 올때도 저항이 생기기 때문에 적당히..)
좋은 조작감을 위해서라면, horizontal key를 떼었을 때, 속도를 줄이게함.
(마찰이 0이기 때문에 미끄러지는 것을 방지, 또한 플레이어가 딱 멈추게 하기 위해서.)
velocity.normalized 는 벡터 크기를 1로 만든 상태(단위벡터)화 시키는것.

rigidbody - constraints - Freeze Rotation (오브젝트 회전을 얼리는 옵션)
-------------------------------------------------
sprite Render. Flipx / Flipy - x축. y축을 기준으로 반전
bool형 함수이며 기본값은 false.
2가지 방법.

if (Input.GetButton("Horizontal"))
sprite.flipX = Input.GetAxisRaw("Horizontal") == -1;

--------------------------------------------------
if (rigid.velocity.x < 0)
sprite.flipX = true;
else
sprite.flipX = false;

----------------------------

애니메이터에서 transtiton 후, 파라미터 추가(변수명)
기존 애니메이션 inspectors에서 아래 transitions - conditions에서 다음 애니메이션을 넣어주고 true
Has Exit Time 체크표시 해제. (애니메이션이 끝날때까지 재생하겠는가? - no!)

idle상태, 걷기 상태 서로 transtion 하여 false로 하고 나머지 동일하게 설정.

Animator 컴포넌트 클래스 추가. 초기화도!
그리고 함수는 Animator.SetBool(파라미터명, true or false)
여기선 iswalk(즉, 걷고 있나?)라는 것을 파라미터명으로 했으니 멈추었을떄 false.
(헷갈릴떈 이렇게 생각하믄됨)
GetBool은 어떤 변수의 bool형을 가져오는 함수.

mathf() - 수학함수. (절대값 등)

혹시 캐릭터가 지형지물에 걸리는 것 같으면, BoxCollider -> Capsule Coliier로 변경해주면됨.
(충돌 반경 사이즈 문제.)

--------------------------------------------
점프 애니메이션도.. 동일하게 했지만
방법은 여러가지 인듯.


*레이캐스트
어떤 오브젝트를 확인하고 싶을 때, 감지하고 싶을 때..
실제 게임에선 표시 되지 않음.
ex. 바닥에 맞닿아 있는 것을 확인하고 싶을 때


반응형

댓글