hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
小ワザ/弾の射出 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

弾の射出 [hsp3]

シューティングゲームの「シューティング」たる所以、弾の射出について。

簡単なサンプル

他の機能を削ぎ落とした、簡単なサンプルです。
一度に発射できる弾は1発のみです。

Everything is expanded.Everything is shortened.
  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
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#const mySize 10        // 自機の大きさ(1辺の半分)
#const bulletSize 5     // 弾の大きさ(1辺の半分)
 
    myX = ginfo_winx / 2
    myY = ginfo_winy * 4 / 5
 
*main
    redraw 0
    color 255, 255, 255 : boxf
    gosub *shot         // 弾を射出
    gosub *moveBullet   // 弾の移動
    gosub *drawMyShip   // 自機の描画
    gosub *drawBullet   // 弾の描画
    redraw 1
    await 10
    goto *main
 
*shot
    getkey pushed, 'Z'  // Zキーで発射
    if pushed : gosub *makeBullet
    return
 
*makeBullet
    bulletFlag = 1      // 弾が射出済み
    bulletX  = myX
    bulletY  = myY - mySize - bulletSize
    bulletVX = 0
    bulletVY = -8
    return
 
*moveBullet
    if bulletFlag == 0 : return
    bulletX += bulletVX
    bulletY += bulletVY
    return
 
*drawMyShip
    color 0, 0, 255
    boxf myX - mySize, myY - mySize, myX + mySize, MyY + mySize
    return
 
*drawBullet
    if bulletFlag == 0 : return
    color 255
    circle bulletX - bulletSize, bulletY - bulletSize, bulletX + bulletSize, bulletY + bulletSize
    return

ゲームとして利用するには上記サンプルに載せた機能だけでなく、

  • 弾が画面外に出たら消去する
  • 複数の弾が発射できるようにする
  • 連射に制限をかける

といった機能を追加するのが一般的です。

+  画面外消去と連射制限を実装したサンプル

以下の記事が参考になるでしょう。

衝突判定
弾と敵の衝突を調べる
キャラクター管理
複数のキャラクターを動かす

コメント


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2007-04-08 (日) 02:48:04 (2436d)