본문 바로가기

Unity/Unity2D_Flat

Unity2D - 장애물구현

1.몬스터와 장애물간 충돌 무시

 

(1) - 가시장애물에 Polygon Collider를 주고 Layer를 anemy로 설정

    - monster오브젝트의 Layer도 anemy로 설정

 

 

(2) - Edit -> project settings 에서 Layer collision Matrix 의 anemy/anemy 체크해제

       (Layer가 anemy인 오브젝트끼리는 충돌을 무시한다)

 

 

2.몬스터와 장애물에 플레이어가 충돌했을때

 

(1) - 몬스터와 장애물의 tag를 모두 anemy로 설정

(2) - Player가 tag가 anemy인 오브젝트와 충돌했을때 이벤트 함수를 player script에 작성

       (넉백, Player 색 투명하게)

 

(3) - player가 넉백 상태일때 무적상태로 만들어 anemy와 충돌무시 구현

 

 

(4) - ondamaged() 함수를 생성해서 리펙토링

 

(5) - 넉백 2초후 무적상태가 해제 되도록 만들기

 

 

 

3.넉백 애니메이션 만들기

 

(1) - 기존 sprite에서 점프모션 이미지 2개를 Player 오브젝트에 드로그앤 드랍(2개 이미지 이상 끌어놔야 애니메이션 파일 생성됨)

 

(2) - window -> animation에서 damaged 애니메이션파일을 선택하고 기존의 가져온 2개의 이미지중 1개를 삭제하고

       2번째 이미지를 복붙해서 하나더 만든다음 재생할 시간(0.05초) 만큼 뒤에 같은 이미지를 드로그앤 드랍

 

(3) - Damaged 애니메이션 의 Loop Time을 체크해제 하고 

 

(4) - Animator에서 파라미터로 Trigger값의 isdamaged를 생성

      (Trigger : 방아쇠 역할의 매개변수 , 값이 없다는 것이 특징)

    - Any State와 Exit 사이에 damaged 애니메이션을 놓고 각각을 연결

      (어떤 상태의 애니메이션에서든지 조건을 만족하면 damaged 상태로 넘어갔다가 Exit즉 바로 종료한다는 것)

    - Any State ->>damaged 설정

     (Has Exit Time 체크해제 , 다른 애니메이션과 겹치는 구간 없게, Conditions에 isdamaged 파라미터추가)

 

(5) - damaged -> Exit 설정

(Has Exit Time 체크 : 그래야 damaged 애니메이션이 자기가 가진 0.5초의 애니메이션을 실행한 후 종료됨)

 

 

(6) - 장애물과 충돌시 애니메이터의 isdamaged 파라미터가 on되도록 스크립트 작성