カービィのエアライドみたいなゲーム
投稿者 : ドラグナー(FLH1Afk227.fko.mesh.ad.jp)
- 2007/10/21(Sun) 20:22
No.11560
|
|
|
|
|
題名のゲームをつくっているのですが下のプログラムを見てください、
自機 akuseru=0; while (1) { a=angle($idouhoukou.x-x,$idouhoukou.y-y); if(getkey(90)){akuseru=1;} if(akuseru==1){ x+=cos(a); y+=sin(a);} if(getkey(32)){akuseru=0;} $map.scrollTo(x-$screenWidth/2,y-$screenHeight/2); update(); }
移動方向を示す矢印 extends DxChar; r=64; //円を描く半径 v=3; akuseru=0; while(1){ if(getkey(32)){akuseru=0; if(getkey(88)){ x=$jiki.x+r*cos(angle); y=$jiki.y+r*sin(angle); angle+=v; $jiki.angle+=v;} } if(getkey(90)){akuseru=1;} if(akuseru==1){ x+=cos($jiki.a); y+=sin($jiki.a);} update(); }
これでZキー自機矢印の方向に自機が動くんですが、 これをタメで加速させることはできませんか、 あと、スぺースを押すとタメも入れたいのですが、 やり方を知ってる方、よろしくお願いします
|
Re: カービィのエアライドみたいなゲーム
投稿者 : ドラグナー(FLH1Afk227.fko.mesh.ad.jp)
- 2007/10/24(Wed) 19:43
No.11567
|
|
|
|
Re: カービィのエアライドみたいなゲーム
投稿者 : Umintyu-(nthkid092062.hkid.nt.ftth.ppp.infoweb.ne.jp)
- 2007/11/03(Sat) 20:09
No.11582
|
|
|
|
自機オブジェクトをこんな感じに改造してみました。
ちょっと改造しすぎな点もありますが、参考にしてくれれば嬉しいです。
extends DxChar; akuseru=0; vx=0;vy=0;
MaxSpd = 4; //最高速度 Acc = 0.125; //加速力 Rll_nm = 2; //旋回力 Rll_ch = 5; //旋回力(チャージ時) chg_blk = 0.08;//チャージ中のブレーキ(大きいほどすぐ止まる 0〜1) chg_add = 3; //チャージケージ増加量 chg_hik = 10; //チャージ後のチャージケージ減少量 chg_Acc = 5; //チャージダッシュの加速力 chg_Msp = 10; //チャージダッシュ中の最大速度
chgMax = 100; //チャージ最大値 charge = 0; //チャージケージ chda_flag = 0; //フルチャージフラグ(1:ケージがまんたん)
while (1) { if(getkey(32)){akuseru=0;if(getkey(32)==1)chda_flag=0;} //スペースでチャージ else {akuseru=1;} //離せば加速 if(akuseru==1){//通常 vx+=cos(angle)*( Acc + chg_Acc * (chda_flag==1) ); vy+=sin(angle)*( Acc + chg_Acc * (chda_flag==1) ); //チャージダッシュ時はさらに加速 if (getkey(37)) angle-=Rll_nm; if (getkey(39)) angle+=Rll_nm; //旋回 charge -= chg_hik;//チャージを減らす if(charge<=0){//チャージが切れたら charge = 0; chda_flag = 0;//フルチャージフラグを0にし、ダッシュをやめる } } else {//チャージ中 vx = vx - vx*chg_blk; vy = vy - vy*chg_blk;//ブレーキをかける if (getkey(37)) angle-=Rll_ch; if (getkey(39)) angle+=Rll_ch; //旋回 charge += chg_add;//チャージケージ加算 if(charge>=chgMax){//フルチャージになったら charge = chgMax; chda_flag = 1;//フルチャージフラグを1にする } } spd = dist(vx,vy); msp = MaxSpd + chg_Msp * (chda_flag==1); //チャージダッシュ中は最大速度加算 if (spd>msp) { mvx = vx; mvy = vy; vx=vx - (vx*msp/spd) * 0.25; vy=vy - (vy*msp/spd) * 0.25; //最大速度以上はスピードをださないように少しずつ減速(0.25の値が小さいほど減速が遅くなる) spd2 = dist(vx,vy); if (spd2<=msp) { vx=mvx*msp/spd; vy=mvy*msp/spd;//減速しすぎたら最高速度の速さにする } } x+=vx; y+=vy;//移動 drawRect($viewx+10,$viewy+10,$viewx+10+chgMax*2,$viewy+30,$clwhite,-10); cl = colorHSL(10+10*cos($framecount*40),240,120+80*(chda_flag==1)); fillRect($viewx+10,$viewy+10,$viewx+10+charge*2,$viewy+30,cl,-9); $map.scrollTo(x-$screenWidth/2+vx*5,y-$screenHeight/2+vy*5);//(画面中央は進行先) update(); }
下のdrawRactでチャージケージを表示してます。
完全にエアライドに近い動きになってますが、どうもチャージダッシュ後の動作がちょっとおかしい・・・ もはや3ボタンです。$idouhoukouが使われてないのはごめんなさいorz
|
Re: カービィのエアライドみたいなゲーム
投稿者 : ドラグナー(FLH1Afk227.fko.mesh.ad.jp)
- 2007/11/05(Mon) 16:10
No.11583
|
|
|
|
おお!こんなに詳しく… さっそく試してみます!ありがとうございました!
|
|