ボスのアニメーションのさせかた

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

ボスのアニメーションのさせかた

#1

投稿記事 by OZ » 12年前

今龍神録を改造しているのですがボスのアニメーションのさせ方が分かりません。

龍神録プログラミングの館の10章「敵を表示させてみよう」を応用すれば出来るんじゃないかと思ったのですが、
どこでアニメーションの計算をしているのかが分かりません。
graph.cppで計算してるんですかね?

何かヒントが欲しいです。
よろしくお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ボスのアニメーションのさせかた

#2

投稿記事 by softya(ソフト屋) » 12年前

敵だとenemy.imgがアニメの番号になります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

OZ

Re: ボスのアニメーションのさせかた

#3

投稿記事 by OZ » 12年前

龍神録で敵や自機の画像がどんな仕組みでアニメーションされているのかがよく分かりません…

4章や10章を見る限り、
struct.hに構造体を作る

GV.hに画像の配列を用意する

load.cppで用意した配列に画像を分割ロード

graph.cppで画像を描画
という風な感じでやっているみたいですが、何故ちゃんとアニメーションになるのか不思議です。

>>敵だとenemy.imgがアニメの番号になります。
アニメの番号とはどういう事ですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ボスのアニメーションのさせかた

#4

投稿記事 by softya(ソフト屋) » 12年前

OZ さんが書きました: >>敵だとenemy.imgがアニメの番号になります。
アニメの番号とはどういう事ですか?


ここ → load.cppで用意した配列に画像を分割ロード
で分割され画像の配列の番号って事ですね。

よく分からない場合、下記の内容を理解されたほうが良いと思います。
http://dixq.net/g/19.html
http://dixq.net/g/20.html
http://dixq.net/g/21.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

OZ

Re: ボスのアニメーションのさせかた

#5

投稿記事 by OZ » 12年前

うーん…

ボスの画像を分割ロードして
img_boss[0][boss.img]
としても、最初の一枚目(アニメ番号0)だけが表示されてしまって
アニメーションされないです

boss.imgの部分を0や1などの数字にするときちんとその番号の画像が表示されるので
[]の中を数字にすれば上手くいくかと思い以下のようにやってみましたが
やっぱり最初の一枚目だけが表示されます
graph.cpp

コード:

void graph_boss(){
	int i;
	int k=0;
	if(boss.flag==0)return;
	graph_boss_effect();
	DrawRotaGraphFdF(boss.dx,boss.dy,1.0f,0.0f,img_boss[0][k%4],TRUE);
	if(boss.hp_max==0){printfDx("graph_boss内0割り\n");return;}
	for(i=0;i<FMX*0.98*boss.hp/boss.hp_max;i++){
		if(boss.back_knd[boss.knd]==1)
			DrawGraphFd(3+i,2,img_etc[7],FALSE);
		else
			DrawGraphFd(3+i,2,img_etc[1],FALSE);
	}
    k++
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ボスのアニメーションのさせかた

#6

投稿記事 by softya(ソフト屋) » 12年前

int k=0;だとgraph_boss()関数を呼び出すたびに0に初期化されます。つまり変化が起こりません。
ローカル変数の変数の寿命は関数を抜けるまです。
ずっと残したい情報は構造体で管理して下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

sql

Re: ボスのアニメーションのさせかた

#7

投稿記事 by sql » 12年前

推奨はしませんが・・・「static int k = 0;」としてみるとどうでしょう・・・

OZ

Re: ボスのアニメーションのさせかた

#8

投稿記事 by OZ » 12年前

無事解決できました!
前のままだと1秒間に60回画像が切り替わり、せわしない感じになったので
if文で1秒間に6回画像が切り替わるように調整して完成しました
お世話になりました

softya(ソフト屋)さん
ローカル変数だから上手くいかなかったんですね
確認不足でした…

sql さん
staticを使う手もあったのですね
基本を勉強したときにきっと使わないだろうと高を括り
熱心にやらなかったのですっかり存在を忘れていました(^^;)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ボスのアニメーションのさせかた

#9

投稿記事 by softya(ソフト屋) » 12年前

sqlさんも書いていますが、staticは弊害も多いので迂闊に使わないほうが良いです。
変数の寿命とか無意識に気にかける事が出来るようになってからのほうが良いでしょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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