이번에 모델하우스 실습을 하면서 익히게 된 슬라이딩 도어기능입니다. 3D 모델하우스의 화면전환이라든지 여러가지 유저의 기능추가 작업을 하면서 좀 애먹었던건데 의외로 쉽지만... 흡족하게 잘 되지 않아서 시간을 잡아먹기도 했어요.
기능은 제목 그대로 슬라이딩 도어인데 한쪽만 열리는 거에요. 작업할때 문이 한쪽만 있는 까닭에 ... 반대쪽은 할필요가 없었어요. ㅋ
기능확인은 동영상을 참조해 주세요.
동작실험을 위해서 유니티짱(© Unity Technologies Japan/UCL)이라는 3D 캐릭터를 불러들였어요.
유니티짱이 슬라이딩 도어 일정영역에 들어가면 문이 열리고 일정영역에서 벗어나면 문이 닫히는 기능입니다.
먼저 슬라이딩 도어를 지정할 밑작업을 해줍니다.
전 새로운 프로젝트를 생성해서 작업을 했어요. 그전에 작업한 모델하우스는 공개할수 없는 거라서 아쉬운데로 유리문을 만들었어요. ^^
문틀과 문 두짝, 유니티짱이 딛고 설 밑바닥을 씬에 올려서 적당히 배치해 주세요.
참고로 전 문은 어셋스토어에서 유리 메테리얼(Material)을 적용해서 간단하게 만들었어요.
문틀은 같은 유리질감중 강하고 불투명한걸로 적용해서 느낌만 살려줘 봤어요.
준비가 되었으면 Hierarchy > Create Empty (빈 오브젝트)를 생성해 주세요.
이 빈오브젝트를 DoorController라고 이름을 변경해주고 여기에서 Box Collider를 추가한 다음에 In Trigger에 체크를 해주세요.
1. 빈오브젝트 생성
(Hierarchy에서 마우스 오른쪽 버튼 클릭 → Create Empty 선택 → [DoorController]Rename)
2. Box Collider 추가
(Add Component → Physics →BoxCollider선택)
3. In Trigger 체크
(Box Collider에서 두번째 In Trigger 체크박스 선택)
이제 In Trigger 영역을 지정해 줄거에요. 평소 이용하는 자동문의 센서라고 생각하시면 되요. ^^
크기를 지정해주는데 전 아래와 같이 수치를 줬지만 각자 화면에 맞게 크기를 주시면 되요.
정면에서 보면 이런 느낌이에요. 영역이 대충하면 되긴하지만 너무 작거나 너무 커도 좀 곤란해요.
센서라고 생각하시고 적당한 크기와 위치를 잡으시면 될거에요.
옆면에서 보면 문 앞뒤로 충분하게 줬어요. 너무 짧으면 문이 빨리 닫혀버려서 좀 섭섭하거든요. ^^ 유니티짱이라서 그렇지.. 틀림없이 사람이면 가방이나 머리카락이 끼일수도 있으니 ㅋㅋ 넉넉하게 ..
백마디 말보다 한번 보는게 제일 정확하니.. ㅋㅋ 비스듬한 각도로 본거에요. 충분히 주되 옆쪽으로 너무 커도 곤란합니당.. ㅋ
스크립트 폴더를 만들어서 아래 코드를 작성해 주세요.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Slidingdoor : MonoBehaviour
{
// 도어를 제어하기 위해
bool flag;
public GameObject door;
void Start()
{
// 닫혀있는 상태
flag = false;
}
void Update()
{
// 문을 여는 처리
if (flag == true)
{
if(door.transform.position.x >= 1.326f)
{
door.transform.Translate(-0.05f, 0, 0);
}
}
if (flag == false)
{
if(door.transform.position.x < 2.122f)
{
door.transform.Translate(0.05f, 0, 0);
}
}
}
private void OnTriggerEnter(Collider other)
{
flag = true;
}
private void OnTriggerExit(Collider other)
{
flag = false;
}
}
게임오브젝트 변수를 선언해 줬어요.
public GameObject door;
Tag를 넣는것보다는 직접 지정해 주는게 전 좀 편해요. ^^
나중에 어느 문인지 지정해 줄거에요.
처음에는 문에 Box Collider줘서 작업을 했더니 얘가 문이 열리면 같이 딸려나가는 통에 ㅡㅡ 다시 빈오브젝트에 만들어서 문을 지정해 주는 걸로 정했어요.
특별히 어려운 코드는 없어요. ^^ 작업을 할때 여러가지 제한이 많기도 해서 좀 복잡했어요.
기능이 간단한데 무조건 문을 열고 닫아야 되는거에요. 열면 끝이 아니고 꼭 닫아줘야 되는 강제성이 있어요. ^^
이제 스크립트 저장하고 나오셔서 열고 닫을 문을 지정해주심 되요.
오른쪽 문을 끌어와서 넣어주세요.
작업한 모델하우스 문 크기가 다 동일해서 위치조정을 할게 없었어요. 문 크기가 달라지면 조금 손봐야 되지만 문크기는 일정한거 같아요.
의외로 간단해요. ^^ 실행해서 동작확인 해주세요. ㅋ
전 유니티짱을 움직여 가며 좀 놀았어요. ㅎㅎ
'IT Tip > 유니티 강좌' 카테고리의 다른 글
[유니티강좌] 클릭한 오브젝트 색깔 변경하기 (0) | 2020.11.22 |
---|---|
[유니티 강좌] 오브젝트 취득하기(선택하기) (3) | 2020.11.21 |
[유니티 강좌] 오브젝트 점프하기 (0) | 2020.11.20 |
[유니티강좌] 방향키로 오브젝트 움직이는 간단한 방법 (0) | 2020.11.19 |
[유니티 강좌] 유니티(unity) 화면구성 (0) | 2020.11.18 |
댓글