東方文花帖の撮影機能について。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

東方文花帖の撮影機能について。

#1

投稿記事 by » 17年前

初めまして。
龍神録プログラミングの館を頼りにSTGをある程度作ったのですが、
東方文花帖では、弾を放つのではなく、写真を撮るという内容のゲームなのです。
そこで、撮影機能に凄い興味がわき自分もこの機能の勉強をしたいと思って書き込みました。
どうやってプログラムを組めば、撮影が可能になるのでしょうか??

array

Re:東方文花帖の撮影機能について。

#2

投稿記事 by array » 17年前

撮影機能は便利なのがDXライブラリにあります。
int SaveDrawScreen( int x1, int y1, int x2, int y2, char *FileName ) ;
を使って、スクリーンショットの範囲を決めてやり、この範囲を少しづつ小さくしていきつつ・・・と説明したら長くなりそうなのでやめますが。

(ショット=写真を撮る)

要点として
ショット中はプレイヤの移動はしない。
ショット中は撮影位置の移動。
ショットは、時間経過に基づき、少しずつ撮影可能範囲が狭くなる。
範囲外に相手が居ればショットミス。
ショット範囲内の弾は消す。
ショット後は次回ショットまでのカウントを初期化する。

他にも細かく言えば要素がありますが、とりあえずこんな感じで組めば良いと思います。

あとは撮影範囲のエフェクトですよね。とりあえず撮影範囲はDrawBox()で描画しておいて、それっぽい動きをさせてやれば良いと思います。

名無しさん

Re:東方文花帖の撮影機能について。

#3

投稿記事 by 名無しさん » 17年前

描画をバックバッファに直接行う前にレンダーターゲットテクスチャに描画するだけです
描画したテクスチャをsetTextureしてお好みの範囲(写真の大きさ)を指定して描画すればOKです

array

Re:東方文花帖の撮影機能について。

#4

投稿記事 by array » 17年前

名無しさんの処理は分らないのですが、なんか軽そうで良いですね。

ちなみに
SaveDrawScreen( ) ;
は、画面を座標範囲を指定してやり、BMPとして保存する関数ですので、重そう・・・。そしてそれを画像として読み込む必要があるので一瞬止まる可能性も(実際にやってみないと分りませんが)。その画像を希望する動きをさせながら定位置に持っていく・・・というのをイメージしてました。

木霊

Re:東方文花帖の撮影機能について。

#5

投稿記事 by 木霊 » 17年前

arrayさんと同系列のやり方であれば

GetDrawScreenGraph ( int x1, int y1, int x2, int y2, int GrHandle );

の方が使えそうです。詳細はリファレンスの「グラフィックデータ制御関数」の中ほどからいけます。
画像を保存せずに直接読み込むので少しだけましです。

DerivationGraph( int SrcX, int SrcY, int Width, int Height, int SrcGraphHandle );

と組み合わせて使えば何とかなるかもしれません。

名無しさんのやり方の方はDXライブラリの関数ではなく、DirectXの関数(正確にはその中のDirect3D)なので、
ちょっと敷居が高いです。

Justy

Re:東方文花帖の撮影機能について。

#6

投稿記事 by Justy » 17年前


>名無しさんのやり方の方はDXライブラリの関数ではなく、DirectXの関数(正確にはその中のDirect3D)なので、
>ちょっと敷居が高いです。

 DXライブラリでも使えますよ。
 MakeScreen()で作ったテクスチャを SetDrawScreen()すれば、
以後は描画したものは全てそのテクスチャにレンダリングされます。

 とはいえ、実際にゲームの中で使うには仕様にも依りますが、
望み通りのものを作るには多少工夫が必要になるかもしれません。

管理人

Re:東方文花帖の撮影機能について。

#7

投稿記事 by 管理人 » 17年前

私がもしそれを行うなら

MakeGraphでグラフィックを作って

GetDrawScreenGraphで読み込み、それを使用します。

詳しくはこちらをご覧下さい。

http://homepage2.nifty.com/natupaji/DxL ... html#R3N12

bmpファイルへの保存はそのエリアをクリアして情報を保存する時でいいんじゃないかと思います。

あのゲームは、撮った写真の評価を自動でするのがすごいですよね。

閉鎖

“C言語何でも質問掲示板” へ戻る