質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

Q&A

0回答

1789閲覧

東方みたいな弾幕の作り方

yui041199s

総合スコア0

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

0グッド

0クリップ

投稿2020/09/03 02:27

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
C言語を使い東方の弾幕ゲームもどきを作ってるのですが、敵の弾幕で
「弾が止まった状態で画面に沢山出現し、数秒後に動き出す」と言う弾幕を作りたい
のですが作り方が分からないので何方か教えてください。

■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

「C言語」 ソースコード

// 設定値
static const float FLOOR_Y = WINDOW_HEIGHT - 100.0f; // 床座標
// 出現パラメーター
// パーティクルパラメーター
static const int PIECE_MAX = 50; // パーティクルの総数
bool active[PIECE_MAX]; // 今使っているならtrue, 使ってなければfalse
int lifeTime[PIECE_MAX]; // ピースが出現している時間
float positionX[PIECE_MAX]; // 座標
float positionY[PIECE_MAX];
float velocityX[PIECE_MAX]; // 速度
float velocityY[PIECE_MAX];

static const int SPAWN_COUNT = 20;//1フレーム現数
//static const int LIFE_MAX = 120; //生きている時間
int timeCount;//出現時間数える

int PieceMove;
int pieceImage = -1;

float r;//円の半径(展開範囲)
float ang = 0.0f;

void EffectInit()
{
// 画像の準備
pieceImage = LoadGraph("data\texture\bullet2.png");

r = 100.0f; PieceMove = 0; // データを for (int i = 0; i < PIECE_MAX; i++) { active[i] = true; positionX[i] = 400.0f; positionY[i] = 300.0f; velocityX[i] = 0.0f; velocityY[i] = 0.0f; lifeTime[i] = 0; }

}

void EffectUpdate()
{
PieceMove += 1;
if (PieceMove <= 500) {

//r -= 0.5f; ang -= 0.05f; } for (int i = 0; i < PIECE_MAX; i++) { positionX[i] = r * ((float)i / PIECE_MAX) * cos(DX_PI / 18 * i + ang) + 400.0f; positionY[i] = r * ((float)i / PIECE_MAX) * sin(DX_PI / 18 * i + ang) + 300.0f; //positionX[i] = r * cos(DX_PI / 18 * i + ang) + 400.0f; //positionY[i] = r * sin(DX_PI / 16 * i + ang) + 300.0f; } /*for (int i = 0; 250 > PIECE_MAX; i++) { positionX[i] = r * cos(DX_PI / 18 * i - ang) - 400.0f; positionY[i] = r * sin(DX_PI / 18 * i - ang) - 300.0f; }*/

}

void EffectDraw()
{
for (int i = 0; i < PIECE_MAX; i++) {
if(active[i])
DrawRectGraph(positionX[i], positionY[i], 0, 32, 32, 32, pieceImage, true, false);
}
}

void EffectRelease()
{
DeleteGraph(pieceImage);
pieceImage = -1;
}

試したこと

色々試していたら螺旋の弾幕は出来たのですが
上記のような弾幕が作れませんでした。

補足情報(FW/ツールのバージョンなど)

Visual Sturdyを使用しています。

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問