본문 바로가기

Unity

[Unity] Trigger, Sprite를 이용한 오브젝트 비활성화

728x90

Trigger는 시스템에서 이벤트를 수신하고 각 이벤트에 대해 등록된 기능을 호출합니다.

Sprite는 2D 그래픽 객체입니다.

 

변수 선언 내용

GameObject text는 Trigger를 이용하여 text의 활성화 여부를 결정해야 하기 때문에 선언한 변수이다.

Sprite sprite는 플레이어가 조건에 만족한 행동을 하였을 때 해당 스프라이트로 바뀌주기 위해 선언한 변수이다.

bool isChange는 오브젝트가 비활성화 되었는데 특정 조건에 의해 활성화되지 않게 해 주기 위해 선언한 변수이다.

SpriteRenderer spriteRenderer는 현재 스프라이트에서 sprite변수에 선언되어있는 스프라이트로 바뀌주기 위해 선언된 변수이다.

 

Start 함수 코드

spriteRenderer와 isChange를 초기화 해준다.

 

OnTriggerEnter2D 함수 코드

아직 스프라이트가 변하지 않은 상태에서 플레이어가 오브젝트에 다가가게 되면 오브젝트를 비활성화 조건이 적혀있는 텍스트가 활성화된다.

 

OnTriggerExit2D 함수 코드

만약 플레이어가 오브젝트에서 벗어나게 되면 비활성화 조건이 적혀있는 텍스트를 비활성화해준다.

 

DeAcitve 함수 코드

자기 자신을 비활성화시켜준다. 

 

TextDeActive 함수 코드

비활성화 조건이 적혀있는 텍스트를 bool 타입 인자를 받아 활성화할지 비활성화할지 정하는 함수이다.

 

ChangeSprite 함수 코드

현재 적용되어있는 스프라이트를 sprite에 저장되어있는 스프라이트로 변경해준다.

그리고 스프라이트가 변경되었으므로 isChange를 true로 바꿔준다.

그리고 마지막으로 Invoke 함수를 호출하여 1.5초 뒤에 오브젝트를 비활성화 시켜준다.

 

아래 코드는 플레이어 스크립트에서 작성한 코드이다.

OnTriggerStay2D 함수 코드

만약 플레이어가 Box 태그를 가진 오브젝트 속에 있는 상태에서 Z키가 눌리게 된다면 오브젝트의 텍스트를 비활성화시켜주고, 오브젝트의 스프라이트를 바꿔준다.

 

결과 화면

728x90