본문 바로가기
플래시 자료 제작

교플강10-중력장에서 우주선 착륙게임 만들기

by 민서아빠(과학사랑) 2013. 1. 16.

나. 착륙 우주선 게임 만들기

지금까지 배운 것을 토대로 우주공간에서 우주선을 키보드로 조절하여 우주기지에 착륙시키는 게임을 만들어보자.

1)고려해야 할 사항에 대해 토의해 보고 변수명을 정해보자.

 

우주선의 인스턴스명 (ufo)
지면의 인스턴스명 (san)
착륙장의 인스턴스명 (land)

 

2) 화면구성

 



 

3) 액션스크립트

 

//속도 초기화
vx = 0;
vy = 0;
g=0.01 //중력의 크기

 

 

onEnterFrame = function () {
vy = vy+g;
ufo._x = ufo._x+vx;
ufo._y = ufo._y+vy;
//산과의 충돌 구현
if (san.hitTest(ufo)) {
delete onEnterFrame; //반복실행 없앰
trace("실패");
}
//착륙장과 의 충돌 구현
if (land.hitTest(ufo)) {
trace("성공");
delete onEnterFrame;
}
updateController();
};
//키보드 조절
function updateController() {
if (Key.isDown(Key.LEFT)) {
vx = vx-0.5;
ufo.gotoAndStop(4);
}
if (Key.isDown(Key.RIGHT)) {
vx = vx+0.5;
ufo.gotoAndStop(3);
}
if (Key.isDown(Key.UP)) {
vy = vy-0.5;
ufo.gotoAndStop(2);
}
if (Key.isDown(Key.DOWN)) {
vy = vy+0.5;
ufo.gotoAndStop(5);
}
}

 

다. 복잡한 산과의 충돌 구현

 

//속도 초기화
vx = 0;
vy = 0;
g=0.01 //중력의 크기

 

 

onEnterFrame = function () {
vy = vy+g;
ufo._x = ufo._x+vx;
ufo._y = ufo._y+vy;
//산과의 충돌 구현
if (san.hitTest(ufo)) {
delete onEnterFrame; //반복실행 없앰
trace("실패");
}
//착륙장과 의 충돌 구현
if (land.hitTest(ufo)) {
trace("성공");
delete onEnterFrame;
}
updateController();
};
//키보드 조절
function updateController() {
if (Key.isDown(Key.LEFT)) {
vx = vx-0.5;
ufo.gotoAndStop(4);
}
if (Key.isDown(Key.RIGHT)) {
vx = vx+0.5;
ufo.gotoAndStop(3);
}
if (Key.isDown(Key.UP)) {
vy = vy-0.5;
ufo.gotoAndStop(2);
}
if (Key.isDown(Key.DOWN)) {
vy = vy+0.5;
ufo.gotoAndStop(5);
}
}

 

다. 복잡한 산과의 충돌 구현

 



 

이런경우에는 위에서 사용한 스크립트로는 충돌을 구현할 수 없다.

 

if (san.hitTest(ufo)) {
delete onEnterFrame; //반복실행 없앰
}

 

hitTest의 또 다른 사용방법을 이용해야 한다. 즉 hitTest를 이용해 좌표를 체크하는 방법이다. 아래와 같이 고쳐 적어 보자.

 

if (san.hitTest(ufo._x, ufo._y, true)){
delete onEnterFrame;
trace("실패");
}

 

그리고 좀더 세부적인 충돌을 구현하기 위해서 어떻게 해야 할지 생각해 보자.

 

우주선착륙게임2.fla
다운로드


<버튼을 누르고 키보드로 우주선을 조절해 보자>

ufogame.swf
다운로드



<토의>위 사항들을 모두 고려하여 중력장안에서 작동하는 멋진 우주선 착륙게임을 고안해서 만들어 보자.