Unity_dooropen script를 이용 table animation 및 script 작성

  • by

door open script를 다른 오브젝트인 lamp table에도 적용하여 보고자 합니다. 우선 lamp table의 서랍이 열리는 구조로 만들기 위하여, maya에서는 서랍 문 부분만 페이스 선택하여, extract 하여 줍니다.

 

분리된 서랍 문에는 edge를 추가하면서 서랍의 오브젝트를 작성하여 줍니다. 작성이 완료된 서랍의 오브젝트는 UV texture editor를 열고, auto projection으로 UV를 자동 전개한 후에 기존의 lamp table의 UV 비어있는 공간에 배치하여 주었습니다. 이때 서랍 문 앞쪽의 기존 오브젝트는 UV 전개되어 있기 때문에 안쪽의 오브젝트만 서페이스 선택하여 UV 전개하여 주었습니다.

다음으로 unity에서 동작을 할 animation 모션 키를 주어 보았습니다. 0프레임 일 때는 닫혀 있는 상태에서 서랍을 선택 x축에 키를 입력하여 주고, 열린 상태에서 열리는 방향으로 이 번에는 -x축 방향으로 40프레임 (1초 10`) 정도에서 키 입력을 하여 줍니다. 모션을 적용한 lamp table은 fbx 파일로 내보내어 줍니다.

unity에서 fbx로 내보낸 lamp table을 드래그 import 하여 주고, models folder에 이동하여 줍니다. 그리고 오브젝트는 scene 적당한 위치에 배치하여 줍니다. texture는 일단 전에 lamp table에 적용하였던 texture를 적용하여 주었습니다.

배치한 lamp table에는 box collider를 적용하여 충돌체를 적용, opener라는 전에 작성한 doorscript를 변형한 script를 드래그하여 주었습니다. inspector의 드래그한 opener의 script에서 animator는 문에 적용하였던 door animator를 적용하여 줍니다.

models folder에 lamp table의 오브젝트를 클릭, inspector의 animation을 클릭, animation의 상태를 확인합니다. animated custom properties의 clips 이름도 변경합니다.

첫 번째 model 탭을 클릭하고, collider이 발생하도록 generate colliders에 체크하여 줍니다.

lamp table의 모션을 재생하여 본 결과, 너무 빠르다고 판단되어서, open tab의 inspector에서 speed를 2로 변경, close 또한 -2로 변경하여 주었습니다.

 

Opener Script 작성

public class Opener : MonoBehaviour{

public Animator _animator;

public GameObject OpenPanel = null;

private bool _isInsideTrigger = false;

void OnTriggerEnter(Collider other){

if (other.tag == “Player”){

_isInsideTrigger = true;

OpenPanel.SetActive(true);

}

}

void OnTriggerExit(Collider other){

if (other.tag == “Player”){

_isInsideTrigger = false;

_animator.SetBool(“open”, false);

OpenPanel.SetActive(false);

}

}

private bool IsOpenPanelActive{

get{

return OpenPanel.activeInHierarchy;

}

}

void Update(){

if (IsOpenPanelActive && _isInsideTrigger){

if (Input.GetKeyDown(KeyCode.E)){

OpenPanel.SetActive(false);

_animator.SetBool(“open”, true);

}

}

}

}

substance painter에서 서랍을 추가하여 작성하였기 때문에 texture를 다시 작성할 필요가 있어, lamp table 오브젝트를 substance painter에서 열어주어,..

전에 작성하였던 방식을 참고로, base color(본체와 서랍장)에는 wood walnut을, 손잡이 부분에는 plastic glossy, dust 효과로 smart mask에서 dust occlusion과 dust plastic을 적용하여 주었습니다. texture로 내보내어준 후, unity에서 다시 작성한 texture 파일을 덧붙여 주어, texture를 반영하여 줍니다.

 

https://blog.naver.com/documan5/222257231558

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다