나. 착륙 우주선 게임 만들기
지금까지 배운 것을 토대로 우주공간에서 우주선을 키보드로 조절하여 우주기지에 착륙시키는 게임을 만들어보자.
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("실패"); } |
그리고 좀더 세부적인 충돌을 구현하기 위해서 어떻게 해야 할지 생각해 보자.
<버튼을 누르고 키보드로 우주선을 조절해 보자>
<토의>위 사항들을 모두 고려하여 중력장안에서 작동하는 멋진 우주선 착륙게임을 고안해서 만들어 보자.