본문 바로가기

[플래시 액션스크립트]hitTest 액션의 기본[펌]

반응형

hitTest액션은, 오브젝트와 오브젝트, 또는 오브젝트와 마우스간의 충돌여부를 테스트하는 액션으로, 만약 두 객체가 교차하고 있다면 true, 교차하지 않고 있다면 false를 반환하는 액션입니다. 이 강좌의 차례는 다음과 같습니다.

 

1. hitTest액션의 사용

- hitTest액션의 사용분야와, 어떻게 사용하는지를 알립니다.

 

2. hitTest액션 분석 및 기초활용

- hitTest액션 중 기초액션의 분석과, 기초적인 활용입니다.

 

 

 

1. hitTest액션의 사

 

hitTest액션은 보통 게임이나 버튼에 많이 사용됩니다. 게임의 경우 주인공와 적이 만났는지, 아니면 주인공과 아이템이 만났는지의 여부에 많이 사용되며, 버튼에는 마우스를 올리면 서서히 색이 변하고, 내려놓으면 서서히 원래 색으로 돌아가는 액션에 사용됩니다. hitTest액션의 기본 형식은 다음과 같습니다.

 

먼저, 대상이 좌표인 경우에는..

 

if(대상.hitTest(대상))

 

대상이 오브젝트인 경우에는..

 

if(대상.hitTest(eval(대상)))

 

이 되겠습니다. 전자의 경우에는 버튼 액션에, 후자의 경우에는 게임에 많이 사용될 수 있는 액션들이죠.

 

참고로, hitTest액션은 상대경로가 절대경로를 가리키는 것, 또한 아래의 액션에 상대경로가 많이 포함되는 쪽이 좋습니다. 즉,

 

if(this.hitTest(_root.무엇)) {

    this.무엇}

 

인 경우가 좋다는 말이지요. 그 이유는, 게임을 예로 들면 간단하게 설명할 수 있습니다. 그 이유는 2장에서 분석과 함께 설명드리도록 하겠습니다. 또한, hitTest액션에서는 else나 else if가 꼭 들어가는데, 그것 역시 2장에서 같이 설명하도록 하지요.

 

 

 

 

2. hitTest액션 분석 및 기초활용

 

hitTest액션의 분석을 시작하겠습니다. 먼저, 게임에 사용되는 액션부터 분석하지요.

 

if (this.hitTest(eval(_root.banpae))) {
    // 만약 자기자신이 banpae라는 오브젝트와 충돌했다면.
    this.gotoAndPlay(5);
    // 5번 프레임으로 가 재생하고
} else if (this.hitTest(eval(_root.DA))) {
    // 만약 DA라는 오브젝트와 충돌했다면,
    this.gotoAndPlay(10);
    // 10번 프레임으로 가 재생한다.
}

보시는 바와 같습니다. 이 게임에서, 이 액션은 arrow라는 화살 오브젝트에 사용되었고, 5프레임에는 부러지는 액션이, 10프레임에는 폭발하는 액션이 삽입되어 있지요.

 

이게 간단한 hitTest액션이 게임에서 사용되는 예입니다.

 

그런데 만약, 여기에서 화살에 액션을 삽입하지 않고 방패에 삽입했다고 해 봅시다. 그렇다면 액션은 이렇게 됩니다.

 

if (this.hitTest(eval(_root.arrow))){

    _root.arrow.gotoAndPlay(5);

} else if.....

 

이렇게 복잡하게 바뀔 뿐만 아니라, arrow라는 무비클립에만 액션이 한정되므로, 도저히 게임이 될 수가 없겠지요. 그러므로, hitTest액션을 사용할 때는 꼭 어떤 대상에 삽입할 지를 잘 생각한 후에 액션을 삽입해야 어려움이 없습니다. 만약 잘못 삽입했다면 한 무비를 통째로 날리게 될 수도 있습니다.

 

다음은 부드럽게 나타났다가 사라지는 버튼의 소스입니다. 이 액션에서는 버튼이 아니라 무비클립을 사용한다는 점을 잊어버리시면 안됩니다.

 

if (this.hitTest(_root._xmouse,_root._ymouse)) {
 // 만약 자기자신이 마우스와 충돌한다면
 nextFrame();
 // 다음 프레임으로 가고
} else {
 // 만약 아니라면
 prevFrame();
 // 이전 프레임으로 간다.
}

 

그 다음, 무비클립의 앞으로 갈수록 다른 색으로 변하게만 해 주면 끝입니다. 무비클립을 버튼으로 만들기 위해서는 다른 액션이 필요한데, 그것은 초이님의 액션분석을 찾아보시면 알수 있으므로 여기서는 생략하도록 하겠습니다.

 

 

 

이상으로 hitTest의 기초 강좌를 마치겠습니다. hitTest는 응용할 부분이 상당히 많으니 꼭 마스터하시기 바랍니다.


반응형