재미있는 실감미디어

꿈꾸는대로 만들어집니다.

유니티기초[유니티 기초]35_유니티 충돌 확인 - 콜라이더 충돌 판정

김혜영
2020-04-25
조회수 1091

유튜브 35 - https://youtu.be/kycMLfZho_4


안녕하세요~ 오늘은 드디어 게임의 핵심이 되는 충돌 판정을 배워보도록 합니다~ 두둥~


오늘 배울 내용은 다음과 같습니다.

  • 게임 오브젝트 만들고 콜라이더와 리지드바디 적용하기
  • 충돌 판정 스크립트 적용하기 - OnCollisionEnter2D
  • 충돌 Enter, Stay, Exit 살펴보기


먼저 충돌 감지를 위해 임이의 게임 오브젝트를 하나 만듭니다. 여기서는 임의로 캐릭터 이미지 하나를 추가하여 크게 만들고, 두 캐릭터가 충돌하는지 여부를 살펴보도록 하겠습니다. 이름은 Enemy로 해주도록 합니다. 공중에 떠 있으면 안되니, 리지드바디를 추가하고, 캐릭터가 서로 물리적인 충돌을 할 수 있도록 콜라이더를 추가해줍니다. Enemy의 Tag도 Enemy로 등록하여 설정합니다.


Tag를 등록하는 방법은 다음과 같이 Add Tag 를 클릭하고, +를 눌러 태그를 추가한뒤, 적용하면 됩니다. 잘 모르시겠으면 영상을 참고하세요~


이제 PlayerController 스크립트에 다음의 코드를 입력하고 테스트 합니다. ^^ 캐릭터가 충돌할 때마다 충돌이라는 텍스트가 출력됩니다. pring( ) 함수도 해당 내용을 출력해주는 역할을 합니다. OnCollisionExit2D 메서드를 이용하여 Enemy 태그를 가진 오브젝트와 충돌했는지를 확인해주는 것을 볼 수 있습니다. 생각보다 코드가 너무 간단하고 쉽지요^^

    // 충돌 판정

    void OnCollisionEnter2D(Collision2D other) {

        if (other.collider.tag == "Enemy") {

            print("충돌~");

        } 

    }


OnCollisionExit2D를 좀더 살펴봅니다. 다음과 같이 코드를 작성해 봅니다. 테스트를 해보면 쉽게 이해할 수 있을 거에요. 그동안 어려운 고비도 있었지만.. 좀 재미있지 않나요^^

    // 충돌이 시작되는 순간 호출

    void OnCollisionEnter2D(Collision2D other) {

        if (other.collider.tag == "Enemy") {

            print("충돌 Enter~");

        } 

    }

    // 충돌이 되고 있을 때 매 프레임마다 호출

    void OnCollisionStay2D(Collision2D other) {

        if (other.collider.tag == "Enemy") {

            print("충돌 Stay~");

        } 

    }

    // 충돌이 끝날 때 호출

    void OnCollisionExit2D(Collision2D other) {

        if (other.collider.tag == "Enemy") {

            print("충돌 Exit~");

        } 

    }


오늘도 엄청 수고하셨습니다. 35강까지 같이 따라온 분이면.. 엄청 대단한 인내심, 성실한 분일거에요. 이걸 하고 있는 저도 성실하구요 ㅎㅎㅎㅎ

우리 100일이 되면 정말 간단한 캐주얼 게임은 만들 수 있을 것 같습니다. 그럼.. 정모 한번 해도 좋을 듯 하네요^^ 코로나 잠잠해지면요^^

1 0

매일 한알의 마늘처럼 하나의 미션 수행!

동굴뛰쳐나가지 않고 매일 하나의 마늘을 먹기!!!

게임이나 VR, AR 에 유니티가 언리얼과 같이 많이 사용된다고 듣긴 했지만 나와는 관계없는 프로그램 같았습니다. 그러다가 우연한 계기로 게임 디자인을 하면서 유니티에 관심이 생겼습니다. 


자바스크립트가 유니티와 연동된다고 하니, 유니티가 매력있게 다가왔습니다. 유니티까지 활용한다면 작업 영역의 확장 뿐만 아니라 재미있는 콘텐츠를 제작할수 있겠다는 가능성이 보였습니다.


내가 기획하고, 디자인하고, 개발까지 하여 하나의 게임 앱을 만들수가 있다니! 얼마나 달콤한 유혹인지 모릅니다. 물론 수 많은 산을 넘고 에러를 넘고, 오류를 넘어야 하는 것은 각오를 해야 합니다. 그럼에도 불구하고 무척 매력적 입니다. 인고의 시간을 지나면 나는 상상력을 구현할수 있는 하나의 툴을, 도구를 장착할수 있는 것입니다. 아!이!언!맨! 처럼 말이지요!!!


카카오프로젝트 100은 게으른 저를 동기부여해 줍니다. 당장 통장에 계좌가 찍히는 일은 열심히 하게 되지만, 새로운것을 공부할 때는 의지가 참 약해지고 용두사미가 됩니다. 그런 의미에서 카카오프로젝트 100은 100일동안 의지를 불태울수 있는 작은 동기가 됩니다. 카카오프로젝트 시즌1에서는 자바스크립트 기초를 정리했습니다. 

시즌 2에서는 새로운 공부를 도전합니다. 바로 유!니!티!


여러분 생각은 어떤가요?

top