ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

弾幕つくろうぜ!コミュの弾の基本パターン

  • mixiチェック
  • このエントリーをはてなブックマークに追加
ここには、弾の基本パターンの組み方を載せていこうと思います。

まぁ、暇があるときにですが。
質問とかもおっけーです。

コメント(8)

とりあえず、かなりトピ作って間が空きましたが、トリアエーズ、一回目。

<好きな方向へ撃つ弾>
まず、基本中の基本。
これが全ての弾幕の基本になります。

typedef struct{
float x, y;  //座標
float vx, vy; //加速度
float ang; //角度
}BULLET;

BULLET Bullet

ちなみに↑のような奴をプログラム(C/C++)では「構造体」
と呼びます。
ここら辺の説明は、飛ばしますが、わからなかったら聴いて下さいね。

で、弾の設定
今回は座標(0,0)の位置から発射する事にします。
(座標系は右方向をx、上方向をyとします)
そして、移動させたい方向を-90°(270°)とします。

Bullet.x = 0;
Bullet.y = 0;
ang = -90/(180*3.141592f);

となります。

ちなみに
-90/(180*3.141592f)はラジアンを算出しています。
弾幕では頻繁にsin,cosなどを使います。
そのときには角度をラジアンにしておく必要があります。
もし、ラジアンでそのまま計算できない方は、

rad = θ/(180*3.141592f) //θは度、radはラジアンです

の公式を覚えておくなり、関数化しとくといいでしょう。

逆に角度を求めたい場合は、

θ = rad*(180*3.141592f)

となります。

*******************
ここで豆知識。
注)ここでは3.141592をπと置く
  また、今後も3.141592はπとする。
0° = 0
90° = π/2
180° = π
270° = π*3/4
360° = 2π
*******************

では、移動の処理へ。

さてさて、では早速この角度を使ってみましょう。

Bullet.vx = cos(ang);
Bullet.vy = sin(ang);
注)cos(),sin()を使うときはmath.hをインクルードすること!

というようにやります。
基本的にcos()は横方向に作用させるときに使います。
同じようにsin()は上方向に作用させるときに使います。

速度を緩めたいときは
Bullet.vx = cos(ang)*0.01f;
Bullet.vy = sin(ang)*0.01f;
といったようにすればよいでしょう。

後は毎フレームごとに

Bullet.x += Bullet.vx;
Bullet.y += Bullet.vy;

としていきます。
これで、今回の説明は終わりです。

一応、サンプルを打っておきます。

#include <math.h>

//円周率を定義
#define PI 3.141592
//構造体定義
typedef struct{
      float x, y; //座標
      float vx, vy; //加速度
      float ang; //角度
}BULLET;

void BulletMove{
      //構造体宣言
      BULLET Bullet;

      //座標(0,0)を代入
      Bullet.x = 0;
      Bullet.y = 0;
      //角度をラジアンに変換して代入
      //今回は-90°
      ang = -90/(180*PI);
      //加速度設定
      Bullet.vx = cos(ang);
      Bullet.vy = sin(ang);

      //ループ
      //弾がx座標の10より大きくなる、
      //またはx座標が-10より小さくなる
      //またはy座標の10より大きくなる、
      //またはy座標が-10より小さくなる
      //と、ループを抜ける
      while(Bullet.x < 10 || Bullet.x > -10
      || Bullet.y < 10 || Bullet.y > -10){
      Bullet.x += Bullet.vx;
      Bullet.y += Bullet.vy;
     }
}

というようになります。

では、一回目はこの辺で〜。
質問などはお気軽に!
始まりましたね〜一回目.
弾幕生成の基本中の基本ですね.
弾角度に「敵→自機」という角度情報を与えてやれば,自機狙い弾を作ることができますね.弾源から複数弾が出るようにすれば,バラ撒き弾とか,nWay弾なんかも作れますね.
それでは,次回を楽しみにしていますね♪
やっと一回目やりました(汗
上のをどんどんいじっていけばいろいろなパターン作れますからね。

じゃ、二回目は狙い撃ちについて書こうかな〜。
でも本当に上のをちょこっといじるだけなんで相当短いですよw
第2回目を楽しみにしていますw

次は自機狙い弾やね。

チョン避け推奨w
>K.G.さん
ちょい避けでかすりを稼いで、とw
でも、狙い撃ちは一行追加するだけで、
あっという間に回避不能な誘導弾へ!
ガクブル…
そこは誘導角の最大値を設けることで華麗にカバー・・・

レイフォースみたいな誘導レーザーが作りたくて
一度チャレンジしたことがあるけど、細かい挙動が難しいorz
>K.G.さん
ですねw

誘導レーザーですか…
自分も未だに作ったこと無いですね。

落ち着いたら作ってみますか。
んで、コードをうpしますか。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

弾幕つくろうぜ! 更新情報

弾幕つくろうぜ!のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。