유니티 Platform Effector2D 관통되는 바닥만들기

2021. 4. 16. 15:05유니티실습

반응형
728x170

 

안녕하세요 유니티 비기너입니다.

이번 시간에는 Platform Effector2D 컴포넌트를 활용하여 슈퍼마리오와 같은 관통이 되는 바닥을 만들어 보겠습니다.

(유니티 버전 2019.3.7f1으로 실습을 진행했습니다.)

※ 해당 내용은 Platform Effector2D 활용방식 중 하나를 간단하게 풀이한 내용이므로 적용 시에는 여러 가지 변수들을 고려하셔서 응용하시면 됩니다.

 

Platform Effector2D 

Platform Effector 2D는 단방향 충돌, 측면 마찰 / 바운스 제거 등과 같은 다양한 "플랫폼"동작을 적용합니다.

이펙터와 함께 사용하는 충돌체는 일반적으로 다른 충돌체가 충돌할 수 있도록 트리거로 설정되지 않습니다.

 

샘플 화면

결과 화면

AD 키로 좌우로 이동하며 SPACE 입력을 통해 점프합니다.
S 키를 이용하여 특정 구조물에서 내려올 수 있습니다.

한 번에 보기

1. 이미지 준비하기

2. BoxCollider2D 적용하기

3. Platform Effector2D 적용하기

4. 스크립트 생성 및 오브젝트에 추가

 

 

1. 이미지 준비하기

이미지는 통 이미지를 준비했습니다.

벽돌 모양은 관통이 되지 않는 오브젝트, 그 외 사각형 구조물은 관통이 되는 오브젝트로 작업을 진행하겠습니다.

 

2. BoxCollider2D 적용하기

빈 오브젝트를 생성하고 BoxCollider2d 컴포넌트를 각각 적용하였습니다.

 

3. Platform Effector2D 적용하기

Platform 1, 2, 3에 해당하는 오브젝트에 Platform Effector 2d 컴포넌트를 각각 추가합니다.

Use One Way를 체크해주시고 Surface Arc를 75로 수정합니다.

※ 위와 같은 경고문이 출력되면 Boxcollider 2d 컴포넌트의 Used By Effector를 체크해주세요

Platform effector 2d 각각의 기능은 아래 출처에 자세하게 설명되어있습니다.

https://docs.unity3d.com/kr/530/Manual/class-PlatformEffector2D.html

 

유니티 - 매뉴얼: 플랫폼 이펙터 2D

플랫폼 이펙터 2D The Platform Effector 2D applies various “platform” behaviour such as one-way collisions, removal of side-friction/bounce etc. Colliders that you use with the effector would typically not be set as triggers so that other collider

docs.unity3d.com

 

4. 스크립트 생성 및 오브젝트에 추가

public class PlatformScript : MonoBehaviour
{    
    bool playerCheck;
    PlatformEffector2D platformObject;
    
    void Start() {
        playerCheck = false;
        platformObject = GetComponent<PlatformEffector2D>();
    }
    
    void Update() {
        if (Input.GetKeyDown(KeyCode.S) && playerCheck) {
            platformObject.rotationalOffset = 180f;
        }

        if (Input.GetKeyDown(KeyCode.Space)) {
            platformObject.rotationalOffset = 0f;
        }
    }
    private void OnCollisionEnter2D(Collision2D collision) {
        playerCheck = true;
    }

    private void OnCollisionExit2D(Collision2D collision) {
        playerCheck = false;
    }
}

'S' 키를 입력하면 플랫폼의 표면을 정의하는 호의 각도를 반전시켜 떨어지게 만들고 점프 시 다시 반전시킵니다.

스크립트를 작성했다면 Platform 1, 2, 3 오브젝트에 스크립트를 추가하고 결과를 확인합니다.

 

심플하게 만든 예제인 만큼 여러 가지 상황들을 고려하지 못하고 만든 스크립트입니다.

여러 가지를 상황들을 생각해서 응용해서 사용하시면 좋을 것 같습니다.

 

이상으로 Platform Effector 2d에 대해 알아보았습니다.

다음에는 좀 더 좋은 정보로 찾아뵙겠습니다.

감사합니다.

반응형
그리드형