HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0120
POWシューティングゲームの射撃プログラムについて3解決


POW

リンク

2022/1/20(Thu) 01:57:30|NO.95120

こんばんは、現在HGIMG3で3Dシューティングゲームを作っているのですが
射撃をするときの、プログラムがうまく作動しません。

自分なりに、ネットで調べて連射射撃などを再現しようとしているのですが
どなたか射撃のプログラムの構造を教えていただけないでしょうか?



この記事に返信する


POW

リンク

2022/1/20(Thu) 02:04:41|NO.95121

一応、ネット上にあるhsp2用のEasy3Dの射撃プログラムを改造して試したのですが、
最初は上手く作動したのですが、弾のXモデルオブジェクトが消えなかったりしたので。
弾の処理などは、オブジェクトモデルを削除しないで良いような感じにも出来るのでしょうか?



Makoto

リンク

2022/1/20(Thu) 16:34:48|NO.95123

どこでつまっているかわからないのですが、
とりあえず、スペースキーで弾を発射するサンプルを作ってみました。
押しっぱなしで連射出来るようになっています。

弾のオブジェクトは
発射する時に作成して、消えるときに削除するといった流れですね。
このサンプルにはありませんが、命中した時も同じです。

削除しない方法としては
あらかじめ全ての弾のオブジェクトを登録して非表示(OBJ_HIDE)にしておき
発射するときに表示し、終わったら再び非表示にするといった方法もあります。

#include "hgimg3.as" hgini setpos HGOBJ_CAMERA , 20 , 10 , 30 ; カメラ setang HGOBJ_CAMERA , deg2rad(45) , 0 , deg2rad(45) setcolor 255 , 255 , 255 ; 自機 addbox MDL_PLAYER , 2 , 2 regobj OBJ_PLAYER , MDL_PLAYER setcolor 0 , 255 , 255 ; ショット addbox MDL_SHOT , 1 , 1 SHOT_MAX = 10 ; 最大数 dim OBJ_SHOT , SHOT_MAX ; オブジェクト用 dim SHOT , SHOT_MAX ; 状態 SHOT_COUNT = 0 ; 発射間隔カウント *MAIN getkey SPC_KEY , ' ' ; スペースキー if SPC_KEY { ; 押された if SHOT_COUNT = 0 { ; カウントが0ならば発射 repeat SHOT_MAX if SHOT(cnt) = 0 { ; 未使用か SHOT(cnt) = 1 ; 発射状態に regobj OBJ_SHOT(cnt) , MDL_SHOT ; オブジェクト作成 break ; ループから抜ける } loop } SHOT_COUNT ++ ; 発射カウント+1 } if SPC_KEY = 0 or SHOT_COUNT > 3 { ; スペースが押されていないかカウントが最大 SHOT_COUNT = 0 ; カウントリセット } repeat SHOT_MAX if SHOT(cnt) = 1 { ; 発射状態ならば addpos OBJ_SHOT(cnt) , 0 , -2 , 0 ; 移動 addwork OBJ_SHOT(cnt) , 1 , 0 , 0 ; 移動カウント getwork OBJ_SHOT(cnt) , A , B , C if A > 20 { ; 一定回数移動したら SHOT(cnt) = 0 ; 未使用状態に delobj OBJ_SHOT(cnt) ; オブジェクト削除 } } loop hgdraw hgsync 30 getkey ESC_KEY , 27 ; ESC キー if ESC_KEY { end } ; 押されたら終了 goto *MAIN



POW

リンク

2022/1/24(Mon) 21:40:45|NO.95176

Makoto様
ありがとうございます。!!
組み込んで何とか、応用することが出来ました。
ありがとうございます。m(_ _)m



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.95120への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2021(c) All rights reserved.