忍者ブログ
プログラミング初心者のゲーム創作過程の記録です。ソースも載せるかも…
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


ラベル型変数って変わった機能がHSPの3には実装されてるみたいです。
それを使えば敵を移動させるとき
gosub enemyAction(i, enemyStatus(i, ENEMY_ACT_COL))
みたいにすれば敵の種類それぞれに関数を作らないで一般化させて扱える!!
って思ってラベル型を使って敵移動関数を作りました。
本当言うと if 文で同じことが一行で出来たと思うんだけど、
何かこっちの方が直感的じゃないかと思ってラベル型で書いてます。


;--------------------LINE------------------

*move_line//等速直線運動又は停止
//直線移動
    es_apos enemyStatus(i, ENEMY_SPR_COL), enemyStatus(i, ENEMY_VX_COL), enemyStatus(i, ENEMY_VY_COL), 1

    return

;--------------------CURVE------------------
*move_curve//等加速度運動
//速度計算
    enemyStatus(i, ENEMY_VX_COL) += enemyStatus(i, ENEMY_AX_COL)
    enemyStatus(i, ENEMY_VY_COL) += enemyStatus(i, ENEMY_AY_COL)
//移動
    es_apos enemyStatus(i, ENEMY_SPR_COL), enemyStatus(i, ENEMY_VX_COL), enemyStatus(i, ENEMY_VY_COL), 1

    return

;--------------------CIRCLE------------------
*move_circle//円又は楕円運動
//(ENEMY_VX_COL, ENEMY_VY_COL), (ENEMY_AX_COL, ENEMY_AY_COL) = 比(縦, 横), 角(現在, 回転)
//(1, 1), (0, 1) = 半径55
//(a, b), (0, c) = 55*a*b/c
//速度計算

    es_sin s, enemyStatus(i, ENEMY_AX_COL) : es_cos c, enemyStatus(i, ENEMY_AX_COL)
//移動
    es_apos enemyStatus(i, ENEMY_SPR_COL), enemyStatus(i, ENEMY_VX_COL) * s / 1024, enemyStatus(i, ENEMY_VY_COL) * c / 1024, 1
//回転角計算
    enemyStatus(i, ENEMY_AX_COL) = (enemyStatus(i, ENEMY_AX_COL) + enemyStatus(i, ENEMY_AY_COL)) \ ANG_MAX

    return

それでさっきのラベル型配列で飛ぶ先がこっち。
それぞれ引数の組み合わせで好きなように出来ますし、一応一キャラにつき移動方法は5つまで記憶でき、最後まで移動すると最初に戻ってループするようになってます。
3つでもいいかなって思うんですが、とりあえず5つで。
それで円運動は es_dir を使うと移動方向が角度指定で簡単に円運動は可能なんですが、楕円運動も一緒の関数で処理してしまおうと考えて上のようになりました。

なんでこんなに一般化してプログラムしてるのかは次に計画してることでようやく威力を発揮すると思ってるんですけど……そっちのプログラムは未だに完成しないんよ……;
PR

Comment
Name
Title
Mail
URL
Comment
Pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
[15] [14] [13] [12] [11] [10] [9] [8] [7] [6] [5
«  Back :   HOME   : Next  »
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
プロフィール
HN:
すず
性別:
男性
自己紹介:
プログラムもSTGも初心者です(^_^;)
昔ツインビーやゼビウス、グラディウスを少し遊んでました。最近は東方を遊んで弾幕ゲーにカルチャーショックをw
現在友達とまったり製作中...
カテゴリー
最新コメント
ブログ内検索
バーコード
忍者ブログ [PR]