개발/Unity

유니티 간보기 - 골드메탈 2D 따라하기_피격이벤트

huiyu 2022. 2. 5. 14:06

아래영상 참고

https://www.youtube.com/watch?v=epZFE5Hpbdc&list=PLO-mt5Iu5TeZGR_y6mHmTWyo0RyGgO0N_&index=7&t=40s 

 

- 함정(가시)추가
  1) tilepallete에 가시이미지 추가 (Window-2D-Tile Pallete)
  2) 새로운 타일 맵 추가후 가시이미지 배치, 레이어/태그 'Enemy'추가.
  3) Edit-Project Setting-Physics 2D에서 충돌 무시할 레이어 체크
     - Enemy:Enemy 사이는 충돌 무시
     - PlayerDameaged(무적상태) : Enmey 사이 충돌 무시

 - 충돌 이벤트 설정
  1) 객체간 충돌은 OnCollisionEnter2D 콜백함수를 이용.

    void OnCollisionEnter2D(Collision2D collision)
    {
        Debug.Log("맞음");
        if (collision.gameObject.tag == "Enemy")
        {
            OnDamaged(collision.transform.position);
        }
    }

    void OnDamaged(Vector2 vec)
    {
        gameObject.layer = 9;
        Debug.Log("맞음");

        spriteRenderer.color = new Color(1, 1, 1, 0.4f);
        int dirc = transform.position.x - vec.x > 0 ? 1 : -1;
        rigid.AddForce(new Vector2(dirc, 1)*7, ForceMode2D.Impulse);

        //Animation
        animator.SetTrigger("doDamaged");
        Invoke("OffDamaged", 3);
    }

    void OffDamaged()
    {
        gameObject.layer = 10;
        spriteRenderer.color = new Color(1, 1, 1, 1);
    }

    1) Player:Enemy 충돌 발생시 AddForce를 통해 뒤로 밀어내기, Color alpha값으로 충돌 피드백 주기, PlayerDamaged(무적)상태 만들기
    2) Invoke()함수로 3초 뒤 원 상태로 돌리기
    3) SetTrigger를 통해 애니메이션 트리거 시키기

- 충돌시 애니메이션 설정

  1) Any State, 어떤 상태에서든 동작
  2) PlayerDamaged 상태로 변경. doDamaged란 트리거를 추가해서 발동시키기.

  '+' ->'Trigger'로 추가하기.  doDamaged로 설정
 3) AnyState->PlayerDamaged사이의 연결선 컨디션을 아래와 같이 Trigger가 발동할 때로 설정하면 됨.

 4) PlayerDamaged->Exit 사이 연결선은 아무 설정도 안하기
  - 이렇게 두면 PlayerDamaged 애니메이션이 종료되면 자동으로 Exit로 변경된다. 단, PlayerDamaged의 애니메이션 loop설정을 해제할 것.

여기까지 완성!

 

728x90
반응형