게임 제작시에 탱크게임이나 간단한 슈팅게임을 제작할때 커서를 따라가는 식의 방식이 필요할때 자주쓰입니다
마우스 좌표 값을 수치로 확인하여 각도를 구합니다.

자 그럼 어떻게 움직이는 지 한번 봅시다.

_root.onEnterFrame = function() { //매프레임 마다~
ax=_xmouse - _root.angle._x;//x마우스좌표-포탄엑스좌표
ay=_ymouse - _root.angle._y;//y마우스좌표-포탄와이좌표
_root.angle._rotation=Math.atan2(ay, ax)*180/Math.PI;//각도 구하는 공식
}

아주  간단합니다^^

자 ax라는 변수에 엑스마우스 좌표 빼기 angle라는 인스턴스넴이있는 무비클립 좌표를 빼줬습니다.이유인 즉

저기 파란색 삼각형이 끝나는 지점이 마우스 입니다 회색으로 살짝 보이죠
우리가 필요한 것은 저기 파란색으로 표시되어있는 각도 값입니다.
저 각도를 알아야 포탄을 rotation 함수를 사용해서 움직이겠죠?

여기서 사용 되는 것이 Math.atan2(와이좌표, 엑스좌표) 입니다.
라디안 = Math.atan2(y좌표, x좌표) 이 함수를 사용하면 라디안 값을 출력하게 됩니다.

앞시간에 각도 값을 라디안으로 바꾸는 공식 기억하시죠? 라디안 = Math.PI/180*각도;
그럼 라디안을 각도 값으로 나오게 하겠습니다(rotation은 각도값으로 움직입니다)
라디안*180/Math.PI*라디안 = 각도;
설마 이해 안되시는 분은 없지요 그냥-_-각도 값만 놔두고 다 넘긴거에요~
자 정리하면
Math.atan2(y좌표, x좌표)*180/Math.PI = 각도;
우리가 원하는 각도 값이 나왔습니다.

그럼 다했습니다.

_root.onEnterFrame = function() { //매프레임 마다~
ax=_xmouse - _root.angle._x;//x마우스좌표-포탄엑스좌표
ay=_ymouse - _root.angle._y;//y마우스좌표-포탄와이좌표
_root.angle._rotation=Math.atan2(ay, ax)*180/Math.PI;//각도 구하는 공식
}
ax,ay는 마우스좌표와 무비클립의 거리를 구하는 것입니다~
angle이라는 무비클립에 로테이션 값을 = 우리가 구한 각도로 움직여라.

자 잘 움직이시나요~-0-? 뭐 다 아시겠지만 포탄의 중심점을 끝으로 해두셔야 포탄이 -_-
가운데에서 돌아가는 것을 방지 할수 있습니다~




주전자닷컴에 한번 올려봤다..
이 사이트 만드신분이 우리 학과에서 강의를 한번하셨는데 그때가 갑자기 생각나서 올리게 되었다.

오늘 올렸는데;;;댓글하구 조회수가 꽤 많이 들어오고 인기 게임에도 뽑혔다..-_-..뭐 아무것도 안주지만..
초등학생과 중학생이 대부분 유저층인듯하다...재밋다는 반응과 조금 어렵다는 반응?

사실 이 게임을 만들때 아무생각없이 플래시 액션스크립트를 공부하는 셈 치고 만든 것이라..
재미있는요소나 기획에 신경을 못 쓴게 사실이다...군대안에서 만든 액션스크립트라서 꼭 완성하고 싶었을뿐..
간단한 게임이지만 학생들이 좋아해주니...-_-기쁘다;;;;하하;;;이런.....-_-;;;

이번에 과제로 플래시게임제작이있다......하..또......만들어야대......-_-...이번엔 기획해서 만들테다 + _ +


정열맨 게임입니다.-0- 간단하게 플래시로 만들어 보았습니다.흐흐
군대안에서 스크립트만 짜놓은거 페인터로 작업해서 완성시켯습니다.
제대하믄 날잡아서 후딱 완성해야지 하던게...이제와서 제대한지3달이 지나서야..
사실.......그래픽적으로 좀더 좋아지고싶었으나..별로...-_-재미없게 나와서 ㅋㅋ
후딱 완성시켰습니돵 ㅋㅋ 잠시나만 즐겨주시면 그걸로 - _ -b
이후에는 게임제작(플래시)관련 글을 올리겠습니다 + _ +흐흐


자 요런식으로 나올 때 해결 방법을 찾아보도록 합시다.

뭐 여러가지 경우가 있습니다.

1. 알툴바 설치 하셨을 경우 플래시 제한 기능을 꺼주시면 되구요~

2. 인터넷 위쪽에 도구 - 추가기능 - 추가기능사용 또는 뭐뭐~
거기 들어가셔서 플래시 플레이어 사용안함 되어있는걸 사용으로 바꾸시면 됩니다.

1,2 방법도 안되는 경우가 있습니다.

클릭투트윈이나 알약의 고급모드에서 엑티브를 정리하시거나 할때 에러가 가끔 발생하는데요
뭐....아무리해도 안될 겁니다...트윈에서 아마 설정을 이상하게 하셨가나 하는 경우에 발생하거든요

이때 한방에 해결하실수 있는 방법이 바로


인터넷 익스플로어 속성에 들어가셔서 고급으로 가셔서 원래대로만 클릭해주시면 자동으로 모든 임시파일을 삭제하고 원래의 설정으로 돌려줍니다. 무엇이 잘못 됐는지 모를때 사용하는 방법입니다. + _ +

한번에 다들 고쳐버리세용 -0- ! !
게임 제작에 있어서 필요한 기본 문장에 대해서 간단하게 설명하고 지나가겠습니다.

이번에 배운 것은 Math.PI/180*Angle 이것입니다. 처음 이것을 보았을때 뭐지라고 했는데

별로 어려운 개념이 아니라 금방 잡았습니다.

Math.PI/180*pAngle 이놈이 바로 우리가 무비클립을 회전시키는데 필요한 문장입니다.

이녀석이 알려주는 것이 무엇이냐고 하면 바로 호의 길이를 나타내 주는데요 .. 그 호의 길이를

바탕으로 X축Y축 좌표값을 구해낼것입니다.

Math.PI는 우리가 알고있는 파이(3.14) 같은 것 입니다.

파이/180도 곱하기 각도 이 공식은 호도법에 의해서 나온 공식입니다.

각도를 알때 그 호의 길이를 알아내는 간단한 수학적 공식입니다.

그럼 이 호의 길이를 가지고 어떻게 회전을 시키는 지 알아 봅시다.

Angle = 60;
Radian = Math.PI/180*Angle
var X = r*Math.cos(Radian);
var Y = r*Math.sin(Radian);

자 일단 각도에 따라 회전하는 액션스크립트를 짜기 위해서는

수치에 따라서 x축 y축의 좌표변화량을 알아내야 합니다.

그러기 위해서 사용되는것이 cos, sin 입니다.

액션스크립트에서 이 문법을 사용하기 위해서는 코사인안에 호의 길이를 넣어줘야지

값을 출력하게 되어있습니다. 그래서 앞에 Math.PI/180*Angle 이 문장이 필요한 것이구요

자 x축 y축 값을 구하는데 싸인 코싸인이 왜 필요한지 궁금하신분은 위에 그림을 참조해주세요~

var X = r*Math.cos(Radian); 이것을 위에 a,b로 바꿔서 말하면 b=a*cos(세타);

요런 식이 됩니다. 당연히 b는 x축 좌표가 될것이고요 c가 y축 좌표값이 될 것입니다.

그럼 x축y축의 변화량을 구할수 있습니다. 그럼 이 두가지를 함께 설정해주면

각도에 따른 X축Y축 좌표 값을 알아 낼수 있습니다.

자 그럼 간단하게 코드를 작성해 봅시다

Angle = 60;// 각도를 지정했습니다.
r=20;// 반지름도 설정해주구요~
this.onEnterFrame = function() {//매 프레임 마다~
Angle += 10;//각도를 10씩 더해주라
Radian = Math.PI/180*Angle//각도에따라서 호의 길이를 나타내주고
var X = 60+r*Math.cos(Radian);//그 호의길이를 바탕으로 x축좌표 알아내고
var Y = 60+r*Math.sin(Radian);// y축 좌표도 알아내고
one._x = X;//좌표값을 무비클립 one 이라는 놈에게 대입시키고
one._y = Y;// 마찬가지로 y축도 대입시키고~
}

자 깔끔하게 정리 되었습니다. 화면에서 뱅글뱅글 도는 원을 보실수 있습니다^^;;

아 저기 엑스축 와이축에 60을 왜 더했는지는  아시죠 `ㅡ`?
원이 화면안에 어디쯤에서 돌아라 좌표값으로지정해준 겁니다 + _ +~



동영상 편집프로그램에 mov 파일이 불러와지지 않을 때!.

통합코덱을 찾아서 설치해도 안될 때 - _ - .. 난감하시죠

http://file.naver.com/pc/view.html?fnum=94695&cat=40

퀵 타임 플레이어 입니다. mov 관련 에러는 거의 잡아주는군요 ㅠ


avi 파일이 안불러지는것은 통합코덱을 설치하거나 그래도 안될 경우에는

동영상변환파일로 변환해버리고 불러오셔도 됩니다. 바닥 프로그램 추천


변환자체도 안되는 경우도 있더군요....락이걸린건지....후...뭘까요

그래도 안열리는 파일들은-_-..................

 

<영화여 게임이 되거라!>


 

 

<영화 : 점퍼>


※ 내용

  영화 속에 점퍼라는 초능력을 가진 주인공이 나오고 이 주인공을 잡기 위해 힘쓰는 팔라딘이란 종족이 나온다. 점퍼와 팔라딘의 숨 막히는 대결 구도가 이영화의 주된 내용이다.

게임성 : 영화 속에 나오는 뚜렷한 케릭터(점퍼,팔라딘) 한쪽은 도망 다녀야 하고 팔라딘은 점퍼를 잡아야한다. 추격하는 게임이 만들어질 수 있고 점퍼의 능력을 이용하여 팔라딘을 공격하는 식의 대결구도가 완성된다.


※ 캐릭터

  점퍼(순간이동 능력자), 팔라딘(점퍼를 잡는 종족)


캐릭 설명
 

 

1. 점퍼

  순간이동을 능력으로 가지고 있는 점퍼는 자신이 원하는 곳은 맵 안 어디든지 갈 수 있다. 팔라딘과 대결을 원하지 않지만 자신들을 잡으려는 팔라딘을 공격하거나 도망칠 수밖에 없다.


2. 팔라딘

  대대로 순간이동능력자를 잡아오는 하나의 부족이다. 그만큼 조상으로부터 내려오는 사명을 어길 없고 또한 그것이 천직이라 믿고 있는 부족이다. 순간 이동하는 점퍼를 잡기위해 뛰어난 무기와 트랩을 설치하고 빠른 속도와 공격력으로 점퍼를 위협한다.


실제 게임 기획

 

                                   <팔라딘과 점퍼의 대결>


  게임 속 점퍼는 팔라딘 보다 이동속도가 현저히 떨어지게 기획하고 도망 다니다 보면 결국에 잡히는 속도이기 때문에 적절한 타이밍에 순간이동(점퍼)을 해줘야 한다. 점퍼의 능력이 순간이동이기 때문에 이 능력을 적절하게 게임 속에서 살려야 한다.


순간이동을 계속 해서 하면 팔라딘이 점퍼를 잡을 수 없기 때문에 순간이동에 딜레이를 넣어준다. 그래서 가장 적절한 타이밍에 사용해야 되고 또 다시 순간이동을 사용할 수 있게 될 때까지 도망 다녀야 하므로 게임자체에서 긴박감과 긴장감을 가져오게 된다.

  팔라딘은 빠른 이동 속도와 무기가 있으므로 점퍼의 이동경로를 파악 빠르게 다가가 점퍼를 잡으면 승리하는 식이다. 물론 점퍼도 거리가 꽤 멀고 팔라딘의 착오로 더욱 거리가 멀어져 순간이동을 할 필요가 없는 타이밍이면 자신이 아닌 사물을 순간 이동시켜서 팔라딘을 공격할 수 있게 제작한다.



아이템

 맵속에 이동시킬 수 있는 모든 아이템을 구현해놓는다. 그것이 점퍼의 아이템이고 무기이다.

팔라딘에게는 적절하게 사용할 수 있는 검이나 총 그리고 트랩을 아이템으로 제공해야 된다.


그래픽: 캐릭터는 작고 맵이 자세하게 구현되어 있어야한다. 그래야 점퍼가 공간을 보고 이동할 수 있고 아이템 등을 자세히 볼 수 있다.

게임과련 과제로 만든건데 그냥 나중에 혹시 개발자가 되면 필요하지 않을까해서 올려봅니다.

+ Recent posts