안녕하세요 유니티 비기너입니다.
이번 시간에는 Platform Effector2D 컴포넌트를 활용하여 슈퍼마리오와 같은 관통이 되는 바닥을 만들어 보겠습니다.
(유니티 버전 2019.3.7f1으로 실습을 진행했습니다.)
※ 해당 내용은 Platform Effector2D 활용방식 중 하나를 간단하게 풀이한 내용이므로 적용 시에는 여러 가지 변수들을 고려하셔서 응용하시면 됩니다.
Platform Effector2D
Platform Effector 2D는 단방향 충돌, 측면 마찰 / 바운스 제거 등과 같은 다양한 "플랫폼"동작을 적용합니다.
이펙터와 함께 사용하는 충돌체는 일반적으로 다른 충돌체가 충돌할 수 있도록 트리거로 설정되지 않습니다.
샘플 화면
결과 화면
한 번에 보기
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
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에 대해 알아보았습니다.
다음에는 좀 더 좋은 정보로 찾아뵙겠습니다.
감사합니다.
'유니티실습' 카테고리의 다른 글
유니티 Mathf.PingPong 사용해보기 (0) | 2023.03.22 |
---|---|
유니티 No Sprite Editor Window registered 해결 방법 (0) | 2021.04.16 |
유니티 기즈모 Gizmos 활용해보기 (0) | 2021.03.18 |
유니티 CanvasGroup 컴포넌트 사용법 (0) | 2021.03.17 |
유니티 비주얼 스튜디오 자동완성 안 될 때 (0) | 2021.03.16 |