
오늘은 유니티의 배경과 TileMap을 알아보자
먼저 Window -> 2D -> Tile Palette를 선택해주고

패킹되어 있는 스프라이트를 가지고와서

새로운 파레트를 생성 해준다
그리고 나눠진 스프라이트들을 가져와서

팔레트에 넣어주고 원하는 이미지를 Scene에 가져오면 된다
1) Paint with Active brush
그냥 눌렀을 때 이미지가 그려짐

2) Paint a Filled box
범위를 마우스로 드래그해서 지정해줌

3) Erase
그려진 타일을 지울 수 있다.

여러개 비슷한 모양의 타일을 만들고 싶다면,

다음과 같이 Rule Tile로 타일의 오브젝트를 생성하고,

원하는 방향으로 자동 생성 될 수 있게 형식을 짜준다.
이렇게 만들고 tile Palette에 넣어서 편하게 사용하면 되는데 맨위의 스프라이트가 팔레트에서 보여지는 스프라이트로 저장된다.

드래그 한다면 다음과같이 그려진다.
여기서 하나하나의 타일에 collider가 적용되면 게임의 성능에 영향이 클것이므로 타일의 테두리에만 collider를 적용하는 형식으로 해주면 성능 면에서도 좋을것이다.

그러므로 해당하는 부분의 콜라이더를 composite collider 2D로 적용 해주고,

그외에 trigger나 다른 Effector를 사용하기 위해서 따로 지정해주었다.
실습
Player와 몬스터의 체력을 만들고 플레이어의 공격(애니메이션 이벤트 사용)이 OverlapCircle을 범위 안에 맞게 된다면 데미지가 적용하도록 구현하였다. + UI체력바







trigger를 사용해서 사다리의 레이어와 W,S키를 누를시 해당 InputY의 값에 따라 움직이도록 설정하였다.


이전의 TPS게임과 비슷하게 IDamagable 인터페이스를 받아와서 hit가 된 circle범위 안에 오브젝트를 가져오는 AttackSearch()에서 IDamagable 오브젝트를 반환하고, 이를 Attack()에서 해당 오브젝트가 null이라면 return하고, IDamagable을 가진 객체가 있다면 데미지를 주도록 설정하였다.


실행


벡터의 내적과 애니메이션 이벤트
벡터 : 특정한 공간에서 방향과 크기를 표현
스칼라 : 크기만 가지는 값
벡터의 정규화 : 현재 벡터의 방향을 유지한채, 벡터의 길이를 1로 만드는것 -> 1이 된 벡터 == 단위벡터 벡터의길이/벡터의 각 원소 ** 정확히 벡터의 방향만을 추출하고 싶을 때 사용
잘 모르지만 사용처)
캐릭터 - 이동위치 -> 이동위치가 멀면 멀수록 캐릭터가 빨리 움직이는 벡터의 특성(가까우면 캐릭터가 느리게 움직임)
그러므로 캐릭터 - 이동위치를 정규화 시키고 단위벡터(크기가1이므로 방향만 가지는 벡터)로 만든후 이동속도를 곱하여 일정한 이동속도를 만들 수 잇음
벡터의 내적 : 스칼라값을 내는 계산(벡터와 스칼라의 곱셈은 아님)
ex) U V= UxVx + UyVy = |U| |V| * cosθ
내적의 값 = 0 두 벡터는 90도
내적의 값 > 0 두 벡터는 90도 보다 작음
내적의 값 < 0 두 벡터는 90도 보다 큼