Skip to content

Door open trigger via raycast function and animation TAG , member.

September 19, 2010

 

// 피직스 레이케스트를 사용 하여 특정 거리 영역 안에 들어 오면 문이 열리도록 처리 한다.
var rayCastLentht = 5; // 스크립티 인스펙터에 파라메터로 표기 될 것이다.

function Update()
{
var hit : RaycastHit; //객체 hit 는 RaycastHit 를 사용한다.

if (Physics.Raycast(transform.position, transform.forward, hit, rayCastLentht))
{
if (hit.collider.gameObject.tag == “door”)
{
hit.collider.gameObject.animation.Play(“door_open”);
}
}
}

위의 스크립트는 초기 오프스터디를 위한 접근용 자바 스크립트로서 유니티 레이케이스트 함수를 간단히 이용 하여 개체와의 거리 안에서의 충돌 검출과 이벤트 호출에 포인트가 맞추어 져 있습니다.

오프 스터디를 통해 조금 더 확장 하여 상태에 대한 값 . 즉. 문에 영역 센서를 설치 하여 그 안에 케릭터가 있냐 없냐의 상태값을 검출 하고 그에 따라 문이 열리고 닫히는 기능을 구현.

구현은 대희씨가 메인으로 구현.C# 기반으로 코딩.

오프스터디상에서 구현 시 논의 점.

유니티에 대한 상용경험이 없었기 때문에 함수에 대한 충분한 정보가 미흡 하였음.

처음의 시도.

열리는 애니메이션 하나를 리버스 애니메이션 하여 사용 하기로 하였음.

프레임을 리버스 하기 위해 animation.Length = -1 값을 적용 하여 처리 하여 반전 애니메이션 가능.

발생 문제 : 각기 열리고 닫히는 애니가 중간에 끝나지 않았을 경우 프레임 시작점에 대한 튐 현상 발생.

해결 : .blend 함수.

상태에 대한 판정 : OnTriggerEnter 함수 와 OnTriggerExit 함수.

추가 생성 GameObject 는 상태 판정을 위한 디스턴스 더미 오브젝트 추가.

초기 판정 체크는 hit 와 raycast 만을 사용 하였으면 raycast 사용 시 디스턴스에 대한 Var 정의.

객체 인지에 대한 함수 변경. 처음 TAG Find의 사용 에서 이름으로 검색. .Find 함수 사용.

트리거에 들어 갔을때와 나갔을때 트리거에 의한
문 컨트롤 예제 입니다.

using UnityEngine;
using System.Collections;

public class CollisionTest : MonoBehaviour
{
GameObject doorObject = null;

// Use this for initialization
void Start () {
// 문 오브젝트를 얻어 옵니다.
doorObject = GameObject.Find(“door”);

}

// Update is called once per frame
void Update () {
}

void OnTriggerEnter(Collider collisionInfo)
{
// 트리거에 들어 갔을때 door_open 애니메이션을
// 블랜딩 시킵니다. 기본값이 0.1 입니다.
doorObject.animation.Blend(“door_open”);
}

void OnTriggerStay(Collider collisionInfo)
{
}

void OnTriggerExit(Collider collisionInfo)
{
// 트리거에 들어 나갔을때 door_close 애니메이션을
// 블랜딩 시킵니다. 기본값이 0.1 입니다.
doorObject.animation.Blend(“door_close”);
}
}

Advertisements

From → Unity3D Study

Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: