hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。 |
repeat 2; 1 or 3 or 4 ... gosub *control m_atari vx, vy await 16 loop ... ;await 20
x.0=200 : y.0=200 x.1=350 : y.1=300 x.3=0 : y.3=0 x.4=0 : y.4=0 maxvel.3=0 maxvel.4=0 frict.0=0 mc=1 ax.0=2 : ay.0=2 vx.0=ax.0*mc : vy.0=ay.0*mc *main if x.0<0 | x.0>512 | y.0<0 | y.0>512 { x.0=200 : y.0=200 mc+ vx.0=ax.0*mc vy.0=ay.0*mc } await 67かなり本質的な部分で斜め方向からの処理が不完全です。
1 それぞれの物体の現在の速度での移動後の仮座標を算出 2 それぞれの仮座標同士で接触を調べる。(ここでは速度は関係ない) 3 接触していたら接触時の処理で行えば良いはずです。
xr = x + w - 1です。 x=10 , w=8 の矩形の右端の座標 xr = 10 + 8 - 1 = 17
10 12 14 16 □□□□□□□□ 11 13 15 17となります。 -- naznyark? 2006-02-14 (火) 01:41:35
#deffunc Collision if (x+Width_x < px) { hyouji = "判定なし" } else:if (px+Width_px < x) { hyouji = "判定なし" } else:if (y+Width_y < py) { hyouji = "判定なし" } else:if (py+Width_py < y) { hyouji = "判定なし" } else { hyouji = "判定あり" } returnソースまだ読んでないのですが、当たり判定を。 -- Charlotte 2006-02-17 (金) 00:30:14
if status(cnt)= { if buf_num(cnt)= & buf_px(cnt)= & buf_py(cnt)= { ;if movetype(cnt)= | zokusei(cnt)= { buf_px(cnt)= : buf_py(cnt)= : acnt(cnt)= zokusei(cnt)= : movetype(cnt)= } }あまりに汎用性が無さ過ぎます。
また変身の場合に限らず上のように画像表示に関する変数を画像表示以外の判定などに使用すると画像ファイルの内容に対する自由度が低くなったり、使用する画像ファイルを変更しただけでプログラムの書き換えが必要になったりして不便なことになります。
方法2 変身後のデータをチップ変数として用意する。
チップ変数の種類が増えます。
if f_henshin(cnt)= { buf_px(cnt)=buf_px_c(cnt) : buf_py(cnt)=buf_py_c(cnt) : acnt(cnt)=acnt_c(cnt) zokusei(cnt)=zokusei_c(cnt) : movetype(cnt)=movetype_c(cnt) }
意味の無い無駄な変数が多くなります。
(変身しないチップにとっては完全に無駄。複数の変身を可能にする場合はさらに変数が増える。)
それ以外は汎用性も拡張性もあり悪くはないです。
方法3 実際には変身させずに複数のチップを切り替える。
切り替え先チップのIDを用意して、チップの表示・当たり判定を切り替えます。
if f_henshin(cnt)= { zokusei(cnt)= : status(cnt)= zokusei(idhenshin(cnt))= : status(idhenshin(cnt))= }
ステージ作成時に作成者からみてのチップの管理が大変になります。
方法1以外なら悪くは無いのですが、明らかな無駄が多いプログラムはそうでないプログラムと比べると
問題は多くなりがちです。(必要な無駄か明らかな無駄かの見極めは難しいですが。)
どういうやり方をするかは個人的な好みの問題もでてきますが、データ構造の仕様などは必要最小限の基本的な状態から拡張を続けていくよりは早い段階の内に最終形を見据えた状態で作っておいたほうが結局後々楽ですです。
(メイン部分が本格的なチップイベント(アクション)実装段階に入り掛けている今が大規模な仕様変更ができる最後のタイミングと思っていたほうが良いです。) -- naznyark? 2006-04-17 (月) 00:20:32
i=変身元チップNo : j=変身先チップNo buf_px(i)=buf_px(j)...とするだけだと思います。
-- naznyark? 2006-06-12 (月) 00:13:33