[SCC] TIL (7)

suhan0304·2024년 8월 23일

SCC - TIL

목록 보기
6/17
post-thumbnail

Date : 2024.08.23


KnifeHit

어제와 이어서 모작해보자.

오늘 이어서 구현할 기능은 아래와 같다.

  • Target Destruction Effect

자세한 개발 내용은 하단의 개발 로그를 참고하자.

(3) : https://velog.io/@suhan0304/Unity-Knife-Hit-3


NIL (New I Learned)

Sprite Segment

하나의 스프라이트를 여러개로 쪼개려고 했는데 포토샵이나 다른 그래픽 툴을 사용해야 할 줄 알았으나 유니티 스프라이트 에디터로도 간단하게 쪼갤 수가 있었다.

Unity Sprite 모드를 Polygon으로 하고 Sprite Editor에서 Custom Outline를 해주면 스프라이트의 원하는 부분만 분할 적으로 가져오는게 가능하다. (Pivot을 움직이지 않으면 분할된 스프라이트들을 한 좌표에 배치하면 하나의 분리되기 전 오브젝트 처럼 보인다.)

분할할 때 일부러 좀 겹치게 Segment를 만들어서 조각들을 모아서 한 곳에 배치했을때 틈 없이 완벽한 하나의 오브젝트처럼 보이도록 하였다.

Pivot

Pivot의 개념을 정확히 알고 가자.조각 오브젝트의 포지션을 사용해 방향 벡터를 구하기 위해 사용하면서 Pivot의 위치를 조절하면서 사용했는데 Pivot이 정확히 어떤 역할인지 자세히 알아보자. Pivot은 쉽게 말해 Position, Rotate의 기준이 되는 점이다. 즉, 오브젝트의 Pivot을 기준으로 오브젝트가 위치 좌표에 맞게 위치한다. 예를 들어 피봇이 오브젝트의 발바닥에 붙어있고 오브젝트의 Y좌표를 0으로 하면? 바닥에 서 있는듯한 효과를 받을 수 있다.

Sprite는 Sprite Editor를 통해 Pivot의 위치를 Custom하게 설정해 줄 수 있지만 별도의 GameObject나 FBX의 Pivot을 변경하는 방법은 유니티에서 근본적으로 지원하지 않는 것으로 알고 있다.

그래서 별도로 Pivot을 잡아줄 수 있는데 Pivot을 변경하고 싶은 오브젝트의 자식 오브젝트로 더미 오브젝트를 만들어서 원하는 Pivot 위치로 변경한다.

더미 오브젝트를 최상위로 올리고 기존 오브젝트를 자식으로 보내면 Pivot 위치를 변경한 듯한 효과를 얻을 수 있다.

StopCoroutine

코루틴을 정지하는 방법에는 여러가지 방법이 있는데, 가장 기초적인 방법은 당연히 String 형태로 넘기는 것이다.

StopCoroutine("myCoroutine");

하지만 항상 언급하지만 string을 인자로 사용하는 방식은 제발 지양하도록 하자. 그래서 주로 사용하는 방식이 IEnumerator 또는 Coroutine 타입의 변수를 선언하고 중단하고자 하는 코루틴을 담아서 사용하는 방식이다.

  • IEnumerator
IEnumerator coroutine;

coroutine = myCoroutine();
StartCoroutine(coroutine);

StopCoroutine(coroutine);
  • Coroutine
 Coroutine coroutine;
 
 coroutine = StartCoroutine(myCoroutine());
 StopCoroutine(coroutine);

Coroutine 타입 변수를 사용하면 IEnumerator과는 다르게 StartCoroutine의 반환값을 변수에 담아서 사용한다.

두 방식의 성능 차이는 크게 없지만 Coroutine 변수 선언 방식을 좀 더 권장하는데, StartCoroutine 반환 객체를 사용하는 명확한 코루틴 관리가 가능하기도 하고, IEnumerator의 방식의 경우 다중 코루틴의 경우, 각각의 코루틴을 정확히 중지하기 어려워질 수 있기 때문에 Coroutine 방식을 사용하는 것이 권장된다.


원래 아래 내용들도 오늘 구현하려고 했는데 이 Segment 부분에서 시간을 많이 잡아먹혀서 추후에 이어서 개발하도록 하자.

  • 점수 시스템 구현
  • 타이틀 Scene 구현
  • 게임 오버 기능 구현
profile
Be Honest, Be Harder, Be Stronger

0개의 댓글