1 名前:名前は開発中のものです。 mailto:sage [2008/05/11(日) 01:41:47 ID:PRhlwPyW] 無料Windows用2Dゲーム作成ツール"Game Maker"について、色々と語り合うスレッドです。 ●本家(英語) ttp://www.gamemaker.nl/ ●GameMaker Japan - 非公式情報サイト(日本語) ttp://gamemaker.main.jp/ ●初心者向けチュートリアル ttp://gamemaker.main.jp/modules/articles/index.php?cat_id=1 前スレ: 【2D】ゲーム作成ツールGameMaker【マンセー】 pc8.2ch.net/test/read.cgi/gamedev/1087068523/
120 名前:名前は開発中のものです。 mailto:sage [2008/06/08(日) 23:36:33 ID:NJgDJbX1] マリオみたいなジャンプアクションは どうすればいいのでしょうか? たとえば走りながらジャンプ等 初心者すぎる質問で申し訳ありません
121 名前:名前は開発中のものです。 mailto:sage [2008/06/09(月) 00:17:01 ID:QzRxZbxD] >>120 ジャンプアクションの要素を羅列してみる。 ・空中に居ると下に落ちる ・床の上にキャラが乗れる ・左右にキーを入れると加速する。ダッシュボタンを押すと最大速度が上がる ・床に乗っている状態でジャンプボタンを押すとジャンプする。 とりあえずダッシュしながらジャンプは、ジャンプの際は横のスピードはいじらずに上にだけ速度を加えればいいと思うよ
122 名前:名前は開発中のものです。 mailto:sage [2008/06/09(月) 00:42:40 ID:ekIBUZL+] >>113 みるべきところはそこじゃなす Edgeかなにかで描いたんだろ?
123 名前:名前は開発中のものです。 [2008/06/09(月) 15:28:48 ID:N/jbPRoy] >>120 素人の俺が考えて見たサンプルをどうぞ www2.uploda.org/uporg1471552.zip 中身がゴチャゴチャしてスマン。
124 名前:120 mailto:sage [2008/06/09(月) 20:00:05 ID:2DlmJVHk] >>121 >>123 回答ありがとうございます 後>>123 のファイルは解凍した後のファイルが読めないのですが どうしたら読めるようになりますか? このファイルを読み込むプログラム〜と言われてしまいます
125 名前:名前は開発中のものです。 [2008/06/09(月) 20:03:20 ID:N/jbPRoy] >>124 言い忘れてたけど>>123 のはgm6で作った奴だ
126 名前:名前は開発中のものです。 mailto:sage [2008/06/09(月) 20:30:48 ID:MbRvBo5s] ということもあるので使用バージョン、レジストの有無はなるべく書いてね 公式のチュートリアル(Platform Gamesってやつね)眺めるだけでも けっこう参考になると思うんだが、あれも今はGM7用のしか置いてないな
127 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 02:44:02 ID:S3IlP6Mt] 上位互換性はあったような。 互換というよりは、古verのものを新verの形式に書き直す、とかだったような気がするけど。 ファイルを直接ダブルクリックとかでは開けられないだろうから、GMから開くとかDrag&Dropとか……。 何にせよ、話が噛み合わないとどうしようもないので、情報は書いておいて欲しいもの。
128 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 08:16:48 ID:WKUtiVJV] 実際5から6では殆んどエラー吐いて起動しない場合が多いよ。 6から7なら大丈夫だろうけど。 まあ567全部インストールしておけば問題ないんだろうけどね
129 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 12:07:20 ID:1Irexyd7] BGMやムービーを安易に見れないようにできる?
130 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 13:37:08 ID:WKUtiVJV] >>129 BGMやムービーを別々にして配布したいなら、拡張子を変更しつおいて、使う時だけリネームして読み込み、使い終わったら戻すって方法位かなぁ。 別々にしたい訳じゃないけど読み込みに時間かけたくない!ってのなら、6以降限定だが、Global Game SettingのIncludeで本体に含めてから実行時に展開するようにすればいいよ。
131 名前:名前は開発中のものです。 mailto:sage [2008/06/10(火) 14:29:23 ID:1Irexyd7] >>130 thx
132 名前:113 mailto:sage [2008/06/10(火) 20:08:22 ID:6sraZo9R] >>110 うーm。。。答えてもらえないか スレ違いだけど、素材作りにEdge管理で行き詰まり感じてて… でもどこに質問しにいけばいいか分からなかったので質問させていただきました。 「3D→2D素材化」って流れで作られたものに見えたんで この行き詰まりから脱せるんではないかって希望を見てしまったんでs
133 名前:名前は開発中のものです。 mailto:sage [2008/06/11(水) 16:39:10 ID:EVNflJcn] ダウンロードしてみようと思ったがyoyoに繋がらない、自分だけ?落ちてる?
134 名前:名前は開発中のものです。 mailto:sage [2008/06/11(水) 21:49:55 ID:5ZX5tJO/] >>133 今は大丈夫みたいだが、どう?
135 名前:133 mailto:sage [2008/06/11(水) 22:29:57 ID:++rYAqEK] >>134 今やったらできた〜どうもです
136 名前:名前は開発中のものです。 mailto:sage [2008/06/12(木) 00:56:25 ID:4EAhP+NE] 未レジストだから出来ない、、、。orz
137 名前:名前は開発中のものです。 mailto:sage [2008/06/12(木) 08:09:28 ID:9TqDsi5l] >>136 ダウンロードが? ダウンロードなら特に何も問題なく出来るはずだが……
138 名前:名前は開発中のものです。 mailto:sage [2008/06/12(木) 10:22:01 ID:zGKrtRU4] 日本ユーザーを増やして yoyoに日本語対応してもらうのだ
139 名前:名前は開発中のものです。 [2008/06/13(金) 15:58:32 ID:tjeMHdYO] TPSは流石に作れないよな・・・
140 名前:名前は開発中のものです。 mailto:sage [2008/06/13(金) 17:37:16 ID:8tjP+W25] >>139 5.3で作られたFPSがあったから、工夫次第では未レジストでも疑似3Dで作れると思う。 海外の作品で、doomとかいうタイトルだったような ただプレイしてて激しく酔った記憶が……
141 名前:名前は開発中のものです。 mailto:sage [2008/06/14(土) 11:38:27 ID:4m4S8SwE] テスト
142 名前:名前は開発中のものです。 mailto:sage [2008/06/15(日) 19:59:47 ID:n3ZqdSRd] 5.3より後のバージョンって公式・非公式ともに日本語化の予定ないの?
143 名前:名前は開発中のものです。 mailto:sage [2008/06/18(水) 10:02:15 ID:0+3MnSWl] GM7のsprite_add_alpha()等のアルファチャンネル関連はレジスト版のみの機能ですか? 未レジスト版ならGM7でもGM6でも大差無いのかな
144 名前:名前は開発中のものです。 mailto:sage [2008/06/20(金) 18:49:05 ID:Xt39fvZ+] >>143 レジスト版だけみたい。 未レジストなら基本6と変わらないかも。 それと、6で同じ効果音が重なる場合、うまく再生されないんだけど、これって何が原因かね? 他の効果音ならどんなに重なって鳴っても大丈夫なのに、一つだけうまく鳴らない音があるんだけど……
145 名前:名前は開発中のものです。 mailto:sage [2008/06/21(土) 06:42:13 ID:j/kRwP45] 情けないほど初歩的な部分で躓きました 配列の長さ(サイズ)を取得する方法を教えて下さい ヘルプとフォーラムには目を通したのですが初歩的すぎるのか見つかりません
146 名前:名前は開発中のものです。 mailto:sage [2008/06/21(土) 11:32:20 ID:NtqmRukW] 信じられねぇが、ないんだよそれ。<配列サイズの取得法 というか、変数を定義した瞬間、特に制限無く配列として使用できてしまうし。 サイズ情報を管理する変数を自分で用意するとかしか思いつかん。非常に面倒だが。 それか、配列として扱う論理的なオブジェクトを作って、インスタンス数を数えるとか、か・・・?
147 名前:名前は開発中のものです。 mailto:sage [2008/06/21(土) 12:59:26 ID:j/kRwP45] なるほど・・・ 残念ではありますが逆にスッキリいたしました 無いと分かれば割り切って強引なコーディングに踏み切れそうです スマートに書きたいならレジストしてスタックやキューを使えということでしょうかね 勉強もかねてもう少し頑張ってみます ありがとうございました
148 名前:名前は開発中のものです。 mailto:sage [2008/06/21(土) 19:29:15 ID:S/Uv8sSk] メモリの使用量が気になってきたのですが メモリ使用率削減のテクニック教えてもらえないでしょうか?
149 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 00:34:10 ID:3YikmJWj] 前wikiのログがあったのでwikiにはっときました
150 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 09:10:47 ID:NRn4PvdD] とても困ってる事がございます。 連結された文字列の名前の変数、インデックスを作りたいと 考えております。 str ='var_' str +='100' //str='var_100' //これを変数var_100として使用したい //例えば //SPRスプライトをvar_100に割り当てる //sprite_assign(var_100,spr) sprite_assign(??????,spr) この??????が連結された文字列と同じ名前のインデックスになるような 指定をしたい場合、どうすればいいでしょう?
151 名前:名前は開発中のものです。 mailto:sage [2008/06/22(日) 10:21:52 ID:9BAqCfGF] variable_global_set(name, val) variable_global_get(name) variable_local_set(name, val) variable_local_get(name) が使えそうですね。たとえばこんな感じで・・・。 /* インスタンス内の変数var_0 〜 var_100 に、0〜100をセットする */ for (i=0;i<=100;i+=1) { str = 'var_'+string(i); variable_local_set(str,i); } /* 変数var_100で示すスプライトインデックスに、スプライトsprを割り当てる */ sprite_assign(variable_local_get('var_100'), spr); ただし、sprite_assign()の第一引数は、存在する(存在していた)スプライトインデックスで無いとエラーを起こすんで、注意してください。
152 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 03:08:54 ID:+uYxoItW] mbTextScript使ってる人って居る? 6.1で縦16横8ピクセルの半角文字を1080字程描画すると、 それだけで20FPSくらいになるんだけど、普通なのかな?
153 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 04:23:32 ID:SW9HLMt8] それは仕方ないんじゃないか? 1文字1文字スプライトから切り貼りして表示しているんだし・・・。 1080字も一度に書くとかなりの負荷なんじゃないかな。 サーフェスとか画面から見えないところで描画して、 描画したものをスプライト登録してそれを画面表示する、 とかするとよいかもね。この方法はレジスト版でしか出来ないけど。
154 名前:名前は開発中のものです。 mailto:sage [2008/06/24(火) 12:28:37 ID:+uYxoItW] >>153 うーん、レジストはしてあるんだけど、肝心の描画したい物がデータリスト的な物で、 ちょこちょこ切り替えるからなぁ。 とりあえず色々試してみます。 ありがとうございましたー
155 名前:名前は開発中のものです。 mailto:sage [2008/06/25(水) 21:39:01 ID:4PLXCLdL] ヤフーのフリーメールで登録できないorz おまいらどこのフリメ使ってる?
156 名前:名前は開発中のものです。 mailto:sage [2008/06/26(木) 08:07:08 ID:ZUCsxIUu] bGMで曲を流してる時にフルスクリーンに切り替えると曲が止まるのは何故だ……? >>155 hotmail。ただし.comで。.co.jpは知らん。
157 名前:名前は開発中のものです。 mailto:sage [2008/06/26(木) 21:10:56 ID:+fAgrEGQ] hoge = instance_create(0,0,objHoge); hoge.sprite_index = "spr_" + "piyo"; こんな感じでsprite_indexを変数で指定したいのですが上手くいきません piyoの部分は100種類ほどあり増減の可能性もあるため逐一条件分岐で書くのは避けたいです hoge.sprite_index = 4; と、直接indexを数値で指定するというのも考えたのですが 画像と数値の管理が面倒そうで試してません 何か良い方法ないでしょうか
158 名前:よこしま mailto:sage [2008/06/26(木) 21:27:15 ID:ls1Ls4j4] >>156 ウィンドウモードを切り替えたときに、bGMが親ウィンドウを見失うために終了していたようです。 以下の対策で解決すると思います。 1. bGM_play()スクリプトの下から約14行目をコメントアウトする。 「" -w " + string(window_handle()) + 」 ↓ 「// " -w " + string(window_handle()) + 」 2. ゲーム終了時には必ずbGM_close()関数を呼び、bGM.exeを確実に終了させる。
159 名前:名前は開発中のものです。 mailto:sage [2008/06/26(木) 23:23:46 ID:4NwLrBZ+] >>157 execute_stringが定番だけど遅いのは覚悟すること。 名前とインデックスの対応をmapで管理する方法もある。 最初にmapに入れるところが面倒だけど (名前に規則性があるならループで回しながらexecute_stringで可) 一度作ってしまえば後のアクセスは速い。 後はスプライト別々にするのをやめて、subimageで分けるようにするとか。
160 名前:名前は開発中のものです。 mailto:sage [2008/06/26(木) 23:56:05 ID:+fAgrEGQ] >>159 ありがとうございます execute_stringの方法で上手くできました 実行速度に関しては大丈夫そうです 余談ですが実はまだレジストしておりません この関数ってヘルプ「リソースの変更」の項にあるのに未登録でも使えるのですね 教えて頂かなければ一生気付かなかったかもしれません
161 名前:名前は開発中のものです。 mailto:sage [2008/06/26(木) 23:58:49 ID:ZUCsxIUu] おぉ、ありがとうございます。 今まで原因がわからなかったから、いっそのことオプション画面用のroomでも作ってそのroomを抜ける時に、ウィンドウモードを切り替えていたらゲームを再スタートさせようかなと思っていました。 それでもbGMがどうなっているのかが不明だったため、この方法を使ってもいいのかと悩んでいて……。 GameEndイベント用のpersistentのオブジェクトを作ろうかと思います。 ありがとうございました。
162 名前:名前は開発中のものです。 mailto:sage [2008/06/27(金) 11:46:16 ID:aoPSnAYi] 6.1って5.3と違って数値をINIに書き出すとおかしくなるのね…… これは困った
163 名前:名前は開発中のものです。 mailto:sage [2008/06/27(金) 22:07:01 ID:IOoyzN5t] 悪名高い精度バグですな。 stringで文字列化してini_write_stringで書き出すと直るよ。
164 名前:名前は開発中のものです。 mailto:sage [2008/06/28(土) 17:16:03 ID:MGJMVRVB] >>163 なるほど! でも全箇所直すのめんどいなぁ…… ぼちぼちやりますか……
165 名前:名前は開発中のものです。 mailto:sage [2008/06/29(日) 16:00:15 ID:0XhC6Ln6] チャットできるようにしようと考えてみた。 get_stringではポップアップボックスが出ている間ゲームが止まるのでこれは避けたい。 ゲーム内でIMEをどうにか使えるようになれないか。 とまで考えてみて、結局解らず仕舞orz
166 名前:名前は開発中のものです。 mailto:sage [2008/06/29(日) 19:41:43 ID:lhyc/F0c] オンラインゲームも作れる、と聞いたことがありますがやはり難しいのでしょうか? マリオのような横アクション対戦ゲームを作りたいのですが・・・
167 名前:名前は開発中のものです。 mailto:sage [2008/06/30(月) 08:01:32 ID:XJvv+Gn/] 作るなら、共有データという一つの大きな配列にデータを書き込んだりそこから読み込んだりすればいい。 物によってはメッセージと使い分けるといいかもしれない。 とまぁGM的に作れるには作れるけど、実際にオンラインプレイできるかは別。 ポート開放が必要になるから。LAN内ならポート開放とかその他細かい設定は無しでプレイ可能。 まあ>>83 が結論かな。
168 名前:名前は開発中のものです。 mailto:sage [2008/07/03(木) 18:30:58 ID:1ilwX3ov] gm6ですが不思議のダンジョンとかみたいなターン制のゲームを作るにはどうすれば良いでしょうか? 主人公の移動後に主人公のオブジェクトを変更して・・・って感じだと敵が複数の場合相当長くなってしまいます。 ちなみにダンジョンの自動生成は考えてません。
169 名前:名前は開発中のものです。 mailto:sage [2008/07/03(木) 23:07:04 ID:PDxRGKbt] >主人公の移動後に主人公のオブジェクトを変更して 主人公の移動後に敵のオブジェクトを変更して、と勝手に解釈した とりあえず具体的に何がどう長くなるのか分からないけどコードは大して長くならないかと 描画処理もビュー内外で処理分ければ重くなることもないと思う
170 名前:名前は開発中のものです。 mailto:sage [2008/07/03(木) 23:20:15 ID:PDxRGKbt] 言うだけなのもなんなので大雑把な案 UserDefined0イベント:1ターンの行動をした時に発生するイベントとして定義 Alerm0:1ターン分の行動を見せるためのタイマー(再帰はしない) objEnemy:全ての敵オブジェクトの親 objZako1〜n:それぞれのユーザ定義イベント(UserDefined0)にターンごとのアルゴリズムを記述 だいたいの流れは プレイヤー行動決定→全敵にUserDefined0発生→全敵が行動を決定→それぞれの行動を描画(ビュー外なら結果だけ) →行動の結果を反映→最初に戻る 主人公オブジェクトが1ターン分の行動を決定するたびに以下のコードも実行 with(objEnemy){event_user(0);} この時点で敵も味方も動いてないけど全ユニットの行動は決まってるので ビュー内なら移動や行動アニメーションも見せる(Alerm0をONにしてゴニョゴニョ何かする) UserDefined0で決定したアクションに従って移動や行動のアニメーション描画 ビュー外なら結果だけ反映(座標に直接ジャンプしたりパラメータだけ変更したり) 厳密にやるならビュー内に侵入してくるタイミングだけ多少デリケートにコーディングしないとダメ でも面倒だからビュー外であろうが境界線の近くなら上記処理に振り分けてしまったほうが楽かも
171 名前:名前は開発中のものです。 mailto:sage [2008/07/07(月) 07:50:41 ID:Er6IyJrw] 軌道を描写してそれに沿ってオブジェクトを動かしたいのですがパスの使い方が今一つ理解できません。 パスの使い方を教えていただけないでしょうか。5.3です
172 名前:名前は開発中のものです。 mailto:sage [2008/07/07(月) 10:31:24 ID:Rye0/4Uv] >>171 まず「File」→[Advanced Mode」にチェックする。 「Add」→「Add Path」メニューがでるので前もってパスを作成しておく パスに沿って動かしたいオブジェクトで自分が思っているタイミングのイベントに (最初からパスで動かしたいのならクリエイトイベントにいれる・・・など) MOVE2タブの[set a path for the instance]アクションで作ったパスを指定してあげる。パラメーターは path:オブジェクトに割り当てたいパスの名前 speed:1ステップで動くピクセル数 at end:パスの終点についたらどうするかを指定stopはその位置停止continue from startはスタートした座標に戻ってパス動作を続ける continue from hereは今の座標を始点として同じパスでパス動作を続けるreverseはパスをさかのぼる relative:パスを絶対位置か相対位置かを指定 relativeで相対位置(アクションが動作した時の座標を始点にする) absoluteは絶対位置(パスエディットで書いたとおりの座標) てな感じ。 もち途中でパスを変更するとかも可能。GMLで書くならpath_start()関数をどぞ
173 名前:名前は開発中のものです。 mailto:sage [2008/07/07(月) 13:12:20 ID:0oCVVzY6] シューティングのテスト版みたいなの作ったんだけど、ここで晒してもいいですかね? ソースはないけど……
174 名前:名前は開発中のものです。 mailto:sage [2008/07/08(火) 15:07:42 ID:w93aKpMp] >>172 遅れましたがありがとうございます。
175 名前:名前は開発中のものです。 mailto:sage [2008/07/11(金) 15:45:47 ID:3T+5hIa7] 行き詰ってるので質問させてください。 オブジェクト自体が光っているような表現をしたいのですが イマイチやりかたが分かりません。 AfeterEffectとかでいうグローみたいな表現がしたいです。 環境はGM7でレジストしてあります。
176 名前:名前は開発中のものです。 mailto:sage [2008/07/12(土) 14:05:25 ID:03hji2U+] PCの再インストールしてGamemaker入れなおしたら 既に使われているライセンスってはじかれてしまった… どうすれば・・・orz
177 名前:名前は開発中のものです。 mailto:sage [2008/07/12(土) 16:10:08 ID:u3M0JlwI] 私も以前、そのような状態になりましたが、 ライセンスを管理してるところ(softwrap)に問い合わせたら、無事に認証できるようになりました。 support@softwrap.com宛てに、 つたない英語でしたがこんな文面でも大丈夫でしたw ---- Dear, softwrap staff I am Japanese Game Maker7.0 Pro user. I upgraded GM7 Pro version by upgrade license key form resisted GM6 lisence key , and after a time the software reverted to Lite mode, because ,a few days ago, WindowsXP was re-installed in my PC. My license key of GM7 Pro is invalid in online activation. Please reissue it... Information: First name : xxxx Family name : xxxx E-Mail address: xxxx@xxxx.xxx.jp My license key: License Holder xxxxxxxxxxx Purchase Ref xxxxxxxxxxxxxxxxxxxxxxxxx ----- windows 再インストールもですが、GameMaker 7.0 のアンインストール後、 再インストールしてもその状態になるから注意です。
178 名前:名前は開発中のものです。 mailto:sage [2008/07/12(土) 16:20:43 ID:u3M0JlwI] あ、私はGM6からのアップグレード組みで、 上の文中にもそういうことが書いてありますので、 GM7を購入されたのなら適当にアレンジしてくださいです・・・
179 名前:名前は開発中のものです。 mailto:sage [2008/07/17(木) 00:02:23 ID:Oo/SM1Ep] 2Dの狙撃ゲームを作っているのですがスコープをのぞいた時の画面処理に困っております。 背景を縮小した画像にし、スコープのアイコンが重なった場所だけ元のサイズに戻す、というのはどうすれば良いでしょう? そもそも画像を縮小表示出来るのでしょうか?質問ばかりで申し訳ありませんがよろしくお願いします。
180 名前:名前は開発中のものです。 mailto:sage [2008/07/17(木) 21:29:15 ID:/JbdlJ3v] ビューを二つ重ねる、画面からスプライト作って縮小表示する、サーフェイス使うなど 四角い領域でよければ色々と手はあるが、丸くしたいとかだったらサーフェイス一択だな。 > そもそも画像を縮小表示出来るのでしょうか? とりあえずはバージョンによる。
181 名前:名前は開発中のものです。 mailto:sage [2008/07/18(金) 19:31:51 ID:WqsSplQ2] >>180 申し訳ありません、バージョンは6です。 出来れば丸くしたいのですが、難しそうですし四角でも構いません。 背景と同時にその背景にいる敵オブジェクトも縮小、拡大したいのです。
182 名前:名前は開発中のものです。 mailto:sage [2008/07/18(金) 21:13:39 ID:Qaaz25IZ] ではお手軽なところでビューを使う方法。 ・View 0 ビューの大きさ(View in roomのWとH)を画面の表示領域より大きくする。 ビューポート(Port on screen)は画面と同じ大きさ。 これで全体が縮小表示される。 ・View 1 ビューポートの大きさを画面より小さくする。 ビューはビューポートと同じ大きさ。 これで画面の一部が元のサイズで表示された状態になる。 あとはビューの位置(view_xview[1], view_yview[1])と ビューポートの位置(view_xport[1], view_yport[1])を スコープに合わせて動かしてやればいい。
183 名前:名前は開発中のものです。 mailto:sage [2008/07/23(水) 14:55:27 ID:JbMdXvhr] Unexpected error occured when running the game. 以前からこのエラーに悩んでます。 使用しているのはGamemaker6.1Aです。 毎回製作を進めるとこのエラーが起きる人がちらほら出てきます。 自分の環境では起こったことが無く、また自分よりもスペックの高い人でも このエラーが起こることもあるようで、原因が特定できずに困っています。
184 名前:名前は開発中のものです。 mailto:sage [2008/07/23(水) 18:57:15 ID:7Xl6aY+A] >>183 原因不明だからこそUnexpected errorなわけだけれども 経験的に言うと、でかいグラフィックスがあるとかでメモリ不足になっているか Createイベントなどゲーム開始前のところにエラーがあるかのどっちか。 環境によって出たり出なかったりということだと前者の可能性が高い。 もしそうだったら極力Preload外すとか、外部リソース使うようにしてみたらどうかな。
185 名前:名前は開発中のものです。 mailto:sage [2008/07/23(水) 19:03:17 ID:JbMdXvhr] 外部にデータを置いてreplaceさせた方がいいかなぁ。 うーん、でもpreloadは全部外してあるし、 自分のPCのメモリは1.5Gなんですが、 2G超のPCでもエラーが起きているケースもある模様・・・悩。
186 名前:名前は開発中のものです。 mailto:sage [2008/07/23(水) 23:25:06 ID:6M8uaVJP] ・インスタンスの生成が無限ループになってる ・変数の値の計算が異様に大きい数値になったりしている ・インスタンスを生成時、同時に破棄の命令もしている ・生成時に衝突イベントでごにょごにょ とかの時でも原因不明のエラーがよく出るね。 シューティングでホーミングのショットを撃っている時にもなった。
187 名前:名前は開発中のものです。 mailto:sage [2008/07/26(土) 18:51:42 ID:3aZInE48] 質問なんですが、衝突した相手を今の速度のまま移動させるっていうのはそうすればいいんでしょうか? ドキュメント見る分にはselfにチェック入れればいいみたいなんですが、より良い速度で自分がかっ飛んでいってしまうのです・・・。 ttp://www1.axfc.net/uploader/He/so/123585.zipにアップしてみましたが、画像が選り抜きの流用なので、なので、違反なら削除します。 どうしたものでしょうか・・・
188 名前:名前は開発中のものです。 mailto:sage [2008/07/26(土) 19:48:55 ID:3aZInE48] ごめんなさい、とんでもない日本語ですね。 要はパンチした相手を吹き飛ばしたいのです。 ttp://www1.axfc.net/uploader/He/so/123606.zip エラーがあったので修正しました。一応説明するとボタン3で腕生成、ボタン1押しっぱなしでチャージした速度で腕が斜めに飛んでいきます。 パスはyoyoです。
189 名前:名前は開発中のものです。 mailto:sage [2008/07/27(日) 12:30:50 ID:jZNgq52V] Collisionイベントの中では衝突した相手はotherで表される。 相手を吹き飛ばすには、自分のスピードを相手に与えてやればいい。 自分側のCollisionイベントでやるなら other.hspeed = hspeed; other.vspeed = vspeed; 相手側のCollisionイベントでやる場合は立場が入れ替わる(自分がotherになる)から hspeed = other.hspeed; vspeed = other.vspeed; のようになる。
190 名前:名前は開発中のものです。 [2008/07/28(月) 00:21:09 ID:qT4QHlYG] LINUX版ねえの??
191 名前:名前は開発中のものです。 mailto:sage [2008/07/28(月) 20:06:10 ID:Q9pdWDQ9] >>189 おおーっ!!ありがとうございます!! オブジェクト別に設定しなければならないのですね。 stepイベントでcheck コリジョンを使ってやってみたら反応なしでした・・・。
192 名前:名前は開発中のものです。 mailto:sage [2008/07/28(月) 20:21:36 ID:OrZq3/Gb] >>189 じゃないけど、これはオブジェクト別というかどちらか片方だな。 要は、「殴った相手を吹っ飛ばす」とするか「殴られたら自分が吹っ飛ぶ」とするか。 どちらも同じ結果が出る。つまり片方で十分。別に両方やってもいいけど、片方が無駄になるよね。
193 名前:名前は開発中のものです。 mailto:sage [2008/07/28(月) 20:23:53 ID:OrZq3/Gb] 何という絶望ID
194 名前:名前は開発中のものです。 [2008/07/28(月) 21:54:47 ID:uk2OCtlG] 質問があります。 GamaMakerで外部のファイルを読み込むにはどうしたらいいのでしょうか? GameMakerのver7です。日本語版のver6のヘルプを見て、<file_text_open_read(fname)> を色々いじってみたのですが、できませんでした。 またBulletML4GM.DLLというプラグインを使ったことのある方がいましたら、 BML_LoadBMLFileで行うBulletMLファイルを読み込むという方法を教えてください。
195 名前:名前は開発中のものです。 mailto:sage [2008/07/31(木) 00:13:59 ID:eckrADRs] >>182 遅くなりましたがありがとうございます。 View0とView1の設定は出来ました。 ですが(view_xview[1], view_yview[1])と(view_xport[1], view_yport[1])というのをどうすれば良いのか分からないのです。 スコープのオブジェクトに関する何かの座標に入れるのでしょうか? 申し訳ありませんが何方か教えては頂けませんでしょうか
196 名前:名前は開発中のものです。 mailto:sage [2008/07/31(木) 00:58:45 ID:t+mxlfep] >>195 とりあえずスコープの座標と同じにして動かしてみて そうすれば何となく仕組みがわかるから適当に+αして調整する。 基本的にxviewとxport、yviewとyportはそれぞれ同じ値にしとけばいい。 >>194 file_text_open_readが返すIDをちゃんと使ってる? 一般的にはこんな感じのコードになる。 file_id = file_text_open_read(...) while (!file_text_eof(file_id)) { text = file_text_read_string(file_id); file_text_readln(file_id); } file_text_close(file_id);
197 名前:195 mailto:sage [2008/07/31(木) 01:25:05 ID:eckrADRs] >>196 レスありがとうございます。 もしかして(view_xview[1], view_yview[1])という入力欄があるのでしょうか?;
198 名前:名前は開発中のものです。 mailto:sage [2008/07/31(木) 01:48:43 ID:t+mxlfep] いや、コードで。 view_xview[1] = x; view_yview[1] = y;
199 名前:195 mailto:sage [2008/07/31(木) 02:14:47 ID:eckrADRs] 何度も何度もすみません・・・ 此方低脳な物で・・・いまいちどういう事だか理解出来てません; www.uploda.org/uporg1577619.zip この様になっているのですが座標指定が解らず適当な事をしております とりあえずオブジェクトのコードで view_xview[1] = x; view_yview[1] = y; を入れてみましたが間違ってるようです
200 名前:名前は開発中のものです。 [2008/07/31(木) 22:01:23 ID:YwgqYDQL] >>196 有難うございます。 読み込むファイルは作っているゲームと 同じところに保存しておけばいいんですか?
201 名前:名前は開発中のものです。 mailto:sage [2008/07/31(木) 22:13:33 ID:t+mxlfep] >>199 流れてて見えん。 サンプル作ってみたけど座標変換が案外めんどくさい件について ttp://www1.axfc.net/uploader/File/so/9117
202 名前:名前は開発中のものです。 mailto:sage [2008/07/31(木) 23:15:28 ID:eckrADRs] >>201 おお、ありがとうございます。 まさに私が求めていた物です。何度も何度も本当にありがとうございました。
203 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 21:26:50 ID:PyhBkTjg] 横スクロールアクションを作っています。 悪魔城ドラキュラのように、しなる鞭を表現するにはどうすれば良いでしょうか。
204 名前:名前は開発中のものです。 mailto:sage [2008/08/04(月) 02:57:32 ID:vO+Y6NBD] 始めてみようと思うのですが、6と7の違いってどれほどのものでしょう? 特に考えずに7にしちゃっていいでしょうか。 過去の遺産を活用するため、6にしといたほうがいいでしょうか。
205 名前:204 mailto:sage [2008/08/04(月) 03:21:04 ID:vO+Y6NBD] とりあえず7をインストール。 ttp://gamemaker.main.jp/modules/articles/article.php?id=19 を作ってみた。 昔のとは言い回しがちょこちょこ違うけど、どれも問題なく発見できるな。
206 名前:194 [2008/08/04(月) 17:13:18 ID:MNtmNm76] やっぱりファイル読み込み方がわからないです。 (fname)にファイル名を入れたんじゃだめなんですか? それと読み込むファイルはどこに保存しておけばいいのでしょうか?
207 名前:名前は開発中のものです。 mailto:sage [2008/08/04(月) 21:33:43 ID:hTqrWaBF] >>206 文字列は引用符でくくる × file_text_open_read(test.txt) ○ file_text_open_read("test.txt") そういう問題でなかったら、何をしてどううまくいかないのか きちんと説明してくれないと困るよ。 実際に使ったコード貼るなりエラーメッセージ貼るなり。 ファイルの場所は、原理的にはパスちゃんと指定すればどこでも可。 パスって何?というレベルだったら素直にゲームと同じ場所に置いとけばいい。 >>204 5→6でけっこう大きく変わってるけど、6→7はほぼ完全互換。 大きなところでは、6であった精度バグが7では直ってる。 (かわりに再現性低い正体不明のバグがいくつか出てるみたいだけど) 細かいところで色々強化されてるし、総合的には7でいいと思う。
208 名前:206 [2008/08/05(火) 14:08:09 ID:7PHkksrL] 有難うございます。 引用符でくくってませんでした。 それと説明が下手ですいません。 以後気をつけていきたいと思います。
209 名前:名前は開発中のものです。 mailto:sage [2008/08/06(水) 06:59:52 ID:e0Lc+IfT] ドロゥで描いた図形やオブジェクトのスプライトを「最も前面」に表示するにはどうすれば良いでしょうか? ほかのオブジェクトやドロゥ、ビューよりも前に表示したいのです。
210 名前:209 mailto:sage [2008/08/06(水) 07:00:36 ID:e0Lc+IfT] ちなみにGM6です
211 名前:206 [2008/08/06(水) 17:33:23 ID:q0Kkjdvg] ゲームを起動しようとすると「Unexpected error occured when running the game」 というエラーが出てしまいます。 エラーの原因と解決法がわかる方教えていただけませんか? www1.axfc.net/uploader/File/so/9353
212 名前:名前は開発中のものです。 mailto:sage [2008/08/06(水) 21:12:23 ID:8PxMb9eX] >>209 オブジェクトのdepthをうんと小さくする。 depthは負の値にもできるので-999999とかにするとよい。 「ビューよりも前」ってのは意味がわからんけど 複数のビューを使ってるなら、番号の大きいビューが上に重なって描画される。 >>211 よくある要因については>184参照。 ゲーム開始前にエラーが出てるケースなら、 最初のルームの前にダミーのルームを一つ入れてやることで 本当のエラーメッセージを確認できる。 なんかtekiオブジェクトが呼んでるBML_localUPDATEでエラーが出てるから、 初期化の順番の問題ではないかな。 たぶんtekiの初期化(BML_SetBMLCtrl)が kanriの初期化(BML_Init)より前に呼ばれてるので失敗してる。
213 名前:212 mailto:sage [2008/08/06(水) 21:21:49 ID:8PxMb9eX] 追記しとくと、初期化処理については ・複数のオブジェクトがCreateイベントを持っている場合、 どれが先に実行されるかは不定 ・Game StartやRoom StartはCreateより*後*に実行される ということに注意する必要がある。 今回のケースだと、tekiを最初からルームに配置せず 他のオブジェクトから時間を置いて生成させればいいと思われる。 一般的には、タイトル画面を作っておいて BML_Initみたいな「他の何よりも先に必要な初期化」は タイトル画面で済ませてしまうというのが確実。
214 名前:209 mailto:sage [2008/08/07(木) 00:10:10 ID:JeoCPzcW] >>212 ビューよりも前というのは現在作ってるゲームではビュー0の中にビュー1とビュー2を表示させてます。 ビュー2の方はズームで表示させてるので普通のオブジェクトはそこを通過するとズームされてしまいます。 ですのでそのビュー2よりも前面に、つまりズームの影響を受けないオブジェクトを作りたいのです。 説明が下手で申し訳ありません。
215 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 02:02:35 ID:ED5p3ZS0] 上にもあるように、ビューは番号の大きいものほど上に重なって描画される。 その状況だと、もう一つビューを作って重ねるしかないんじゃないかな。 ルームを広げて、余った領域をビュー3用の内容として使うとか。
216 名前:209 mailto:sage [2008/08/07(木) 09:28:36 ID:JeoCPzcW] >>215 私は>>195 さんじゃ無いのですが、勝手に>>201 さんのサンプルを弄らせて貰ってるのでいまいちビューの使い方に慣れていません。 ルームの一部分を表示してる様なのでルームの大きさを弄ってみたりしたのですがどうも上手くいかず・・・。 こんな感じなのですがob_2が中央付近の四角内でも拡大されない様にしたいのです。 www1.axfc.net/uploader/File/so/9374
217 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 12:57:56 ID:ED5p3ZS0] >>216 ob_2が見当たりませんぜ旦那 特定のオブジェクトだけ拡大されたくないなら、逆にそいつを縮小描画する手もある。 drawイベントの中で if (view_current == 2) { //draw_sprite_extで縮小描画 } else { //draw_spriteで普通に描画 }
218 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 17:21:05 ID:JeoCPzcW] >>217 申し訳ありません、ファイルを間違えてしまいました。 www1.axfc.net/uploader/File/so/9388 です。 それですとifの時は全体が縮小されてしまうのでは無いでしょうか・・・。 触れてる部分のみを縮小させる事も出来るのでしょうか?
219 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 21:50:47 ID:ED5p3ZS0] >>218 Drawイベントは各ビューごとに1回ずつ呼び出される (どのビューに対して呼び出されたかはview_currentでわかる)。 そして、どこに描こうがビューの領域の内部だけが実際に画面に転送される。 自分のスプライトしか描画してないんだから、全体が縮小されるなんてことにはならない。 まあ論より証拠ってことで、ob_2のDrawイベントで if (view_current == 1) { draw_sprite_ext(sprite_index, image_index, x, y, (view_wview[1] / view_wport[1]) / (view_wview[0] / view_wport[0]), (view_hview[1] / view_hport[1]) / (view_hview[0] / view_hport[0]), 0, c_white, 1); } else { draw_sprite(sprite_index, image_index, x, y); } ってやってみ。
220 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 21:57:29 ID:ED5p3ZS0] 補足、実際にやりたいことは「カーソルがビューの境界にある時に 両方にまたがって描画されるようにしたい」ってことだろうけど、 ビューごとに座標系が違うからxとyも別々に管理する必要がある。 Drawイベントの頭で x = window_view_mouse_get_x(view_current); y = window_view_mouse_get_y(view_current); と置き換えてやればいけるかな。丸め誤差の関係で微妙にふにゃふにゃするけど。
221 名前:名前は開発中のものです。 mailto:sage [2008/08/08(金) 03:41:55 ID:t78+5+2+] >>219 ,220 ありがとうございます。 色々と試してみましたが「draw_sprite_ext(sprite_index, image_index, x, y,」で毎回エラーが出て起動出来ないのです。 コードの意味も良く分かってないので直しようが無く・・・
222 名前:名前は開発中のものです。 mailto:sage [2008/08/08(金) 12:16:04 ID:9r+m0jPt] エラーが出てるならエラーメッセージを(ry ヘルプ見ればわかるけどそれってレジストしてないと使えない関数だから。 エラーメッセージもそう言ってない? もしレジストしてないんだったら、やっぱりビュー重ねるしかないと思う。 ルーム広げるとおかしくなるって言ってたけど、コードの中で使ってる room_widthとroom_heightはそのままルームの大きさだから 実際に使いたい領域の大きさに合わせて置き換えてやる必要がある。 あと、背景を指定してると当然下にきたビューが塗り潰されちゃうから 背景はなしにしておいて、別のオブジェクトに必要なビューだけ draw_background_tiledで背景を描画させるといい。
223 名前:206 [2008/08/08(金) 22:55:06 ID:Dp8hyxp4] 遅れてすいませんが 有難うございます。
224 名前:名前は開発中のものです。 mailto:sage [2008/08/13(水) 16:38:52 ID:9U93GJPn] >>192 ありがとうございます。 それにしてもアクション作るのは大変ですね……埋まらず歩くのがいまだに無理です gamemakerのスプライトエディターが実に便利ですね。痒いところだけ手が届くみたいな。 ものが伸びる動きを考えてみました。 ttp://www1.axfc.net/uploader/He/so/128688.zip のpliiiです。(キーワード・yoyo) vmissでは下キーや上キーでロリータがミサイルを打ちますがそれだけです(笑) 生暖かく見守っていただきたくて。ちなみにvmissはproじゃないと動かないと思います。 ところで質問なんですが自分に重なっているオブジェクトの、重なっている範囲だけ透明にする、色を変えるっていうことはできますかね? ヘンな日本語で申し訳ありません。あ、自分は7のproを使っています。
225 名前:名前は開発中のものです。 [2008/08/14(木) 01:58:12 ID:OGCepjkd] 描画APIとしてOpenGL使えないのか?
226 名前:名前は開発中のものです。 mailto:sage [2008/08/14(木) 22:09:11 ID:y+Gl/YHW] うっわ今気づいた……ペアレント設定スゲエ便利…… うわあ・・・・・・・・・・かなり時間無駄にしてたきが・・・うわあ・・・・
227 名前:名前は開発中のものです。 mailto:sage [2008/08/14(木) 22:10:41 ID:SEYmkdw0] ぺあれんと設定? どんな感じなのかkwsk
228 名前:名前は開発中のものです。 [2008/08/14(木) 23:19:00 ID:SyKT2EHY] このソフトを使ってこれからゲーム作ろうと思うのですが、 バージョンはどれがいいのでしょうか? パソコンでゲームを作った事はありません。 やっぱり日本語化できる5,3Aがいいでしょうか?
229 名前:名前は開発中のものです。 mailto:sage [2008/08/14(木) 23:59:01 ID:fWCjSQKb] >>228 最新バージョン用の日本語辞書ファイルがこのスレにあがってたよ
230 名前:名前は開発中のものです。 [2008/08/15(金) 01:40:43 ID:YYg607kj] Linuxの、diff -u > に気づいたときと同じ衝撃を味わう パッチ作成、それまで手書きだったからな まさかdiffで簡単にできるとは
231 名前:名前は開発中のものです。 [2008/08/15(金) 14:49:00 ID:05Tah5Zi] >>229 レスどうもです。 今このスレ全部見てきたんですが・・・ 最新バージョンって7,0ですよね? 探しても見つからないです・・・ どこにあるのでしょうか?
232 名前:名前は開発中のものです。 mailto:sage [2008/08/15(金) 15:15:52 ID:oWA1flsm] ゲーム中にゲーム画面に日本語を表示する事は出来るのでしょうか? 英語でしか表示出来ず、今まで文字毎のスプライトとオブジェクトを作って表示してたのですが スプライトとオブジェクトの数が凄い事になってしまいました。
233 名前:名前は開発中のものです。 mailto:sage [2008/08/15(金) 21:17:31 ID:b4foDt54] >>232 そんな時こそ非公式情報サイトで配布してる日本語描画スクリプトですよ
234 名前:名前は開発中のものです。 mailto:sage [2008/08/16(土) 15:12:50 ID:phIiQvcL] gmlで衝突相手を判別するのはどうすればいいんでしょうか? 弾を跳ね返す盾をチュ食っているのですが、 あらかじめグローバル変数を決めて、 instance_positionでぶつかってきたオブジェクトの速度を調べ、グローバル変数に代入して 一定以上ならとび道具として速度を反転させる、というつもりで掻いてるのですがうまく言ってるのかどうかもわかりません。 あと大砲とか撃ったときの反動ってどういう現し方がありますかね? 自分はアラームで速度を半分にして反転させて……というのを繰り返してやってるんですが……あんまりスマートじゃないですよね?
235 名前:名前は開発中のものです。 mailto:sage [2008/08/16(土) 17:05:03 ID:59E6GChr] 衝突判定はAddEvent > Collision 衝突相手はotherで参照できる(ただしCollisionイベント内のアクションでのみ) 反動の件はイマイチやりたいことが理解できん 撃った反動で射撃方向とは逆方向に砲身が吹っ飛んだ後、ゆっくり元の位置に戻るってことかな 読んだ感じだと反動というより振動って感じだろうか それと余談だけどゲーム設定などを除いてグローバル変数は極力使わない方がGMっぽいかもよ もともとのオブジェクト指向的な作り方を徹底した方が色々と管理しやすいと思う 具体的には ×神の視点に立って弾が跳ね返るのを見守る→ぶつかったらボールの方向を変えてやる ○弾オブジェクトに「盾に衝突する」とか「跳ね返る」という振る舞いを教えておく→あとはボールに任せる ○盾オブジェクトに「弾が衝突する」とか「跳ね返す」という振る舞いを教えておく→あとは盾にまかせる 3番目のは他オブジェクトのプロパティを弄ることになるから少し気持ち悪いけど1番目のよりは分かりやすい HSPとかBasicの経験が長い人なら逆に1番目の方が分かりやすいかもしれん
236 名前:名前は開発中のものです。 mailto:sage [2008/08/20(水) 18:29:52 ID:iPH66y54] あるレイヤーに置いたタイルをみんな同じようにアニメーションさせる、って出来ないかな…… RPGの水面みたいな。
237 名前:名前は開発中のものです。 mailto:sage [2008/08/20(水) 19:25:06 ID:Rn6yFU9D] ・別々のレイヤにタイルを置いといてtile_layer_show/hideで切り替える (手動で同じ場所にタイル配置するのが大変なら、 ルーム開始時にコードでコピーする手がある) ・タイルが使っているイメージ自体をbackground_assignで入れ替える (荒技だしパフォーマンス的にもおすすめできない) ・あきらめてスプライト+オブジェクトを(ry ざっと思いつくのはこんなところかな。
238 名前:名前は開発中のものです。 mailto:sage [2008/08/20(水) 19:43:07 ID:iPH66y54] >>237 アニメーションが20枚もあるんで、やはり最後の方法しかないかな……。 ありがとうございました! 色々試してみます
239 名前:名前は開発中のものです。 mailto:sage [2008/08/21(木) 12:45:05 ID:G8dr1p1s] >>233 遅くなりましたがありがとうございます。 こんな便利な物があったのですね
240 名前:名前は開発中のものです。 mailto:sage [2008/08/22(金) 01:37:31 ID:OJ1IYSd5] >>236 変数の計算用のオブジェクト { global.image_num+=1 if global.image_num>20{global.image_num=0} } 水面のオブジェクト { image_index=global.image_num image_speed = 0 } こんな感じで出来そうだけどどうだろう
241 名前:名前は開発中のものです。 mailto:sage [2008/08/22(金) 04:20:26 ID:mbzREpFo] >>240 オブジェクトで描画する分には問題ないので…… わざわざありがとうございます
242 名前:名前は開発中のものです。 mailto:sage [2008/08/22(金) 18:34:03 ID:M3lU0P0b] このソフトで作られたフリーゲームのBGMを取り出したいんだけど 保存したexeを展開したりとかできたりする?
243 名前:名前は開発中のものです。 mailto:sage [2008/08/23(土) 03:36:04 ID:CfFt4xoC] >>242 そんな事は止めて下さい
244 名前:名前は開発中のものです。 mailto:sage [2008/08/23(土) 20:25:33 ID:KXs72kwh] >>242 基本的に、データを抜き出してどうこうっていうのはご法度。
245 名前:名前は開発中のものです。 mailto:sage [2008/08/24(日) 17:57:02 ID:MJZApYif] キャラ毎にライフ設定は出来ないのでしょうか? 各キャラにライフを設定して常に各キャラの下にバーを表示して起きたいのです。
246 名前:名前は開発中のものです。 mailto:sage [2008/08/24(日) 19:27:30 ID:wkT+Zen9] GMver7の日本語化ってまだできないんでしょうか?
247 名前:名前は開発中のものです。 mailto:sage [2008/08/24(日) 21:17:25 ID:T5dkUX6n] >>245 自分で答えを言ってる! オブジェクトごとにライフを設定すれば良いだけよ まずCreateイベントに MAX_HP = 100 hp=random(MAX_HP) //普通は体力満タンで生まれるだろうけど //今回はサンプルということで100以下のランダムな値をいれとく 次にDrawイベントに draw_sprite(sprite_index, image_index, x, y) //手動でスプライトを表示する draw_set_color(c_red) //描画色を赤に設定 draw_rectangle(x,y-10,x+sprite_width,y,false) //スプライトの幅と同じ長さの赤い棒を描く draw_set_color(c_green) //描画色を緑に設定 draw_rectangle(x,y-10,x+sprite_width*life/MAX_LIFE,y,false) //緑の棒を描く。棒の長さは、スプライトの幅×現在HP÷最大HP さらにちょこっと工夫すれば色々な表現ができるよ 棒の長さを一瞬で変えるんじゃなく、アニメーションさせて伸ばしたり縮ませたり、とか 格ゲーみたいに直前に食らったダメージの部分は違う色にする、とか 普段は非表示でHPが増減した時だけ数秒だけ表示する、とか
248 名前:名前は開発中のものです。 mailto:sage [2008/08/24(日) 21:47:18 ID:MJZApYif] >>247 ありがとうございます。 GM6なのでコードとかは良く分からないのですが・・・頑張ってみます
249 名前:名前は開発中のものです。 mailto:sage [2008/08/24(日) 22:35:27 ID:T5dkUX6n] GM6でも7でも5.3でもGMLというスクリプトを使ってゲームを作ることができます もちろんGameMakerはマウスでアクションを選ぶだけでもゲームは作れます (例えば上のレスの内容はVarableアクションやDraw系アクションを使えば同じことができます) なので無理に使う必要はありませんが簡単かつ便利なので少しずつ覚えていくと後々役に立ちます GMLは比較的オーソドックスな言語なので将来他のプログラムで製作する時にも理解の助けになると思います はじめは教材やサンプルが少なくて泣けてくると思うけど頑張れ!
250 名前:248 mailto:sage [2008/08/25(月) 06:32:19 ID:bHYCWqjA] >>249 なんとかHPを表示する事が出来ました。本当にありがとうございます。 二度も申し訳ないのですが敵と当たった時に誰のライフがどらくらい減るか、というのはどうすれば良いのでしょうか?
251 名前:名前は開発中のものです。 mailto:sage [2008/08/26(火) 19:09:24 ID:8PREyaa3] 格闘ゲームみたいなキャラクターセレクト画面を作りたいのですが セレクトしたキャラクターのオブジェクトを戦闘用の別ルームに出現させるにはどうすれば良いでしょうか? キャラクターセレクトのルーム内のオブジェクトをキャラデータ以外消去して セレクトマップにマップを構成するオブジェクトを直接置いて行く・・・という風なのならなんとか出来たのですが それだと物凄く面倒で新しく追加するのがとても大変です。
252 名前:名前は開発中のものです。 mailto:sage [2008/08/26(火) 20:42:28 ID:KqN2Dkl3] >>250 既に解決してましたらスルーしてください 上の方で書いたオブジェクトに防御力と攻撃力を追加し衝突するとダメージを受けるようにしてみます まずCreateイベントに追加(7とか18って数字は適当に変更してOK) bougyo=7 kougeki=18 あとはCollisionイベントにHPの増減を記述します 例1.敵と衝突した時に、自分のHPが18減る hp = hp - 18 例2.敵と衝突した時に、相手の攻撃力の分だけHPが減る hp = hp - other.kougeki 例3.敵と衝突した時に、相手の攻撃力と自分の防御力の差だけHPが減る hp = hp - max(0, (self.bougyo - other.kougeki)) 例4.敵と衝突した時に、相手のHPが30減る other.hp = other.hp - 30 1行だけのコードなら、controlタブにあるVariablesアクションを使っても同じことが出来ます GM付属のサンプル(例えば1945.gm6)でも機能説明ということでcontrolタブのアクションだけで作ってますね
253 名前:名前は開発中のものです。 mailto:sage [2008/08/26(火) 21:06:11 ID:KqN2Dkl3] >>251 単純にグローバル変数を経由して別ルームに情報を渡すというのはどうでしょう 例えば 自キャラの識別番号は「global.plyaerID」という変数に格納 敵キャラは「global.enemyID」という変数に格納しときます もちろんこれらはセレクト用のルームでプレイヤーが自由に変更できるようにしときます 戦闘ルームにはRoomCreatorというオブジェクトだけを配置しておきます RoomCreatorはルーム開始時など任意のタイミングで上記のグローバル変数を参照してキャラクターを生成します // playerIDが1ならガイル、7ならダルシムを生成 if(global.playerID==1){instance_create(0,0,obj_GAIRU)} if(global.playerID==7){instance_create(0,0,obj_DARUSIMU)} その他にも戦闘ルームの背景画像やBGMのセレクト状況なども渡せるようにすれば変更や管理が楽になるかと思います これらはRoomのCreationCodeでも可能かもしれません ただし管理の容易さや再利用性などを考えるとルーム管理オブジェクトを別に作った方が便利そうです
254 名前:名前は開発中のものです。 mailto:sage [2008/08/26(火) 22:53:57 ID:8PREyaa3] >>253 ありがとうございます。 つまりキャラアイコンをセレクトした時、変数に任意のキャラ識別番号を入れて 他ルームで識別番号によって呼び出すオブジェクトを変えるという感じでしょうか? 難しいですが大体分かるような気がします。 変数はルームを越えても大丈夫なんですね
255 名前:名前は開発中のものです。 mailto:sage [2008/08/26(火) 23:05:57 ID:3+A0dz+L] というか、起動してから消すまでずっと使えるメモリとしてグローバルという概念がある
256 名前:251 mailto:sage [2008/08/27(水) 18:07:00 ID:JyCTdSQ7] アイコンをセレクトしたイベントで コード「global.plyaerID=1」と入れたのですが 他ルームで「if(global.playerID==1){instance_create(20,10,OB_1)}」のようにしたのですが ルーム移動した瞬間にエラーが出てしまいます。 また、「global.plyaerID」というのもコードの一種なのでしょうか? 「global.plyaerID2」みたいにしてはいけない物なのですか?
257 名前:251 mailto:sage [2008/08/27(水) 18:13:46 ID:JyCTdSQ7] なんか普通にプレイヤーのスペル間違ってました。ありがとうございました。
258 名前:248 mailto:sage [2008/08/28(木) 23:55:55 ID:Q7MQ5kTN] >>252 遅くなりましたが分かり易い説明ありがとうございました。 これは簡単に色んなパターンが楽しめて良いですね。
259 名前:名前は開発中のものです。 mailto:sage [2008/09/04(木) 22:36:49 ID:4hJjzvVJ] GMphysics使ってる人います? 5のサンプルがうまく動かないんですよね…… 記述をみるかぎりポリゴン作るのがめちゃくちゃ楽そうなんですけど。 PCのスペック不足は自覚しているので、もし4より格段に便利ならPC買い換えようと思ってるんですけど…… どうでしょうか?
260 名前:名前は開発中のものです。 [2008/09/08(月) 07:25:08 ID:VEQWn8iA] なんか、GOTOと同じで グローバル変数を使うのは悪いこと! みたいに教育受けてきた者は グローバル変数にはアレルギーがあるだろう
261 名前:名前は開発中のものです。 mailto:sage [2008/09/11(木) 19:18:27 ID:px4WAX7A] 標準のセーブ機能って、scriptいじってからロードすると読み込めなくなったりするけど、 RPG等のセーブにも耐えられるものなのだろうか……
262 名前:名前は開発中のものです。 mailto:sage [2008/09/12(金) 14:57:50 ID:WTW/QyVX] ファイナルファイトのような横スクロールアクションを作るのは難しいですか? 素材などの作成時間は除いたとして
263 名前:名前は開発中のものです。 mailto:sage [2008/09/12(金) 16:36:54 ID:Es/bcu2J] >>262 素材の制作を考慮しないのなら、基礎を組むのにはあまり時間かからないと思う。 でも、攻撃のあたり判定や、敵の吹っ飛び方、攻撃の連携など難しい所もいくつか。
264 名前:名前は開発中のものです。 [2008/09/13(土) 21:33:52 ID:pOLwDEz8] STGで自機の周りを回るオプションを作ろうと思い 回るところまでは出来たのですが オプションが2つの時は180度あけて、3つの時は120、4つの時は90度 とゆうように自機の周りのオプションの間隔を均等にするには どうしたらいいのでしょうか?
265 名前:名前は開発中のものです。 mailto:sage [2008/09/13(土) 22:17:09 ID:y3l90inF] 増える度にオブジェクトを変えるとか
266 名前:名前は開発中のものです。 mailto:sage [2008/09/14(日) 00:18:40 ID:gN9mQ7cX] N個目のオプションの角度=N*360/(オプションの個数) ここからがんばれ
267 名前:名前は開発中のものです。 [2008/09/14(日) 11:14:40 ID:A6sMZm51] 有難うございます。↑の方法についてなのですが オプションを4つ作りたい場合は 4種類のオブジェクトを作る必要があるんですか? それとも1種類のオブジェクトを4つ作るだけでできますか?
268 名前:名前は開発中のものです。 mailto:sage [2008/09/14(日) 12:29:14 ID:gN9mQ7cX] 普通はオブジェクト1つ。敵が100機出るからってオブジェクト100個作らんでしょ? 各オプションに自分が何番目のオプションか教えてやる方法もあるけど、 このケースだと配列使って自機に全部管理させた方が楽。 今どうやっているのかわからんからあくまでも一例だけど /* Createイベント */ count = 0; // 今あるオプションの数 angle = 0; // 回転の管理用 /* どこかのイベント(オプション1個増やす) */ option[count] = instance_create(x, y, obj_option); count += 1; /* Stepイベント(オプション回す) */ angle += 1; // 適当に for (i = 0; i < count; i += 1) { option[i].x = x + lengthdir_x(100, angle + i / 360 * count); option[i].y = y + lengthdir_y(100, angle + i / 360 * count); }
269 名前:名前は開発中のものです。 mailto:sage [2008/09/14(日) 13:21:59 ID:y4Lx9aKy] あまりメリットは無いけどあえてオプション自身にやらせると・・・ 1.生成時にinstance_numberで自分が何個目かを記録 2.ついでに現在オプションが何個あるかを把握する 3.上で把握した数を全てのオプションに教えてやる 4.現在のオプション数、自分が何個目か、この2つの情報から位置を修正する 修正のタイミングや必要になる情報は同じだけど 3と4の「全てのオプション」を制御する部分が268氏の方法より面倒 ・コード記述欄の右上チェックボックスでObjectを選んで全てのオプションインスタンスに通知する方法 ・オプションが増減するタイミングでユーザ定義イベントを発行して全ての(ry ・ヘルプに載ってる方法、つまりinstance_id配列を使って全ての(ry 自機側は全く管理しなくて良い代わりにオプション側が同じかそれ以上に面倒そう しかもどの方法もオプション自身のアクションとして記述するとややこしくなる と、色々考えてみたけどやはり268氏のやり方が管理しやすいです
270 名前:267 mailto:sage [2008/09/14(日) 16:35:01 ID:A6sMZm51] やってみたところ オプションの間隔が均等にならずにオプション同士が くっついてしまいます。均等にするにはどうしたらよいのでしょうか? www1.axfc.net/uploader/File/so/11043.ttf ↑実際のファイルをUPしました。
271 名前:名前は開発中のものです。 mailto:sage [2008/09/14(日) 18:31:03 ID:gN9mQ7cX] 掛け算と割り算微妙に間違えてたわ。>266の式が正解。
272 名前:267 mailto:sage [2008/09/14(日) 23:14:48 ID:A6sMZm51] 有難うございました。 おかげさまで成功しました。
273 名前:名前は開発中のものです。 [2008/09/15(月) 09:18:36 ID:+qgjZ47x] フォントを見てみるとほとんどの英語フォントがArialと同じフォントになっているのですが これはどういうことでしょうか??
274 名前:名前は開発中のものです。 mailto:sage [2008/09/15(月) 10:20:24 ID:jDWWXeXP] >>273 ゲームに使われてるフォントのことなら GM6以降ならレジストしてユーザ製拡張機能を導入しないと日本語表示はできませんぜ コードエディターに使うフォントということなら なぜか一部のフォントが使えずにGMデフォルトのArialが選択される 例えばLucidaSansUnicodeは反映されるけど、LucidaConsoleは反映されない これはレジストしても変わらん
275 名前:273 [2008/09/15(月) 10:34:38 ID:+qgjZ47x] gm7proで普通にフォント作ろうと例えばfont1を追加して フォントの選択画面でいろいろ試してみてもほとんどの英語フォント はarialとまったく同じフォントになってしまいます (wordやexcelではちゃんと使えるフォント)
276 名前:名前は開発中のものです。 mailto:sage [2008/09/15(月) 11:41:06 ID:jDWWXeXP] >>275 すまん伝わらなかったかな レジストするだけじゃ表示できないよ 日本語表示DLLの詳しい導入方法や使い方はwikiを読んでみて
277 名前:名前は開発中のものです。 mailto:sage [2008/09/15(月) 12:05:43 ID:H1a8iGGW] 日本語フォント表示したいわけじゃなくて、たとえばComic Sans MSとか選んでも フォントに反映されない(Arialの字体のまま)ってことじゃないの? 上で言ってる「LucidaConsoleは反映されない」というのが フォントの選択でも起こっていると。 この件で文句言ってる人あまり見ないから、環境によるのかもしれないけど。 たぶんフォント指定する際にCharsetがSHIFTJISあたりになってるから 日本語文字の含まれるフォントしか反映されないと思われる。 GM側の問題だからバグ報告あげて直してもらうか、 自分でスプライト化して表示するしかないんじゃないかな。 上で紹介されてる日本語表示DLLでもできると思うけど。
278 名前:名前は開発中のものです。 [2008/09/15(月) 12:10:54 ID:+qgjZ47x] スイマセン 説明下手でした 自分が描画したいのは日本語ではなく英語です 日本語はすでに非公式サイトからスクリプトを導入しています 例えば自分がDLしたStarcraftフォントをインストールしました。 それはexcelなどではちゃんと使えるのにいざGMで使おうと思うと Starcraftフォント表示されるのになぜか中身がArialと同じになってしまうのです。
279 名前:名前は開発中のものです。 [2008/09/15(月) 12:12:32 ID:+qgjZ47x] 277さん すみません その通りです
280 名前:名前は開発中のものです。 mailto:sage [2008/09/15(月) 12:25:34 ID:P1NOywnZ] オブジェクトが画面上半分に入ると行動が変わるようにしたいのですが、 オブジェクトが指定した範囲内にあるかどうか判断するにはどうしたらいいですか?
281 名前:名前は開発中のものです。 mailto:sage [2008/09/15(月) 12:50:01 ID:jDWWXeXP] >>278 やっと意味が分かった 見当違いのレスすまんです GM7になっても直ってないということは日本語環境に特有のバグかもしれないね >>280 if(y < room_height/2) { // ルームの上半分にいる時の処理 } より厳密に判定したいなら↓このあたりを参考に sprite_height スプライトの縦幅 room_height ルーム全体の縦幅 view_height ビュー全体の縦幅
282 名前:名前は開発中のものです。 mailto:sage [2008/09/15(月) 14:15:05 ID:Z9WHzemZ] 277氏の話で気づきましたが、 フォントの問題は、フォントリンク機能(windows2000以降に搭載?)を使って 欧文のみのフォントに日本語のフォントを含めることによって解決できました。 Windows システム内部のレジストリをいじることになるので、 必ずレジストリのバックアップをとってください。バックアップから自力で元の環境に戻せる力量のある方のみ推奨です。 また、フォントリンク機能についてよく調べてから行ってください。 (自分も調べたてでよく分かっていません、よって、もっとよい方法があるかもしれません) starcraftフォントを例にとって、やり方を説明します。 (自分の環境はWindowsXP SP2です。 GMは7.0で確認しました) 1. starcraft フォントをインストールする。 2. レジストリエディタ(regedit.exe)を起動して、 [\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink] に、複数行文字列値を新規作成し、以下のように入力する。 値の名前: Starcraft 値のデータ: Starcraft Normal.ttf,Starcraft normal MSGOTHIC.TTC,MS UI Gothic 3. Windowsを再起動させる。 すると、GM で font リソースの追加 で Starcraft を選択すると、 プレビューの時点で反映されるのが確認できるかと思います。 テキスト表示させるオブジェクトを配置してゲームを実行させても反映されました。 また、ゲームをexeで吐き出せばフォントリンクさせていない環境でも反映されるので、 exeで配布する分には問題ないと思います。
283 名前:名前は開発中のものです。 mailto:sage [2008/09/15(月) 15:26:51 ID:tvN7d6yW] >>282 それは自分の環境以外でも正常に動作するのでしょうか。 (他人のレジストリを弄らせるわけにはいかない)>>534
284 名前:282 mailto:sage [2008/09/15(月) 16:44:01 ID:E4MKDW7W] まず、製作側の環境は当然、変更しなければなりません。 そして、ゲームをソースの状態で配布する場合、 相手側もレジストリを変更しなければ反映されません。 ですが、実行形式で配布する場合は、実行ファイル自体にフォントが埋め込まれるため、 環境を変える必要はありません。 自分の環境で、フォントリンクさせた環境で作った実行ファイルを フォントリンクを解除した環境で実行しても、フォントが正常表示されたので、 自分の中では、そう結論付けてます。
285 名前:名前は開発中のものです。 [2008/09/16(火) 14:10:35 ID:JDKv6UBR] 練習で横スクロールアクションを作っているのですが、スプライト変更で苦戦しています。 内容は…… ・GM7使用 ・出来るアクションは棒人間が左右に移動、Zでジャンプ ・棒人間は停止、移動、ジャンプ上昇、ジャンプ下降のアニメが左右ある ・下に地面がある時に、左右キーを押すと左右歩きアニメ ・下に地面がある時に、左右キーを離すと左右停止アニメ ・vspeed-10(ジャンプの初速)で上昇、vspeed0.5(落下の初速)で下降アニメ このまま試したら、ジャンプから着地したときに下降アニメのままだったので 地面に触れたら停止アニメに変わるよう設定をしました。 完成した!と思ったら、今度は左右押したまま着地(着地後そのまま横移動)をしたら、 停止アニメのまま移動する問題が発生… ならば、着地時に左右キーを押しているか押してないかで分岐させればいいのでは?と考え if an expression keyboard_check(ord'right')is true ↑これを地面との衝突イベントに左右分組んでみたのですが うまく作動しませんでした…。 何か良い解決策はないでしょうか? すごく初歩的なことかもしれませんがアドバイスをお願いします。
286 名前:名前は開発中のものです。 mailto:sage [2008/09/16(火) 18:38:05 ID:2x1IGPqI] >>285 アクションゲームでは定番の話題だけど方法が色々あるから具体的に答えにくいな 「こうしたら解決」というアドバイスは難しい話題だけど勘で答えてみる 意外と気づきにくいのは衝突イベントの発生タイミング ×ぶつかった瞬間に1回だけ発生する ○触れてる間は常に(毎フレーム)発生する つまり地面に立ってる時は常に衝突イベントが発生してる 例えば、 衝突イベントに停止アニメを強制するアクションを書いてしまうと 左右への歩行アニメは発生しない (地面に立ってる=常に衝突イベント発生=常に停止アニメ) 解決策は色々あるけど一例を 地上にいる/空中にいる、などキャラクターの状態を変数で表しておく 1.「空中」から着地したら停止アニメ発動&状態を「地上」にする 2.ジャンプしたら「地上」から「空中」に入れ替える 3.「地上」にいる状態で地面と衝突しても停止アニメは発動しない 何かの参考になれば幸い
287 名前:名前は開発中のものです。 [2008/09/16(火) 18:59:33 ID:wc/bCpqZ] >>285 衝突イベント使わずにステップイベント使ったら?? もしy+1に床オブジェクトがあったらvspeedを0にして もしvspeedが0だったら停止アニメするとか…
288 名前:285 mailto:sage [2008/09/16(火) 20:41:11 ID:JDKv6UBR] 丁寧なご回答ありがとうございます! >>287 様 早速ステップイベントで試してみたところ、ステップごとに常に 足下をチェックするため、地上にいるときは停止アニメのみに なってしまいました。 >>286 様 ステップイベントで足下をチェックして、地面がある時は重力が0になるようにしています。 たぶん、これで衝突イベントの連続発生は回避できていると思います。 地上→垂直ジャンプまたは、ジャンプ後左右キーを離す→着地 この場合は地上で停止アニメになります。 その後左右キーを押せば問題なく移動アニメになります。 地上→ジャンプ→左右キーを押したまま着地して移動 この場合は、着地後に停止アニメのまま左右に移動します。 一度左右キーを離し、再度押すと移動アニメに変化します。 地面衝突よりも左右キーを押した時に移動アニメに変化するのが問題…? う〜〜ん…変数を使ってもう少し試行錯誤してみます。
289 名前:267 mailto:sage [2008/09/17(水) 01:00:40 ID:fciLO00k] 配列を利用してオブジェクトの動きを制御しているのですが 複数あるオブジェクトの中で1つだけを消すことって出来ますか? option[count] = instance_create(x, y, obj_option); count += 1; の逆でcountを1減らして countが最後のやつを消そうと思ったのですが 他のオブジェクトから他のオブジェクトをCreateできても 廃棄はできないのですか? ヘルプを見てもそれらしきものは見つかりませんでした。
290 名前:名前は開発中のものです。 mailto:sage [2008/09/17(水) 01:28:48 ID:+iHp1HAA] >>289 インスタンスを消すための関数はinstance_destroy()。 ただこいつは「自分自身を消す」関数なので、GMではちょっとトリッキーですが with文を使って「消したいインスタンスに関数を実行させる」必要があります。 with (option[番号]) { instance_destroy(); }
291 名前:267 mailto:sage [2008/09/17(水) 06:27:15 ID:fciLO00k] 有難うございます。 早速やってみます。
292 名前:名前は開発中のものです。 [2008/09/17(水) 16:50:11 ID:3ZsvlK2w] dlしたサンプルなどで演算子<>(例えば if turn <> 0)を見つけたのですが これはどういう意味でしょうか??
293 名前:267 mailto:sage [2008/09/17(水) 18:36:14 ID:fciLO00k] やってみたところ(Unknown variable option)とゆうエラーが出てしまい 色々と設定を変えながらやってみたのですが 自分ではどうしてもエラーを無くす方法がわかりませんでした www1.axfc.net/uploader/File/so/11187.ttf 現物をupしました。どなたか教えていただけませんか?
294 名前:名前は開発中のものです。 mailto:sage [2008/09/17(水) 18:47:37 ID:+iHp1HAA] >>292 それは != と同じで「等しくない」という演算子。 ちなみにGMのマニュアルに載っているのはC風の文法ですが、 歴史的な経緯からPascalライクの文法も一部受け付けるようになっています。 <> は != のPascal版。似たようなマニュアルに載っていないお仲間には and(&&), or(||), not(!), then なんてのがあります。 >>293 できればエラーメッセージは正確に書いてほしいな。 「array index out of bounds」(配列のインデックスが範囲外) ってのがこの場合の問題。 たとえばオプションの数が3つ(count=3)の時、配列の要素は option[0], option[1], option[2] の3つ。したがって最後のオプションは option[count] ではなくて option[count - 1] です。
295 名前:267 mailto:sage [2008/09/17(水) 20:35:59 ID:fciLO00k] 有難うございます。 そしてすいませんorのあとを書き忘れてました。
296 名前:292 [2008/09/17(水) 21:25:35 ID:3ZsvlK2w] >>294 ありがとうございます そんな演算子があったなんて驚きです
297 名前:名前は開発中のものです。 mailto:sage [2008/09/25(木) 18:58:23 ID:ePV3MaT7] みんなどんなジャンルのゲーム作ってるんだろう……
298 名前:名前は開発中のものです。 mailto:sage [2008/09/25(木) 19:20:38 ID:g090BAj9] 試しにマリオ風アクションを作ってて色々壁にあたり、 もっとシンプルなものから……と思ってゼルダ風に挑戦中 何か1つ完成させたいな〜…
299 名前:名前は開発中のものです。 mailto:sage [2008/09/25(木) 20:51:49 ID:dGYbhKuz] GMの魅力は日本的ジャンル区分とは少しズレたものが作りやすいことじゃないかな 下らないアイデアでも作ってみようかって気になれる FLASHゲーのようなシンプルで即効性があって馬鹿っぽいものが作りやすい(モチベ的な意味で) 今作ってるのはダウンタウン熱血行進曲のパクリ 全24人(CPU操作)を同時に出して殴り合いのカオスを眺めてるだけのゲーム?らしきもの 某FPSのBOT戦を眺めてるときに思いついた 無理矢理どこかのジャンルに分類すればライフゲームの一種になるんだろうか ゲームの目的と遺伝的アルゴリズム的な何かを加えたら少しはゲームになるかもしれない しかしゲームにしようと思うと自ずと既存の何かに似てくるから困る
300 名前:名前は開発中のものです。 mailto:sage [2008/09/25(木) 23:26:48 ID:q3MsUpLj] やっぱ配布する時とかにGameMakerの表示出ると格好悪いよな 課金版欲しいなぁ
301 名前:名前は開発中のものです。 mailto:sage [2008/09/26(金) 03:12:23 ID:sE3W1GIE] とりあえず、Cふう演算子以外は やらなくていいと思うよ いずれGameMakerを離れて自作するときに面倒になる
302 名前:名前は開発中のものです。 mailto:sage [2008/09/28(日) 18:10:00 ID:LS/ACw4R] 昔このスレだったかで見たんだけど view機能によって表示されている画面の左上の座標を返す関数があったとおもうんだけど 誰か覚えてない? HPゲージの表示場所に使うんだ
303 名前:名前は開発中のものです。 mailto:sage [2008/09/28(日) 20:13:19 ID:uhIOXa5a] ヘルプでviewひけばすぐ出てくる 5と6以降で名前が違うから気をつけるんだ
304 名前:名前は開発中のものです。 mailto:sage [2008/09/28(日) 21:17:06 ID:LS/ACw4R] >>303 ありがとう。すごく助かった
305 名前:名前は開発中のものです。 mailto:sage [2008/09/29(月) 18:56:28 ID:UJys+BvP] GM6で梯子を作りたいのですが良い案はありませんでしょうか? 接触中は↑キーでy方向に-32移動出来る様にして、接触中のジャンプも可能にしたいです。 操作キャラのジャンプ条件はy方向1にソリッドオブジェクトがある時ですが、 この条件に当てはめなくてもソリッドオブジェクト上にいる時と同じ様にジャンプ出来れば良いです。 よろしくお願いします。
306 名前:名前は開発中のものです。 mailto:sage [2008/09/29(月) 21:40:35 ID:TA0YzXK0] ジャンプ時の条件に「梯子と接触している」を付け加えればいいのでは? D&D使ってるなら「If thre is an object」アクション、GMLならplace_meetingでチェックできる。
307 名前:名前は開発中のものです。 mailto:sage [2008/09/29(月) 23:26:55 ID:UJys+BvP] >>306 ありがとうございます。 こんな便利なアクションがあったのですね。 お陰で触れてる間に↑キーで梯子を上る事も出来ました。 ですが上った後に静止する方法が分かりません。キャラに重力を設定してあるので落ちていってしまいます。 重力を設定したキャラを空中で静止させるにはどうすれば良いのでしょうか? 何度も質問すみません。よろしくお願いします。
308 名前:名前は開発中のものです。 mailto:sage [2008/09/30(火) 00:47:31 ID:YIigZYPb] >>307 チュートリアルを参考にして作ってるならおそらく Stepイベントの中に「足下がfreeでなければ重力を0にする」 という処理があるはずなので、そこにも下に梯子があるという 条件を追加すればいいかな。
309 名前:名前は開発中のものです。 mailto:sage [2008/09/30(火) 10:28:05 ID:gaxEls3H] >>308 ありがとうございます。 その通りにやったのですが問題がありまして・・・。 歩いて接触し、↑キーで上れば空中で静止する事が可能になったのですが ジャンプしながら接触したり、落ちながら接触すると止まりません。 www1.axfc.net/uploader/He/so/143051.zip&key=gm6 こんな感じです。何処か間違ってましたでしょうか?
310 名前:名前は開発中のものです。 mailto:sage [2008/10/01(水) 21:47:12 ID:Fc7yZooq] 重力を0にしてもスピードはそのままなので、vspeedも0にする必要がある。 触れたら止まるって仕様だと、接触中でもジャンプできるって仕様と 食い合わせが悪い気がするけどな。
311 名前:名前は開発中のものです。 mailto:sage [2008/10/01(水) 23:12:59 ID:1MeHwIPf] >>310 ありがとうございます。 見事に梯子っぽくなりました。が、やはりジャンプは出来ないようです。
312 名前:名前は開発中のものです。 mailto:sage [2008/10/01(水) 23:35:57 ID:dOI1qd/B] >>311 梯子を昇っているかの処理を初めの方にやって、フラグで処理するようにやりなおしてみたら? 毎step時に梯子に接触してるか? 触れている 梯子フラグA = 1(ON) → 触れていない 梯子フラグA = 1(ON) 梯子の所で上キーを押した → 梯子フラグB=1(ON) 梯子フラグON時 → 重力・vspeed 0 にし、上下ボタンは上下移動(vspeed 10とか)に設定
313 名前:名前は開発中のものです。 mailto:sage [2008/10/01(水) 23:39:24 ID:dOI1qd/B] ぎゃー間違って送ったorz 毎step時に梯子に接触してるか? 触れている → 梯子フラグA = 1(ON) 触れていない → 梯子フラグA = 0(off)、重力(vspeed=元値)ON ・・・伝わったらいいなこの説明。
314 名前:名前は開発中のものです。 mailto:sage [2008/10/02(木) 17:09:40 ID:JaYkkapt] >>312 ,313 ありがとうございます。 フラグを使って色々やってみたのですがジャンプは出来ても空中で静止出来なかったり 空中で静止出来てもジャンプは出来なかったりとどうも完璧にはなりませんでした。 まだ色々試してみますが、もしよろしければ>>309 のサンプルに付け加えて頂ければ幸いです。
315 名前:名前は開発中のものです。 mailto:sage [2008/10/03(金) 14:39:18 ID:ZrsFoNA5] 皆さんBGMってどうしてます?
316 名前:名前は開発中のものです。 mailto:sage [2008/10/03(金) 16:46:41 ID:uDeRDVYO] FamiTrackerっていうファミコン音源ツールで適当に
317 名前:名前は開発中のものです。 mailto:sage [2008/10/05(日) 04:52:05 ID:H1cq3pc2] ごめんなさい。質問の言葉が足りなさ過ぎました。 BGMをつけるとき、楽曲を自分で用意するとしても、何処からか借りてくるとしても、 そのファイル形式について知りたいのです。midiとかmp3とか。 できれば、そのBGMをどう再生しているのかも知りたいです。 midiなら最初から入ってるsound_playで再生できるけど、oggならbGMスクリプトとか使ったり。
318 名前:名前は開発中のものです。 mailto:sage [2008/10/05(日) 13:06:42 ID:Fn418VgV] midiはGSしか搭載されてない事多いから自分はもっぱらbGMスクリプトでoggだね。
319 名前:名前は開発中のものです。 mailto:sage [2008/10/05(日) 20:02:29 ID:4niTijZC] 私はMP3ファイルを、再生する前にリソース置換してるな……
320 名前:名前は開発中のものです。 mailto:sage [2008/10/08(水) 15:16:57 ID:RDU/YXQB] >>318-319 ありがとうございました。 参考にさせていただきます。
321 名前:名前は開発中のものです。 mailto:sage [2008/10/11(土) 18:30:28 ID:J25bobba] 画面全体を真っ暗にするにはどうすれば良いでしょうか?
322 名前:名前は開発中のものです。 mailto:sage [2008/10/11(土) 22:42:26 ID:VYtC5Q29] >>321 それは画面を完全黒で塗りつぶすということ? それとも、半透明の黒(変な表現だな)で暗闇を作りたいってこと? どっちにしろ、レイヤーを変更して一番前に表示するようにしてみたら?
323 名前:名前は開発中のものです。 mailto:sage [2008/10/12(日) 19:20:19 ID:0LPSWnKh] >>322 画面を完全に黒で塗りつぶしたいのです
324 名前:名前は開発中のものです。 [2008/10/12(日) 20:59:20 ID:WCmVlsh4] draw_rectangleアクションで高さと幅をroomと同じにして色を黒にするといいんじゃない?
325 名前:名前は開発中のものです。 mailto:sage [2008/10/12(日) 23:04:23 ID:0LPSWnKh] >>324 なるほど、ありがとうございます。盲点でした・・・。
326 名前:325 mailto:sage [2008/10/12(日) 23:27:26 ID:0LPSWnKh] 一応やり方は分かったのですがイマイチそれをどう実行すべきか分かりません。 draw_rectangle(x1,y1,x2,y2,false)の座標1(x1,y1)はルームの左上(0?)かと思いますが 座標2(x2,y2)はどう指定すれば良いのか悩んでおります。 (0,0,room_heigh,room_width,false)ではどうも違うようなのです。何が間違っているのでしょうか?
327 名前:名前は開発中のものです。 mailto:sage [2008/10/13(月) 01:58:15 ID:AHWrAmb7] >>326 本体のバージョンは?
328 名前:名前は開発中のものです。 mailto:sage [2008/10/13(月) 01:59:44 ID:KOVLXVwd] というかwidthとheightが逆なのでは
329 名前:名前は開発中のものです。 mailto:sage [2008/10/13(月) 03:38:00 ID:RgqatT8r] >>326 >>328 の言うとおり、widthは横、heightは縦。 (ついでにいうとheightのtも抜けてるが) 黒い長方形が一切見られないのなら: 1) drawイベントで実行している? 2) depthを一番小さくしてる?
330 名前:名前は開発中のものです。 mailto:sage [2008/10/13(月) 10:30:18 ID:v588R7se] >>328 >>329 ありがとうございます。色々とスペルやら間違っていたようですね。 コリジョンイベントで実行していました。 本当にありがとうございます。
331 名前:名前は開発中のものです。 [2008/10/17(金) 21:27:46 ID:dQ5aX5kq] GM6でグラディウス式の横シューティングゲームを作っているのですが、 弾オブジェクトの数の上限を自機と各オプションそれぞれに設けたいと 思っているのですが、どうすればいいのかさっぱり見当がつきません。 どうすれば良いのでしょうか?
332 名前:名前は開発中のものです。 mailto:sage [2008/10/17(金) 22:05:41 ID:0ROIYotH] 弾オブジェクトが出来た時にAに+1して消えた時にAから-1するってのはどうかな? 3発上限ならAが3以下の時だけ発射出来るようにするとか。
333 名前:331 [2008/10/18(土) 17:21:01 ID:QonRt8Q9] なるほど、変数を使えばよかったんですね。 instance_number()を使うことしか頭に無かったので助かりました。 ありがとうございます。
334 名前:名前は開発中のものです。 mailto:sage [2008/10/23(木) 23:03:49 ID:URptRMn4] 公式・・・もう動かなくなってどのくらい起つのだろう。 早くバージョンアップしてほしい。
335 名前:名前は開発中のものです。 mailto:sage [2008/10/25(土) 07:24:32 ID:YPdYk3/P] シンボルエンカウントのRPG的な物を作りたいのですが 以前に誰かが作ったサンプルなどありませんでしょうか?
336 名前:名前は開発中のものです。 mailto:sage [2008/10/29(水) 07:41:16 ID:B8z2rdZk] GM6ですがroom1からroom2に移動した後、room2に移動する直前の状態のroom1に戻りたいのですが どうすれば良いのでしょう? 普通に戻ってしまうとroom1の最初の状態に戻ってしまいます。 よろしくお願いします。
337 名前:名前は開発中のものです。 mailto:sage [2008/10/29(水) 08:29:55 ID:vZOkTfmY] roomのsettingsタブにある、Persistentのチェックを入れるとできるはず。
338 名前:名前は開発中のものです。 mailto:sage [2008/10/29(水) 12:12:52 ID:SJ76vo7y] なんか、変な事が起こったので報告。 原因は不明だけど突然GameMaker製のゲームだけ、やたら重くなるという現象が起きました(バージョンは5.3、6で確認) 他のゲームやアプリケーションは何も問題なかったのですが、GameMaker製のゲームにだけ異常が起こります。 60fpsのゲームが常に40fps以下になったり。 再起動で治りました。
339 名前:名前は開発中のものです。 mailto:sage [2008/10/29(水) 21:20:06 ID:Jov+JTxt] Show &help on function and variable names Show the origin and &bounding box in the sprite image &Run games in secure mode, not executing programs セキュアモードで実行する, プログラムを実行しない これらの訳を手伝ってほしい
340 名前:名前は開発中のものです。 mailto:sage [2008/10/29(水) 23:19:05 ID:CygkE/Te] >>339 翻訳作業されてる方かな 英語を訳すというより実際にどうなるのかを日本語で説明した方が初心者には有り難いかも もちろん訳し方の好みがあると思うのであくまで私の意見ということで スクリプト編集の際、エディタ下部に関数/変数の候補を表示する スプライト編集の際、スプライトの原点と当たり判定を示す矩形を表示する
341 名前:名前は開発中のものです。 mailto:sage [2008/10/29(水) 23:23:51 ID:CygkE/Te] 解説サイトやwiki編集かと思って書いたけど もしかしたらGMそのものを日本語化するのが目的なのかな そうだったらこんな冗長な文面は適さないですよね ということで私のレスは忘れて下さい
342 名前:名前は開発中のものです。 mailto:sage [2008/10/29(水) 23:29:37 ID:/+O62xmv] 訳してたら先に答えてくれてた人がいた・・・。 ということで、GMそのものを日本語化しているという前提でやってみましたしだいです。 >>339 Show &help on function and variable names 関数と変数名の候補を表示する Show the origin and &bounding box in the sprite image スプライトのプレビューに基点(origin)と境界枠(bounding box)を表示する &Run games in secure mode, not executing programs セキュアモードでゲームを実行し、外部プログラムを実行させない こんな感じだろうか。 origin (スプライトの原点)や bounding box(当たり判定が実行される領域) の訳は 全体的に統一した方がよいと思う。
343 名前:名前は開発中のものです。 mailto:sage [2008/10/30(木) 20:15:39 ID:I528xhb9] >>340 >>342 ありがとうございます。 言われている通りGMそのものを日本語化しております。 E-WordChanger を使っており、その辞書ファイルに記述しています。 ツールチップは1つ試してみましたが、1度成功したと思っていても 次に表示すると日本語されていませんね。 中にはソフトを使ってもclipできない文章もありますね。 そちらも翻訳表示できません。 うまく表示できている人は居られるのでしょうか?
344 名前:名前は開発中のものです。 mailto:sage [2008/10/31(金) 18:19:41 ID:YzRs5LJ8] ちょいと困っています。 キャラとか画像が移動すると、ぶれるようなかすれるような感じでぼやけてしまいます。 移動させてもちゃんと写るようにするにはどうしたらいいですか? room speedは30です。
345 名前:名前は開発中のものです。 mailto:sage [2008/10/31(金) 18:27:01 ID:YzRs5LJ8] あと gamdev.org/w/?GameMaker はどこかに移転したんですか?
346 名前:名前は開発中のものです。 mailto:sage [2008/10/31(金) 19:54:07 ID:oCQp1Dl8] >>344 原因は色々ありうるけど同じく色々と試してみたと思うので意外な罠を一つ 俺がハマったのはモニタのリフレッシュレート うちの環境だと60hzなら普通に動くけど75hzだと掠れる 恐らく環境依存だしGMとは関係ない部分だから気づきにくい
347 名前:336 mailto:sage [2008/10/31(金) 21:53:02 ID:EFPq/rMO] >>337 遅くなりましたがありがとうございます。 出来ました。
348 名前:名前は開発中のものです。 mailto:sage [2008/10/31(金) 22:53:49 ID:YzRs5LJ8] >>346 モニタのリフレッシュレートとGMの設定とroom speedをそれぞれ60にしてみたけど、やっぱりブレれぅ・・・ 液晶だからかな・・・ そしてUse synchronization avoid tearingって意味がわかんない? エキサイト翻訳したら「同期が引き裂くのを避ける使用」って出る。 tearingを単体で調べても引き裂くとか猛烈とかな意味がでる。 同期するのを避ける?
349 名前:名前は開発中のものです。 mailto:sage [2008/10/31(金) 23:26:30 ID:mSkOAagk] >>348 さすがに俺も液晶よ 上で書いたケースとは別件かな もし他の方がGMで作った実行ファイルでも同様の症状が出るなら相性かもしれない ドライバ、グラボ、モニタ、DiretXのバージョンなどなど
350 名前:名前は開発中のものです。 mailto:sage [2008/11/01(土) 00:14:21 ID:cP7CN4r/] use synchronizationで「同期(シンクロ)を使用する」 avoid tearingで「破綻することを回避する」 tear=破ける,裂ける,破綻する Use synchronization avoid tearingで「破綻を回避するための同期(シンクロ)を使用する(使用せよ)」または「同期を使用して破綻を回避する」 例文: Synchronization - Avoiding Frame Tears=フレーム落ちを回避するための同期
351 名前:名前は開発中のものです。 mailto:sage [2008/11/01(土) 00:21:55 ID:cP7CN4r/] シューティングゲームの作成では、PC処理速度を超える過剰負荷がかかった時に、 「コマ落ち(フレーム落ち)」させるか「処理落ち」させるか、 フレームレート,リフレッシュレートの同期処理に悩みますよね
352 名前:名前は開発中のものです。 mailto:sage [2008/11/01(土) 01:01:45 ID:7HKnkTOG] >>348 ティアリングというのは、画像が横に動いているときに 画面の途中でちぎれたように上下がずれて見える現象。 それを避けるためにモニタの信号と同期をとるというのが設定の意味。 画像がぶれるというのとは関係ないと思う。 仮にビューを使っている場合、やりようによっては 更新タイミングの違いでぶれて見えることがあるけど そういうことはない?
353 名前:名前は開発中のものです。 mailto:sage [2008/11/01(土) 22:42:10 ID:spXHa3/O] こう・・・表記が変なのかなーと自分を疑ったり ブレるというかぼやけるというか、ブラーが掛かるというかにじむというか・・・ 左が普通で、右が動かしたときに見える感じ rainbow2.sakuratan.com/img/rainbow2nd43406.png
354 名前:名前は開発中のものです。 mailto:sage [2008/11/01(土) 23:05:00 ID:8D1Uiupl] >>353 なるほど スクリーンショットを撮って見ると輪郭パリパリで綺麗なのに 実際に動いてるのを肉眼で見てるとボヤけて見えるってことかな モニタの応答速度が遅いのが原因、に1票
355 名前:名前は開発中のものです。 mailto:sage [2008/11/02(日) 00:23:31 ID:UAtrgN40] このスクリーンショットが実際に動かしてる時に撮ったものなら応答速度ではないんですが どうなんでしょう
356 名前:名前は開発中のものです。 mailto:sage [2008/11/02(日) 00:46:03 ID:q7EnVYah] >>354 応答速度なのかな・・・ どこで調べたらわかるんだろ。
357 名前:名前は開発中のものです。 mailto:sage [2008/11/02(日) 01:10:29 ID:q7EnVYah] SONY SDM-S75F っていうモニター使ってるけど、これがダメなんかな・・・
358 名前:名前は開発中のものです。 mailto:sage [2008/11/02(日) 07:11:53 ID:Uttx017t] もう既にいろいろ試していると思うけど、とりあえず。 1)新しくテスト用のゲームを作ってみる 問題が起こる最低限の環境のゲームを作ってみる。 もし問題が起こらなければ、元のゲームのどこかに問題がある。 元のゲームを放置して新しく作り直すもよし、元のゲームの問題点を探すのもよし。 もし問題がまだ起こるのなら↓ 2)他の環境で調べてみる。 テスト用でもいいから作ったゲームを公開して、同じ現象が起こるかチェックしてもらう。 それでも問題が起こるのなら、アルゴリズムに問題がある可能性大。 もし問題が起こらないのなら、PCの環境のどこかに問題がある。(相性とか?)
359 名前:名前は開発中のものです。 mailto:sage [2008/11/03(月) 11:05:08 ID:0rtuC+vp] アクションゲームで、下に落ちたら死亡(画面からはみ出たら死亡)にしたいのですが 画面の左右と上にはみでないようにするにはどうすればいいでしょうか。5.3です
360 名前:名前は開発中のものです。 [2008/11/03(月) 19:13:01 ID:HnYJ+ws5] ルーム外イベント使わずに if (y>room_height) instance_destroy で出来るはず
361 名前:名前は開発中のものです。 mailto:sage [2008/11/03(月) 20:24:19 ID:SR5b1R59] Gamemakerって大掛りなACTでGMLをふんだんに使ったサンプルとかないのかね? 勉強したいんだけど、リンク切ればかりで出来ない英語の勉強するほうが先になりそうな予感
362 名前:名前は開発中のものです。 [2008/11/03(月) 21:53:58 ID:HnYJ+ws5] シューティングサンプル1945の全部gmlコード版があった気がする…
363 名前:名前は開発中のものです。 mailto:sage [2008/11/03(月) 22:24:41 ID:uwgdwITo] >>361 日本語の資料はあまり多くないね サンプルなら質も量も本家フォーラムが一番 ttp://gmc.yoyogames.com/lofiversion/index.php/ GMLなら↑のScripts[GML] 多少英語が読めてGMLを理解してる人なら宝の山だと思う 英語が読めなくてもGMLの理解があれば漁ってみる価値はある かなり話題がそれるけどFlex&ActionScriptのサンプルも結構面白い ECMAScript系の言語仕様、イベントドリブン、OOP(的である)、と共通点が多い 出来上がるのがFlashだからASに乗り換えるわけにはいかないけど御参考までに。
364 名前:名前は開発中のものです。 mailto:sage [2008/11/03(月) 23:43:47 ID:SR5b1R59] >>362 検索中スルーしてたかもなんで、後で、探してみます。 >>363 本家フォーラム倦厭してたけど、チラ見しただけでも大量の投稿で、まさに宝の山っぽいです。 自分は英語あまり読めませんが(;´Д`) Action Scriptのほうはちょっと気になってたんですが、そっちも後で見てみることにします。 御二方情報ありがとうです
365 名前:名前は開発中のものです。 mailto:sage [2008/11/05(水) 14:09:40 ID:lQ1u3lWL] デフォルトの背景background0と動きのある第二の背景background1をルームの設定に用意したのですが 途中でこれらを切り替えるにはどうしたらいいのでしょうか?
366 名前:名前は開発中のものです。 mailto:sage [2008/11/05(水) 22:26:45 ID:XjRGW3LY] >>365 ヘルプ見たら「background_○○」って関数が大量にあるので色々できると思うよ 単純に2つの背景を排他的に切り替えるだけなら background_visible[0] = !background_visible[0]; background_visible[1] = !background_visible[1]; // visible when room starts の設定によって開始時に1つだけ表示させとく // つまり片方にだけチェックをいれる ほとんど同じ処理を分かりやすく書くと if( background_visible[0] ) { background_visible[0] = false; background_visible[1] = true; } else { background_visible[0] = true; background_visible[1] = false; }
367 名前:名前は開発中のものです。 mailto:sage [2008/11/05(水) 22:31:36 ID:XjRGW3LY] ごめんなさい修正 直接backgroundのインデックスを指定すれば良いみたい if( background_index == 0 ) background_index = 1; else background_index = 0;
368 名前:名前は開発中のものです。 mailto:sage [2008/11/05(水) 23:58:10 ID:lQ1u3lWL] えーと、試して見たのですが背景がかわらず動かしたキャラクターの残像が無限に描写される状態になってしまいました。
369 名前:名前は開発中のものです。 mailto:sage [2008/11/06(木) 00:01:14 ID:XjRGW3LY] >>368 ただのサンプルだから書く場所にもよるよ 毎フレーム呼び出したらそういう状態になるかも 例えばglobal mouse left pressedあたりに書けば マウス押すたびに切り替わるはず
370 名前:名前は開発中のものです。 mailto:sage [2008/11/06(木) 00:07:30 ID:lQ1u3lWL] 即レスありがとうございます 一応初めからマウスがクリックされた時というところでそれをやっているのですが…
371 名前:名前は開発中のものです。 mailto:sage [2008/11/06(木) 00:36:35 ID:RiMAKIfy] >>367 GMLではarray[0]とarrayは同じものを指すから、それは単に background_index[0] に一番最初に作ったbackground(id=0)と 2番目(id=1)を交互に割り当ててるだけ。 >366の方法が正解。
372 名前:名前は開発中のものです。 mailto:sage [2008/11/06(木) 01:04:58 ID:eaSEHczR] キャラクター「A」と「B」が横一面で左に向かって競争していて、 「AがBを追い抜いたとき」と「BがAを追い抜いたとき」で別々に音を流したいのですがどうすればいいのでしょう。 上とは同じ内容で違う質問なんですが 試しにA.xがB.xの値の-1になった時〜などという風にIf a variabels has a valueでやってみましたができませんでした。 これではだめなのでしょうか?
373 名前:名前は開発中のものです。 mailto:sage [2008/11/06(木) 07:42:34 ID:LwQsPuS+] >>372 単純に Aのx座標 < Bのx座標の時は音楽Bを流す、 Aのx座標 > Bのx座標の時は音楽Aを流す。 で良いんじゃないかな?
374 名前:名前は開発中のものです。 mailto:sage [2008/11/06(木) 09:00:15 ID:5MtmmVSK] 追い抜いたときってのを調べるには、1ステップ前の状態を記録しといた方がいいんじゃない? 例えば、 Stepに difference = Aのx座標 - Bのx座標; を入れて、 Stepの最後の行かEnd Stepに prev_difference = difference; を入れる。 そしてStep内で、 prev_differenceとdifferenceをチェックする。 prev_difference(1フレーム前の差)とdifference(今現在の差)を見たとき、 マイナスからプラスになったり、プラスからマイナスになったりしたときが、 どちらかが追い抜いたとき、となる。どっちがどっちかはすぐわかるはず。 ちなみに2つ目の質問に答えると、ゲームに限らず、プログラムはそこに書かれているとおりに動く。 どういうことかというと、A.xがB.x-1になったときに音を再生する、 つまり、それが例え追い抜いたとしても後ろから近づいただけだとしても、座標軸でBがAの左にちょうど1離れたところにいる瞬間に音を鳴らす、という判定がかなりシビアな表現になる。
375 名前:名前は開発中のものです。 mailto:sage [2008/11/06(木) 12:01:46 ID:5MtmmVSK] そうそう、この場合prev_differenceを初期化することを忘れずに。 Create eventで、prev_difference = 0;とでも書いておけば大丈夫。 これを書いておかないと、Step内でチェックしようとしたときに「prev_differenceって何なんだ?」というエラーを返されるはず。
376 名前:名前は開発中のものです。 mailto:sage [2008/11/07(金) 07:12:26 ID:pXoTyMbW] そういやxpreviousってのがあった。 xpreviousってのはその名の通り、1フレーム前のxの値。 これを使えば>>374 で書いたprev_differenceは要らなくなる。 この場合の使用例としては↓ if (A.xprevious - B.xprevious > 0 && A.x - B.x < 0) { // 1フレーム前でBが前(左)だったのが、今のフレームでAが前(左)になった、 // つまりAがBを追い抜いた瞬間 } else if (A.xprevious - B.xprevious < 0 && A.x - B.x > 0) { // 1フレーム前でAが前(左)だったのが、今のフレームでBが前(左)になった、 // つまりBがAを追い抜いた瞬間 }
377 名前:名前は開発中のものです。 mailto:sage [2008/11/07(金) 07:28:10 ID:pXoTyMbW] ちょっとした注意。 HelpのUsing Game MakerのEventsにも書いてあるけど、 ゲーム内の全てのアクションは↓の順に実行されていく。 ・Begin step events ・Alarm events ・Keyboard, Key press, and Key release events ・Mouse events ・Normal step events ・(now all instances are set to their new positions) ・Collision events ・End step events ・Drawing events ここで言いたいのは、stepイベントの後に全てのインスタンスの移動が行われるってこと。 だから>>376 で書いたのは、End stepイベントにでも入れておくといいと思う。 ……まぁ1フレームの差だけど。
378 名前:名前は開発中のものです。 [2008/11/07(金) 17:17:30 ID:q2bnCqzi] 不思議のダンジョンのようなターン性を採用したいのですがどのように作ればいいのでしょう?
379 名前:名前は開発中のものです。 [2008/11/07(金) 22:09:04 ID:dk+hUO84] 割り込む感じでスイマセン、質問です 非公式サイトから導入した日本語描画スクリプトですがフェード機能をつけるには どうしたらいいですか? drawアクションじゃないからalphaも使えないし……
380 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 00:32:27 ID:ralVUMsS] >>378 こんなので良ければ参考にして下さい www1.axfc.net/uploader/File/so/13426.zip
381 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 01:05:10 ID:YaFy+mMy] おお、ありがとうございます。 敵が複数いる場合でも同じ処理で大丈夫何でしょうか?
382 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 01:17:10 ID:tiFPEnIw] うーん。 敵が複数居る場合、固定値ではなく、数値を増やしていって 最後に行動したモンスター(キャラ)が変数を1に戻すとかどうかな?
383 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 01:24:43 ID:YaFy+mMy] 敵の数がある程度減ったらランダムで数匹追加などもしたいのですが 減ったり増えたりした時の処理が難しそうでどうも…
384 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 01:29:31 ID:tiFPEnIw] global変数(A)に、現状の敵個数を記憶しておいて 敵が死ぬ時にglobal変数(A)を減らす。 ある程度の数値になったら敵を追加。 追加されたらglobal変数(A)が増えるようにしておく。 チェックするのはBegin stepでもEnd stepでもお好きな時にどうぞ?
385 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 08:00:14 ID:usFb+U0s] ダンジョンで思い出したけどダンジョン自動生成てのはやっぱり難しいもんなのかな。
386 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 21:37:31 ID:YaFy+mMy] >>384 遅れましたがありがとう もう一つ質問したいのですが、「最初にランダムでどこか一方向に動く、動く前にもし行きたい方向に壁があれば残り三つからランダムでどこか一方向に、そこにも壁があれば〜」という判断をさせたいのですがどういったアクションを組めばいいのでしょう?
387 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 21:38:58 ID:HeJ/3Xvw] ttp://amagame.blog12.fc2.com/blog-entry-1989.html ttp://d.hatena.ne.jp/Gemma/20070816 これとか読んでみ。目から鱗な考え方だ
388 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 21:51:38 ID:tiFPEnIw] >>387 うっは、ブログの方のファイル落とそうとしてgamDEVという事に愕然とした! 誰かファイルもってないかなorz
389 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 21:56:28 ID:tiFPEnIw] >>386 まず処理したい系統を図式にして処理したい順番を考える。 質問の例だと、 1) 移動方向をランダムにチェック (壁があるかないか判断) 2) 壁がない? Y→移動 N→1)に戻って処理しなおし とするか、 1) 敵Aの周りの壁を総当たりチェック。 2) 移動できそうな場所を記憶。 3) その中からランダムに選択 とするか、が浮かぶ。 もちろん他にも良い手段はあると思う。
390 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 22:45:40 ID:YaFy+mMy] うーむなるほど やはりそういうのにはGMLが必須なのでしょうか…
391 名前:名前は開発中のものです。 mailto:sage [2008/11/08(土) 22:52:26 ID:tiFPEnIw] >>390 そっちのほうが楽ではあるけど、 処理の中に処理ってのは普通配置でもできるからガンバッ! Control の Other にある、start/End block や else などをうまく組み合わせてみよう。
392 名前:名前は開発中のものです。 mailto:sage [2008/11/09(日) 14:58:27 ID:XXK2SOj2] >>387 上の凄いな。考えもしなかった
393 名前:名前は開発中のものです。 mailto:sage [2008/11/09(日) 18:30:25 ID:iQ0fQqMk] Access violation がでるなあ execute piece of code だとエラー吐くのに 同じ内容をscripts に記述すると直るのは嫌らしい仕様だ
394 名前:よこしま mailto:sage [2008/11/09(日) 20:36:08 ID:+tEv1BfM] >>379 レジスト版の場合、以下の方法でフェードインできます。 1. mbtext_drawスクリプトの中でdraw_sprite_part()を呼び出している所が2カ所あるので、それらをdraw_sprite_part_ext()に書き換えます。 draw_sprite_part(..., pos_x, pos_y); ↓ draw_sprite_part_ext(..., pos_x, pos_y, 1, 1, -1, global.my_text_alpha); 2. mbtext_draw()を呼び出す前に、global.my_text_alphaに0〜1の値を代入します。
395 名前:379 [2008/11/09(日) 23:09:10 ID:37vptB7Q] >>394 そうか…そこいじれば良かったのか… ありがとうございます… あと追加で質問なんですが… 文字を左から順番に出していくのに、いつもはstring_char_atなどを使っていたのですが、 mbtextの場合、文字列関数は使えないのでどうしたら良いでしょうか??
396 名前:名前は開発中のものです。 mailto:sage [2008/11/09(日) 23:25:02 ID:UpE3UCrs] >>393 そんな「仕様」はないと思うけど GM7だと、たまに何の変哲もないコードでエラーが出て 同じコード打ち直すとかコピペすると直るという現象が報告されてます >>395 2バイト文字ならstring_copyで2文字取り出すとか string_char_atでもう1文字くっつけるとか
397 名前:名前は開発中のものです。 mailto:sage [2008/11/10(月) 00:20:09 ID:bX5vjmo9] >>396 そうなんですか・・・お騒がせしました debuger が落ちる瞬間にアクセス違反が表示されていて 挿入方法で扱いが変わるみたいなのでそういうものかなと思ったんですけど違うみたいですね
398 名前:名前は開発中のものです。 mailto:sage [2008/11/10(月) 01:53:38 ID:hROa89TY] ヘルスや変数などの数値を用意した0〜9のスプライトで表示したいのですがどのようにすればいいんでしょうか
399 名前:名前は開発中のものです。 mailto:sage [2008/11/10(月) 02:40:36 ID:l3rRgQmH] GM5ならdraw_text_sprite GM6ならfont_add_sprite(要レジスト)してdraw_set_fontしてdraw_text コード書けるなら文字列に変換して1文字ずつ切り出してdraw_sprite
400 名前:名前は開発中のものです。 [2008/11/10(月) 23:05:15 ID:xqr6b0iA] >>398 まず数を文字列化して for (i=1; i<=string_length(str); i+=1) { switch string_char_at(str, i) { case "0": s = 0 break; こんな感じで9まで行って、 draw_sprite_extとかでサブイメージをsに置き換えて表示する *(1〜9全部1つのスプライトにサブイメージとして入れておく)
401 名前:名前は開発中のものです。 mailto:sage [2008/11/10(月) 23:18:31 ID:rXjUYemu] 同じ敵がたくさん出てくるようにしたいのですが個別に体力を設定する方法はありますか? ヘルスや変数を使うと敵全員共通のものとみなされてしまってどうも…
402 名前:名前は開発中のものです。 [2008/11/10(月) 23:23:09 ID:PA4xWfUd] x=rundm(10)+1
403 名前:名前は開発中のものです。 mailto:sage [2008/11/11(火) 03:25:19 ID:j6inckL9] >>401 例えばenemyってオブジェクトを作ったとして、 createイベントにhp = 100;ってコードを置いたとする。 drawイベント内で health = hp; ←ここ重要 そしてヘルスバーを描かせる。 こうすれば、個別にヘルスバーが減っていくはず。 healthってのは、全共通で使われる変数。ヘルスバーを描くためだけの仮の変数とでも意識しておくといいかも。 だからhealthって変数を、そのインスタンスが個別に持っている変数で上書きしてからバーを描く。 こんなイメージ enemy (1匹目) // hpが50だとする <draw event> health = hp; // healthを50に設定 draw_healthbar (略) // ここでヘルスバーを描く(HP 50) enemy (2匹目) // hpが30だとする <draw event> health = hp; // healthが50だったのが、30に上書きされる draw_healthbar (略) // ここでヘルスバーを描く(HP 30)
404 名前:名前は開発中のものです。 mailto:sage [2008/11/11(火) 07:21:02 ID:gKnNaknY] ありがとうございます 特に敵のヘルスバーを表示する必要はないのですがその時はdrawの部分を省けばいいのでしょうか
405 名前:名前は開発中のものです。 mailto:sage [2008/11/11(火) 08:14:23 ID:eY/CDP8z] ならcreateでhp変数を設定すれば良いだけだと思う globalじゃない限り普通の変数はそのオブジェクト内のみだから。
406 名前:名前は開発中のものです。 mailto:sage [2008/11/11(火) 22:50:05 ID:cbXen0Dw] なるほど
407 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 07:21:33 ID:sHnxhObY] コリジョンで敵のhp減らすとかだとother.とか付けないと自分のhp減るから注意な
408 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 16:13:15 ID:4hbBOuzF] >>407 それは書き方にもよるけど……。 主人公が敵に攻撃したときと、敵が主人公の攻撃に当たったとき。 状況は同じだけど、どっちのイベントでHPを減らすようにしているのかで変わる。
409 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 23:03:32 ID:izAxC9WD] Scriptsで書いたコード中の変数も 呼び出したオブジェクトのローカル変数にされるのか・・・ ループ用変数が被りまくり\(^o^)/
410 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 23:20:13 ID:Bs1pE8FJ] そのためのvar宣言ですよ var i とかやると、iはスクリプト内でのみ有効になる
411 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 23:40:22 ID:izAxC9WD] うん、その作業をちまちまやってますw この仕様ならargumentって要素があんまり意味ないような気がするんだけどなあ せめてScriptsに隠蔽要素が欲しかった
412 名前:名前は開発中のものです。 [2008/11/15(土) 00:09:50 ID:HG68xRSC] メーカーに勤めてないとなかなかわかりづらい豆知識 リフレッシュレート よい子のみなちゃんは、60Hzと設定したら モニタもそのとおりに60Hzでリフレッシュしていると思っているかもしれないが 否!!!!!!!!!!!!!!!!!! 60Hzで設定していても、モニタ側は59.944Hzや58.989Hzなど、 とにかく中途半端な数値でしかリフレッシュしないものがある。 モニタが粗悪品だったり、グラフィックボード(特にRADEON)が悪さをしていることが多い。 そしてこの場合、滑らかに移動しているように見えず、かなりカクカクして見える。 これを直すには、ビデオBIOSの更新やモニタのファームウェア更新しかないので 相当面倒だ。個人で直すことはまず出来ない。
413 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 05:12:01 ID:gZryKwbH] でも逆に言うと、Scriptsからローカル変数をいじれるんだよね。 今の仕様でいいと思うんだけどな。
414 名前:名前は開発中のものです。 [2008/11/15(土) 12:32:10 ID:cZlHfE8C] 今GM5.3Aでアクションゲームを作ろうとしているのですが、キャラクターの移動が良いように行われません。 (移動させるキーを押す→キャラクター移動→キーを放してもその場で静止せず、ずっと移動し続ける) どのように行えばキーを放す際に静止するようにできるのでしょうか?初歩的な質問ですいません;
415 名前:名前は開発中のものです。 [2008/11/15(土) 13:05:07 ID:cZlHfE8C] ↑自己解決しました;
416 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 14:24:35 ID:PB/Zmvn5] 「変数が○になったとき」や「変数が○以上になった時」ではなく 「変数Aに数値が加算されたとき」という条件を作るにはどのようにすればいいのでしょうか?
417 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 15:00:10 ID:gZryKwbH] 加算されたとき →1フレーム前の数値よりも今のフレームの数値が大きくなったとき (>>374-377 と同じ考え方) もしくは、その数値に加算したときに起こしたいアクションを置く(そのまんま) (変数Aに加算した直後、起こしたいアクションを行う)
418 名前:名前は開発中のものです。 [2008/11/15(土) 15:22:11 ID:cZlHfE8C] どうも414です。 ジャンプをさせようとしてジャンプは出来るようになったのですが、今度はキャラクターが地上にいる状態で動けなくなってしまいました。 (正確にはジャンプは出来るが横移動が全くできない状態) どの様にすれば解決できるでしょうか?
419 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 16:40:37 ID:PB/Zmvn5] >>417 >>374 〜的なやり方で行くと stepに difference=LEVEL difference<prev_differenceのときやりたい処理を行う End stepに prev_difference=difference とこんな風でいいのでしょうか?
420 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 18:04:15 ID:gZryKwbH] >>419 パニくっているときは、とりあえず適当にいろいろ放り込んでしまいがち。 でも、それは全然解決にならない。詰まったときこそ落ち着こう。 「行き詰ったら原点に返れ」 詰まったらまず、何をしたいのかを明確にする。それから、したいことを分析しよう。 見たところ、レベルが上がったときに何かをしたいようだね。 まぁそれでできなくはないんだけど。……一つ問題を除けば。 この場合differenceは今のレベル、prev_differenceは1フレーム前のレベル。 difference<prev_differenceってのはどういう意味になるか。 今のレベルが1フレーム前のレベルより小さいとき、つまりレベルが下がったときになる。 何をしているのか分からないままとりあえず入れるんじゃなくて、何をやってるのかを考えて理解しよう。 ちなみにdifferenceってのは「差」のこと。 前の例では競争だったから、二人の差ということでdifferenceという単語を使っただけ。 prevってのは「前」を意味するpreviousの略。 differenceは使わずに、LEVELとprev_LEVELの2つだけでいい。 わかりづらかったら、いっそmae_LEVELと書いてしまうのもありだな。 自分がわからないプログラムは作らない。これ鉄則。 <Step> LEVEL > mae_LEVEL // 今のレベルが前のレベルより大きくなったとき <End Step> mae_LEVEL = LEVEL // 「前のレベル」を今のレベルに更新する。
421 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 18:04:49 ID:gZryKwbH] >>418 地上にいる間ずっと、地面との接触が起きているのかもしれない。 でも>>414 のことも考えると、歩かせるアクションの方にも問題があるのかもしれない。 どこかで「止める」アクションを使っていてそれが影響しているとか。 サンプルが非公式情報サイトかどこかになかったかな……。 サンプルを探してみるのもいいし、GMにexampleとして最初から入っているものがあったらそれを見てみるのもいい。
422 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 18:08:02 ID:PB/Zmvn5] >>420 なるほど…丁寧にありがとうございます
423 名前:名前は開発中のものです。 [2008/11/15(土) 18:39:46 ID:cZlHfE8C] >>421 了解しました。 返答ありがとうございます
424 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 10:34:59 ID:aHkifR23] 3桁の数値を獲得してそれぞれオリジナルのスプライトで表示したいのですが 百の位と十の位と一の位を獲得するにはどのようにしたらいいのでしょう。
425 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 12:24:09 ID:uIhvcRmv] >>424 >400あたり参照 計算で出したいなら、一の位は10で割った余り、すなわち number mod 10 十の位は10で割ってから一の位をとればいいから (number div 10) mod 10 同じ考えで百の位は (number div 100) mod 10
426 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 14:19:08 ID:aHkifR23] >>425 簡単に作ることができました!ありがとうございます
427 名前:名前は開発中のものです。 [2008/11/16(日) 17:29:30 ID:HhlndW4R] アクションゲームで、敵AのCreateに変数hp(体力)を設定して、主人公の攻撃が当たった時にhpを減らすよう設定しました。 その敵Aを数体設置してテストプレイを始め一体を倒したところちょっと経ってから「UNKNOWN variable hp」のようなエラーが出てしまうようになりました。 変数操作も消滅もモンスター内でselfで行っているのですが何か間違っているのでしょうか…
428 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 18:48:04 ID:l0hPwkQ6] >>427 エラーメッセージでどのオブジェクトのどのイベントの どのアクションってところまで教えてくれるんだから、まずはそこを見るべし。 そのエラーになる要因はいくつも考えられるけど、それだけの情報じゃ絞りこめん。 > 一体を倒したところちょっと経ってから その倒したところで何をしてるの? 例えば他のオブジェクトにchangeしたりしてない?
429 名前:名前は開発中のものです。 [2008/11/16(日) 18:56:22 ID:HhlndW4R] >>428 ステップで「hpが0以下になったら消滅(死亡)」と言うのを設定しているんですがそれが変数を見失ってるみたいです。 倒したあとは自分がその辺を動き回っているだけでオブジェクト変更などは行っていないはずです
430 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 19:27:32 ID:OWHuy+Yr] 良ければうp
431 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 02:32:01 ID:TD8Ccrf3] Createイベントで変数を初期化してるのにエラーが出るって場合は イベント自体実行されていないことが考えられる。よくある例としては ・Parentのイベントで変数を定義してるけど、子オブジェクトで継承イベントを呼んでない ・change the instanceでインスタンスを変更するときにイベントを実行していない また、instance.variable のようにドット付きで変数を参照している場合には instanceの方が存在してないという可能性もある。 削除されたインスタンスを参照していたり、deactivateされていたりなど。 ただ、話を聞くかぎりではどちらにも当てはまらないみたいだから 原因は他のところにあると思う。 やっぱり実際のオブジェクト情報を見ないと特定は難しいかな。
432 名前:名前は開発中のものです。 [2008/11/17(月) 05:45:22 ID:GSdqregN] まあいいとこ、 それらのインスタンスで「共有」してる形になっているので ある一体が消えると変数も消えてしまってる ってとこじゃないの インスタンスABCDEで一つの変数を見ていて インスタンスAが消えたと同時に変数も消え BCDEが参照できなくなっていると
433 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 10:24:12 ID:JkLZj++k] >主人公の攻撃が当たった時にhpを減らすよう設定 >ステップで「hpが0以下になったら消滅(死亡)」 この辺の実行される順番に問題があると予想してみる。 もしそうだったら、「hpが0以下になったら消滅(死亡)」を、ステップじゃなくコリジョンイベントで実行したら直る、……かもしれない。
434 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 16:16:23 ID:7QGWWpc1] マウスの動きに合わせて動くオブジェクトを作りたいのですがどうすれば良いでしょうか? stepでマウスの座標に移動させてしまうと、 そのオブジェクトがマウス以外の要因(敵との接触など)で移動した場合も、すぐにマウスの座標に戻ってしまいます。 説明が下手ですみませんが、よろしくお願いします。
435 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 18:01:40 ID:JkLZj++k] >マウスの動きに合わせて動くオブジェクトを作りたい これがやりたいことなら、 >そのオブジェクトがマウス以外の要因(敵との接触など)で移動した場合も、すぐにマウスの座標に戻る これは正しい動作ってことになるよね。マウスの動きに合わせて動いてるんだから。 どういうときにどういう動作をさせたいのか。 やりたいことをもう少し詳しく具体的に考えて。
436 名前:名前は開発中のものです。 [2008/11/17(月) 20:03:59 ID:qkRbLFEU] >>434 つまり一定速度でマウスに向かわせたいってこと?? もしそうならpoint_directionを使うといいと思う
437 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 21:34:27 ID:7QGWWpc1] 説明が下手で申し訳ありません。 >>435 ,>>436 そうです、それが正しい動作なのです。 ですが私が目指しているのは「マウスの座標に移動する」のではなく「マウスの動きにあわせる」なのです。 例えばマウスを右に動かしたらオブジェクトも右に、マウスの移動量だけ動く。という事がしたいのです。
438 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 22:07:33 ID:PQNNdjbn] >>437 移動する前にマウス座標と移動したあとのマウス座標を比較するとかで対応とか無理ですか?
439 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 22:08:05 ID:PQNNdjbn] 移動する前と後の座標を比較 ですね。誤字申し訳ない。
440 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 22:38:22 ID:7QGWWpc1] >>438 ,>>439 ありがとうございます。 何となくやり方は分かりましたがそれをコードで表すにはどうすべきか迷っております。 ちなみにGM6です。
441 名前:名前は開発中のものです。 [2008/11/17(月) 23:26:43 ID:qkRbLFEU] うーん、まだやりたいことがよく分からないけど… つまり初めはマウスと同じ位置にインスタンスがあって、で何かによってズラされると マウスに平行して動くってこと?? もしそうなら例えば ステップイベントでx、y、をマウス座標+global.pos_x,global.pos_yてして 変数の値をコントロールするとか…
442 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 23:39:43 ID:PQNNdjbn] >>440 >>441 のように、マウス座標取得してウンヌン。 >>420 あたりの感じでできますか? 自分もいまいち理解しきれてませんが、 マウスを転がすところがした方向にインスタンスを移動させたいって事だと思います。 この場合、マウスポインタが画面外に出た場合や さらに移動させようとしてマウスを元に戻した場合など変になりませんか? 純粋にマウスが移動したピクセス値だけを取得する関数ってありましたっけ?
443 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 23:46:34 ID:TD8Ccrf3] 考え方としては>374の方が近いんじゃないかな 毎回mouse_x, mouse_yの値を覚えといて x += mouse_x - (前回の値) とかすればよろし
444 名前:名前は開発中のものです。 mailto:sage [2008/11/18(火) 00:19:10 ID:0wQt7vmy] 基本的に、ピログラムってのは原始的なもの。 高度な、「以前の値から勝手に加減して現在位置を割り出す」なんてことはできない。 たいていが まずマウスの位置をプログラマが取得 更にマウスの位置をプログラマで取得、 その差を自分ではじき出して移動量とする そんな感じで書かないといけない 一個の関数でポンってできるようなものはあまりない。
445 名前:440 mailto:sage [2008/11/18(火) 06:04:44 ID:MofBkydO] >>441-444 ありがとうございます。前回の値を覚えさせておく事で何とか私の思っている通りに出来ました。 マウス座標 - 前回のマウス座標 + 前回のオブジェクト座標 に移動させる事で出来ました。 本当にありがとうございました。
446 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 15:26:02 ID:DeAHgIn+] ジョイスティックって設定項目あったっけ? 見当たらんのだけど
447 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 18:07:19 ID:4za16kRK] 以前ダンジョンゲームのターン制についての質問をした者です ターン制に関してはぎこちないながらも何とか完成したのですが、 毎回周囲のマスが開いているか確認→空いているところにランダムに移動だと挙動不審というか妙な動きになってしまいます。 主人公が近くにいるときは追って動く、一本道では後戻りせずなるべくまっすぐ進む、といった動きをさせたいのですが どのようにアクションを組めばいいのでしょうか。
448 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 18:19:51 ID:ratnEFy2] >>446 設定項目? GMのヘルプの The Game Maker Language (GML) →User Interaction →The Joystick にあるやつじゃなくて? キーコンフィグしたいってことなら、 グローバル変数でも作ってjoystick_check_buttonを使うといいと思う。 >>447 ターン制の動きができた、と。 んで、状況に応じて動きを制限してやりたい、と? >主人公が近くにいるときは追って動く >一本道では後戻りせずなるべくまっすぐ進む やりたいことちゃんとわかってるじゃないか。 >主人公が近くにいるときは >>追って動く >一本道では >>後戻りせずなるべくまっすぐ進む こう分けて、もう少し考えてみ?
449 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 18:31:18 ID:ratnEFy2] 一本道のとき、そのキャラの周囲に通れるマスはいくつある? 後戻りってのは、前回いたマスに行くことだよね?
450 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 19:05:35 ID:9SobK3CI] >>446 ジョイスティックイベントを探してるんだったら、Mouseの中にある。
451 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 02:15:20 ID:oldAvKXc] 斜め入力できる??? 例えば top right の順だと斜め入力にならない
452 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 02:43:38 ID:JLC+2EzT] キー操作で斜め移動する時と同じ原理で、たとえばupで y -= 4、 rightで x += 4 とすれば結果的に斜めに動くことになるけど。 speedとdirection使ってるとか、斜めの時だけ移動量変えたいとかだったら joystick系の関数を使って判定するコードを書く必要がある。
453 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 14:33:23 ID:xqi/6PvR] ある範囲(ゲーム中に移動する)以外を黒で塗りつぶしたいのですがどうすれば良いのでしょうか?
454 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 15:13:08 ID:gtPmWcjx] そこだけ抜いたスプライトをビューにくっつけたりすればいいんじゃないか?
455 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 18:09:38 ID:/1Y7KoVd] 原始的に、黒い長方形を4つ描くってのもある。
456 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 18:19:17 ID:fSCzA9A7] むしろ画面サイズの黒い長方形の上にすべてを描画する。
457 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 19:40:56 ID:xqi/6PvR] >>454 移動できません >>455 ありがとうございます。 それも考えたのですが記述が長くなりそうで・・・ 「その範囲以外」という指定は出来ないのでしょうか?
458 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 20:57:48 ID:JLC+2EzT] >>457 「その範囲外」というのなら、黒く塗り潰したサーフェイスの 真ん中をくり抜いてかぶせるという方法があるけど、 どう見ても>454-455の方が簡単だわな。 「移動できません」って意味がわからないけど、 画面の2倍サイズのスプライトの真ん中に穴あけて 穴がちょうどいい位置にくるように動かせばいい。 そんな大きいスプライト、リソースがもったいないというならその通りだが。 「記述が長くなりそう」ってのも、たった4行だべ? 四隅の座標を計算して変数に入れとけば何てことない。
459 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 21:35:24 ID:xqi/6PvR] >>458 ありがとうございます。 確かに見たところ>>455 のが最も楽そうですので四つ四角形を作ってみます。 続けて質問で申し訳ありません。 sleepを使うと全てが停止してしまうのですが一つのオブジェクトのみを停止させるにはどうすれば良いのでしょうか?
460 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 06:23:48 ID:8FHkjqBp] room →backgroundsタブ にある、Draw background colorのチェックボックスをオンにして、 その下の Color: のボックスをクリックして黒を選択する。 こうすれば、背景色が黒になる。 チェックボックスをオフにすると黒く見えるが、 それは黒ではなく何も塗られていないという状態なので、 上のやり方でいいから一度でも何か色で塗っておくべき。 一つのオブジェクトのみを停止となると、 with (object) { } を使うといい。 移動を停止させたいとなると、 {}の間にspeed = 0;を入れればいいかな。 もしその後でまた動きを再開させたいのだったら、 deactiveやactiveを使うとか、その辺のアルゴリズムはまた考えなきゃいけない。
461 名前:459 mailto:sage [2008/11/21(金) 06:58:26 ID:sjxyegPf] >>460 ありがとうございます。 その方法は便利ですね。ですが>>459 で言う停止、というのはそのオブジェクト自体の働きの事です。 Createで1120ms停止してから移動開始、等です
462 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 09:04:25 ID:8FHkjqBp] だったら「停止」とは逆に、「動いていいときだけ動く」とすればいい。 例えばステップイベントで動かしているのなら、 if (ugoku == true) { // ここにアクション } として、動かしたくないときはugokuをfalseにする。 わかっていると思うけど、msはミリセカンド。 秒でやりたいのならdatetime関数を使うのも手だけど、 そこまで拘らないのなら、フレーム数を数えるという方法もある。 例えば、 <Create> ugoku = false; taiki = 0; <Step> if (ugoku == true) { //アクション } else { taiki += 1; if (taiki >= 300) {ugoku = true;} } と書くと、インスタンスが作られてから300フレーム(5秒後(60fps時))にアクションをするようになる。 原理が分かれば応用もできるはず。
463 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 14:36:04 ID:sjxyegPf] >>462 ありがとうございます。 なるほど、それは応用性が高くて便利ですね。助かりました。
464 名前:名前は開発中のものです。 [2008/11/21(金) 20:07:21 ID:Aa2c/Y3P] >>Createで1120ms停止してから移動開始、等です 普通にアラームを使えばいいんじゃ…?
465 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 22:09:17 ID:sjxyegPf] >>464 アラームってms単位なのでしょうか? 使ってみた所なんかちょっと違うような・・・
466 名前:名前は開発中のものです。 [2008/11/21(金) 22:25:03 ID:Aa2c/Y3P] >>465 アラームは指定のステップ数が来たらイベントを行うのでms単位ではなく ステップ単位です 何かmsにしなきゃいけない理由でもあったら別だけど基本的な時間をコントロールしたいなら アラームが一番簡単で分かりやすい方法だから…
467 名前:名前は開発中のものです。 mailto:sage [2008/11/22(土) 05:30:20 ID:ih+yuern] >>465 どうしても秒を使いたいのなら、 最初に一度current_timeを使って現在の時刻を取得しておいて、 毎回current_timeを使って、最初に取得しておいた時間から何ミリ秒経過したかを調べる方法がある。 秒単位に拘るのなら↑のやり方があるけど、どう考えてもアラームの方が楽。
468 名前:465 mailto:sage [2008/11/22(土) 14:23:55 ID:Lvyzb+s5] >>466 ありがとうございます。 説明しにくいのですがどうしても秒単位じゃないとダメなのです。 >>467 ありがとうございます。 試しに使ってみます。
469 名前:名前は開発中のものです。 mailto:sage [2008/11/22(土) 19:42:07 ID:q+lYsPmJ] 秒からステップ数への換算なんて 秒×room_speed だけで済むし (1120msなら 1.12*room_speed) どちらにしても1ステップ未満の分解能は得られないけどね。 それとも、ゲームが処理落ちしてても実時間に 同期させて動かしたいってことなのかな?
470 名前:名前は開発中のものです。 mailto:sage [2008/11/22(土) 21:30:13 ID:clFoYfTe] >>469 本人ではないけど恐らく後者じゃないかな あえて実時間でフレーム非同期処理っていうとネットワーク関連かも 何れにせよ解決したっぽいので何よりだ
471 名前:名前は開発中のものです。 [2008/11/22(土) 21:53:58 ID:lm1qIDqX] spriteの矢印の絵をマウスの座標に向けたいんですが、 (イメージとしては見下ろし視点での戦車の砲台) やり方がわからないです。6.0のサンプルはあったのですが 低スペックなのでGameMaker6.0以降は起動できませんでした・・・。 なのでバージョンは5.3Aです。GMLはサンプルなどを参考にして使う程度で 多少は理解できるのですが書けません。 どなたかご教授お願いします。 お手数でなければ5.3AのサンプルをUPしていただきたいです。 よろしくお願いします
472 名前:名前は開発中のものです。 [2008/11/22(土) 22:10:27 ID:lm1qIDqX] ログちゃんと読めてなかった… 自己解決しました 失礼しました
473 名前:名前は開発中のものです。 mailto:sage [2008/11/24(月) 13:04:13 ID:xHi4CDCd] GMLでマウスポインタ自体を動かす事は出来ないのでしょうか? よろしくお願いします。
474 名前:名前は開発中のものです。 mailto:sage [2008/11/24(月) 15:27:27 ID:oGsKQE88] window_mouse_setとかdisplay_mouse_setとか
475 名前:名前は開発中のものです。 mailto:sage [2008/11/24(月) 21:01:38 ID:xHi4CDCd] ありがとうございます
476 名前:名前は開発中のものです。 [2008/11/26(水) 22:59:16 ID:8dk2lxXH] 飛び道具を発射して壁以外の何かに当たった時アクションを起こすというふうにしたいのですが コリジョンで特定のオブジェクトでなく「何かに当たった時」という設定はできますか? 今は敵一つ一つに「飛び道具に当たった時アクション」の設定をしているですがどうにも敵の種類が多いので…
477 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 00:33:24 ID:N2ZEFTBa] >>476 まさにそういう用途のためにあるのがParentと継承のシステム。 適当なオブジェクトを作ってobj_enemyとでも名付ける。 すべての敵オブジェクトでParentをobj_enemyに設定する。 (たしかAdvanced Modeを有効にしないとParentが出てこないので注意) 後はobj_enemyとのCollisionイベントを作れば終わり。
478 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 06:17:21 ID:98IVXa5Q] Parentは、オブジェクトをグループ化させることができる便利な継承システム。 例えばマ○オに出てくる亀。 緑の亀はひたすら歩く。崖で落ちる。 赤の亀は崖で引き返す。 羽の亀は飛び跳ねる。 全ての亀において、踏みつけると甲羅になる という共通点を持つ。このように何か共通点がある場合、parentが非常に役に立つ。 noko_green ├ noko_red └ noko_pata ↑のようにparent設定をして、(noko_redでparentをnoko_green、noko_pataでparentをnoko_greenに設定する) noko_redで崖判別を、noko_pataで飛び跳ねるように設定すればいい。 共通点の「踏みつけると甲羅になる」というアクションを親オブジェクトのnoko_greenから引き継がせることができるため、何度も同じ記述をする必要がなくなる。
479 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 06:18:17 ID:98IVXa5Q] また、ゲーム内で使用しないダミーオブジェクトを作るというのも効果的。 noko_dummy(踏みつけると甲羅になる ゲーム内では使わない) ├ noko_green(移動:遅) ├ noko_red(移動:速 崖で引き返す) └ noko_pata(跳ねる) このとき、踏みつけると甲羅になるアクションは、noko_green、noko_red、noko_pataの全てに引き継がせることができる。 このように、共通な部分は全てダミーに置いておき、それぞれのオブジェクトで何が違うのかということだけを考えていけばいい。
480 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 06:19:32 ID:98IVXa5Q] 親オブジェクトもまた親を持つことができる。 これを使って、 enemy ├ kuri ├ noko_dummy │ ├ noko_green │ ├ noko_red │ └ noko_pata └ bros_dummy ├ bros_hammer ├ bros_boomerang └ bros_fire として、enemyとのCollisionイベントを作ることで、 いちいち緑亀にぶつかったとき、赤亀にぶつかったとき……等と何度も同じ事を繰り返す必要がなくなり、 「敵に接触したとき」とまとめることができる。
481 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 06:26:01 ID:98IVXa5Q] Parent関連で必ずと言っていい程同じような質問が来るようだからざっとまとめてみた。 次スレ以降のテンプレにでも入れておくと便利かと思って。修正改変等あればどうぞ。
482 名前:名前は開発中のものです。 [2008/11/27(木) 07:58:38 ID:YVwu6GrP] なるほど、親はそういうときに使うのですか ありがとうございました!
483 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 08:16:46 ID:98IVXa5Q] >>476 「敵が飛び道具に当たったとき」ではなく「飛び道具が壁以外の何かに当たったとき」らしいので この場合は>>477 で書かれている通り、飛び道具のコリジョン相手を「敵」に一纏めにするだけで済む。 以下は「敵が飛び道具に当たったとき」の考え方。よければ参考に。 飛び道具が数種類(ブーメラン、矢、ナイフ)あるとして、敵も数種類あるとする。 このとき、>>480 の考え方を2回使う。 enemy ├ enemy1 ├ enemy2 └ enemy3 として全ての敵を一纏めにして、さらに weapon ├ boomerang ├ arrow └ knife として、全ての飛び道具を一纏めにする。 enemyもweaponも、中身は空っぽのオブジェクトで構わない。 そしてオブジェクトenemyで、オブジェクトweaponとのCollisionイベントを作ればいい。 こうすることで、「全ての敵において、何か飛び道具に当たったとき」とすることができる。 基本的に、似たものは一纏めにすると便利&効率的&構造上スマート。
484 名前:名前は開発中のものです。 [2008/11/27(木) 21:51:29 ID:IFIhMc/y] ボスなどを作るときにパーツごとに分けてあるのですが、曲がる時とかパーツの動きを本体にあわせようと 例えば本体のステップで with (obj_boss1_part) { direction = other.direction; image_angle = direction; } などとするのですが、曲がるときにパーツの方がプルプルと震えるようになってしまいます。 多分角度がプラスマイナスしてるからだと思いますが何か解決策ありませんか?
485 名前:484 [2008/11/27(木) 22:01:43 ID:IFIhMc/y] 自己解決しました 本当失礼しました…
486 名前:名前は開発中のものです。 mailto:sage [2008/11/28(金) 11:52:47 ID:PgkhIyzB] Parentの存在に目から鱗、今まで知らなかったわ やってみて気付いたけど親と子で同じアクション入れると無視されるんだね 例えば、親:クリエイト時に変数aに1を代入、子:クリエイト時にbに2を代入とすると aが存在しないってエラーになる。
487 名前:名前は開発中のものです。 mailto:sage [2008/11/28(金) 13:37:01 ID:rNzKqzWh] >>486 親クラスのアクションを丸ごと使いまわす場合でも明示的なオーバーライドが必要だったはず GMの場合はCallInheritedEventとかそんな名前のアクション(正式名称はヘルプで確認) 何も意識せずオブジェクト指向っぽくなるのがGMLの巧い所だけど 徹底してOOPL的な書き方しようとすると逆に分かりにくかったりしますね
488 名前:名前は開発中のものです。 mailto:sage [2008/11/28(金) 17:05:23 ID:23J9ij0M] ジャンプするボタン(ここではZキーとします)を押している時間の長さでジャンプする高さを変えたいのですがどうすれば良いのでしょう? Zキーを押している間、変数「jmp」に1ずつ足していき・・・といった感じでやってみたのですが ジャンプする条件に地面の上にいる事が入っていて、ジャンプはZキーを押した瞬間に行われるので意味がありません。
489 名前:名前は開発中のものです。 mailto:sage [2008/11/28(金) 21:07:21 ID:bzoft8au] >>488 押す(pressKeyDown)とパワーを貯めて(経過時間で数値を増加) 離す(pressKeyUp)とジャンプ処理 でどうですか?
490 名前:名前は開発中のものです。 mailto:sage [2008/11/28(金) 22:28:28 ID:8vGbtbAk] スープーメイリオブロ(英語は発音大事)みたいにしたいなら、 単純に押してる間だけスプライトを移動させていけばいいだろ
491 名前:名前は開発中のものです。 mailto:sage [2008/11/28(金) 22:38:55 ID:Ib5prIDh] >>486 親のイベントにあって子のイベントに無い物は、自動で子に引き継がれる。 子と同じイベントにある親のアクションを引き継がせる場合、 その起こしたいイベントの中でCall Parent Eventアクション(GML: event_inherited())を使う。 というわけで、>>486 の例だと子のクリエイトのbに2を代入した前でも後でもいいから 親のイベントを呼んでやると、子もa=1を持つようになる。 >>488 ボタンを押した時にジャンプの高さを全て決めるのではなく、 ボタンを押してジャンプさせ、ボタンを離した時に、押してからの長さによって「ジャンプの上昇を止めて落下させる」という考え方がどっかで使われていたと思う。
492 名前:名前は開発中のものです。 mailto:sage [2008/11/28(金) 22:56:55 ID:23J9ij0M] >>491 ありがとうございます。 その方法は考えてませんでした。物凄く助かります。
493 名前:名前は開発中のものです。 mailto:sage [2008/11/28(金) 23:26:08 ID:x//721CN] 範囲内ゼンブのオブジェクトに影響を及ぼすものはどうつくればいいのでしょう? for(i=0;i<120;i+=1) {col_body =collision_circle(self.x,self.y-120,i,all,true,true)} with(col_body) とすればうまいこと行くかなとおもったのですが一番最初に範囲に入ってきた物が効果を重ねて受けてしまうようでうまくいきません。 配列を使えばいいというのはなんとなくわかるんですがfor(i=0;i<instance_count;i+=1) col_body[i] =collision_circle(self.x,self.y-120,120,all,true,true) with(col_body[i]) とするとUnknown variable col_body or array index out of bounds が出てきます……。根本的に書き方が違うのでしょうか?
494 名前:名前は開発中のものです。 mailto:sage [2008/11/28(金) 23:45:40 ID:GUH2YmoS] 考え方を逆にして、全部のオブジェクトに対して「自分が範囲内にいるか」調べさせてみよう。 with (all) { // すべてのインスタンスをループ if (collision_circle(other.x, other.y-120, 120, self, true, true) { // もし範囲内にいたら // 何かする } } with文の中ではselfとotherの役割が入れ替わることに注意。
495 名前:名前は開発中のものです。 mailto:sage [2008/11/28(金) 23:51:13 ID:GUH2YmoS] ってnotmeをtrueにしちゃダメだな。ついでにselfよりidを使った方が安全かもしれない。 ということで2行目は if (collision_circle(other.x, other.y-120, 120, id, true, false)) { という感じで。 よく考えたら distance_to_point(other.x, other.y-120)<120 とかでも済むわけだけど。
496 名前:名前は開発中のものです。 mailto:sage [2008/11/29(土) 00:21:19 ID:IHR7UfyX] >>495 うっほおおお!!!!! ありがとうございます!!かれこれ一週間ぐらい悩んでたのでスッキリしました! こんな簡単にいくものだとは……。悔しいですね……;ω;
497 名前:名前は開発中のものです。 mailto:sage [2008/11/29(土) 00:23:52 ID:cPQXEOUA] >>493 GMのヘルプ >The Game Maker Language (GML) >GML Language Overview >With constructions の一番下にある例がまさにそれだな。 with (all) { if (distance_to_object(other) < 50) instance_destroy(); }
498 名前:名前は開発中のものです。 mailto:sage [2008/11/29(土) 01:08:40 ID:IHR7UfyX] 497さんもありがとうございます。いやあ新しい扉が開いたって感じです!
499 名前:名前は開発中のものです。 [2008/11/30(日) 11:51:36 ID:oUNmDB7a] 配列の例えばparts[i]というのがあるとして、 このiの値を取るにはどうしたらよいでしょうか?
500 名前:名前は開発中のものです。 mailto:sage [2008/11/30(日) 17:50:24 ID:8ZPTNF4x] >>499 例)partsという配列のi番目の要素を得る方法 parts[4] = 16; parts[5] = 25; i = 4; hoge = parts[5]; // この時点で変数hogeには25という値が代入される hoge = parts[i]; // この時点で変数hogeには16という値が代入される i = 5; hoge = parts[i]; // この時点で変数hogeには25という値が代入される 「iの値を取る」の意味が分からん 上の例で言うと、どういうケースでどの値を取得したいんだろう 配列の基本的な使い方が分からないのか それとも要素からインデックス値を取得する方法かな
501 名前:名前は開発中のものです。 mailto:sage [2008/11/30(日) 20:57:30 ID:ICPzjhiz] i の値を取得するという意味なら 単に i を使えばいいだけ。 i に代入されれば、i が取得したい値そのものなんだから 何も難しいことない
502 名前:名前は開発中のものです。 mailto:sage [2008/11/30(日) 21:02:36 ID:ICPzjhiz] i さんに、「あなたはどの値を持っていますか?」なんて聞くようなプログラムなど要るはずがない。 i さんは、関数の中に入れば自分の持ってる値を提出するしかないからだ。 例えば i さんが 5 の値を持っていて printf(%d, i); のような仕事(関数)に従事したとする なら、printfによって 5 という値が勝手に取り出されるだけ 特に今何を持っているのかを教えてもらう必要はない。
503 名前:名前は開発中のものです。 mailto:sage [2008/11/30(日) 21:38:09 ID:q/jrPCNZ] この場合、[i]というのは hoge という配列変数の何番目かという事を示している。 i=5だとするならば、hogeという配列の6番目という事をしめしている。 この書き方がされるまえには必ず、i には何らかの数値が代入されている。 よって、上記の氏たちのような返答でしか答えることができない。 というかjavaでもVBでもCでも何でいいので、プログラムのサイト調べておいで。
504 名前:499 [2008/11/30(日) 23:24:15 ID:oUNmDB7a] えーと…説明不足でした。スイマセン まずボスを作っていてまず本体となるobj_baseと両手足となるobj_partsがあります。 そしてもう一つobj_controllerがあります。 コントローラーでinst=instance_create(x,y,obj_base)とします、そしてinst.…=…と各変数を定義していきます。 そしてfor(i=0;i<4;i+=1)inst.parts[i]=obj_partsとしました。 パーツは両手足4つありそれぞれスプライトや描画位置が違うのでパーツのステップで もしbase.parts[i]のiが0なら位置はどこどこ、1ならどこどこと決めるためにiの値を取りたいのです 長々と失礼しました。
505 名前:名前は開発中のものです。 mailto:sage [2008/11/30(日) 23:54:17 ID:UwyYLNW7] やはり悩む必要ねえと思うが
506 名前:名前は開発中のものです。 [2008/12/01(月) 00:08:59 ID:RRq5dBO9] for(i=0;i<4;i+=1)inst.parts[i]=obj_parts の意味が分からん。どういうつもりでそれを書いているのか。 それだと、parts[0]〜parts[3] まで、obj_parts が代入されるよ。 4つのオブジェクトを配列で管理しようとしているのかもしれないが、 結局右手をあらわす番号、左手をあらわす番号などは自分で決めるもの。 配列を使うのは、ループ使って処理しやすくするためなのだろう? なら、こうなるはずだ。 for(i=0;i<4;i+=1) { if (inst.parts[i] == 右手パーツ) { //右手パーツの処理 } else if (inst.parts[i] == 左手パーツ) { //左手パーツの処理 } ... } if 〜 else if 〜 の文は冗長でよろしくないが、switch文を使うとスマートに書ける。
507 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 00:21:52 ID:LiWv5v7d] > for(i=0;i<4;i+=1)inst.parts[i]=obj_partsとしました。 これだとすべてインスタンスじゃなくてオブジェクト(obj_parts)への参照になってしまって 区別がつかないと思うけど。inst作った時と同じやり方で for(i=0;i<4;i+=1) inst.parts[i] = instance_create(x, y, obj_parts) とかすればいいと思うがどうか。 で、obj_parts自身のイベントの中で、自分が何番目のパーツなのか知りたいってことだよね? 上のやり方で各インスタンスを作った後でiを教えてやればいい。 for(i=0;i<4;i+=1) { inst.parts[i] = instance_create(x, y, obj_parts); inst.parts[i].number = i; } 番号に頼らずに、右手・左手・右足・左足それぞれ別オブジェクトにしてしまう手もあるけどね。 上で出てきたParentの考え方を使えばすっきりまとまるはず。
508 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 00:25:03 ID:QQgG8mIq] for(i=0;i<4;i+=1)inst.parts[i]=obj_parts 4まで数えるので、 inst_parts[0] = obj_parts inst_parts[1] = obj_parts inst_parts[2] = obj_parts inst_parts[3] = obj_parts inst_parts[4] = obj_parts obj_partsが右手だったら、5要素全部に右手を代入していることになっている
509 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 02:36:53 ID:dWziD4by] でも結局パーツごとに処理変数(スプライトとか位置とか)が違うんだったら 辺に端折らずに、それぞれ別個の変数で管理するほうが楽なんじゃない? 基本オブジェクト(胴体)の位置からそれぞれの位置を割り出して HPなどの共有する値は共有するようにglobalすれば良いだろうし。
510 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 04:46:27 ID:Ekx4hYib] もしかして、こうしたいんじゃなかろうか。 for(i=0;i<4;i+=1) { inst.parts[i] = instance_create(x, y, obj_parts); inst.parts[i].number = i; } こうすることで、 「パーツのステップでもしbase.parts[i]のiが0なら位置はどこどこ、1ならどこどこと決める」 という動作ができる。 このとき、参照するのはiじゃなくnumberな。
511 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 05:08:55 ID:Ekx4hYib] obj_partsが作られたとき、inst.parts[i]にインスタンスIDが代入される。 パーツのステップで、obj_partsが作られたときに代入したinst.parts[i]のiの値を使って位置を決めたい。 (と解釈した) ……ってことは、それぞれのパーツから見て、iって変わらないよね? つまり、右手はいつも右手ってこと。 だったら、作ったときにそのiの値をそのパーツに持たせればいい。 というわけで、パーツが作られたとき、そのときのiの値をnumberという名前の変数としてパーツに持たせてみたのが>>510 。 これで、パーツのステップでnumberを使って位置を決めることで、「iを使って位置を決める」というのと同じ動作ができる。 ……ところで、base.parts[i]て何。inst.parts[i]ならまだ分かるが。
512 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 11:26:32 ID:Ekx4hYib] ってあるぇ? 今よく見てみたら>>507 にあるじゃん。 しかも、よく読んでなかったのにnumberって変数の名前まで一致(意図してません)。 もう少し読もうな、俺。('A`)
513 名前:499 [2008/12/01(月) 13:30:41 ID:WFVB4NOy] なるほど… ではやっぱり配列の[]内の値をとるシンプルな関数などはないんですね… やっぱり509氏の言うようにそれぞれ個別の変数を持たせた方がよさそうですね 皆さんいろいろな意見ありがとうございました
514 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 21:04:50 ID:LiWv5v7d] >>513 やりたいことはわかったけど、「配列の[]内の値をとる」なんて自分用語は やっぱり誰にも通じないぞ。「配列の要素から添字を調べる」とか もっと簡単に「検索する」とか言うんだ。 配列の検索自体は難しいことじゃない(ループして調べるだけ)。 そういうスクリプトは簡単に書けるし、ds_listなら関数一発でできる。 ただ、君のやりたいこと実現するのに検索なんて必要ない、 もっと簡単に済む方法がいくらでもあるってだけのこと。
515 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 21:39:31 ID:hPo6+q3F] 指定したサウンドでなく「今鳴っているサウンド」を停止する方法はありますか?
516 名前:503 mailto:sage [2008/12/01(月) 22:44:50 ID:dWziD4by] >>513 だーかーらー i を使ってるのはfor文の中でしょ? でfor文は繰り返す処理する処理で{}の中身を通して処理し、 最後に i++ で i に「+1」するんだ。 for(i=0;i<4;i+=1){中身} は、i の値が4になるまで繰り返す文 なんだ。 ここまではOK? なので、 i の値はその処理内の実行回数の値である。 i は、そのときの値である。 i にどの数値が代入されてるか調べるには、単に i を見ればいい。 ということだから、プログラムの基本中の基本であり、どっかの解説サイトを見てこいと言ったんだ!!
517 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 23:04:58 ID:VAhzR6SY] >>516 おちつけwfor文がどうとかではなくて 定数定義とか列挙子みたいなことをやりたいんでしょ。たぶん GMLで使えないけど
518 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 02:15:33 ID:cOR4nM2X] i の値を取得するのは非常に簡単だから Hello world レベルだから 実際、Hello world で使ってる関数の中身を数文字変えるだけ。 だから、そんなことで悩む事自体がおかしいのだ。 おかしいので、「そんなこと悩むわけがない、別のことを言いたいのではないか」 と思うし、実際文そのままの意味で取れば「そんなもん、幼稚園児でも出来るぞ」になるわけだ 言い回しがおかしいと答えも出ない
519 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 02:21:18 ID:cOR4nM2X] なんつうのかな 箱にオモチャを入れました 箱の中身を知る方法ないですか と聞かれたようなものだ。 開けて見りゃいいじゃねえかよ 箱(変数) を関数に渡す、関数で使うようにプログラムすれば 関数は勝手に箱開けて中身を使う。 それで知ることができる 非常に単純なことだから、悩むなんて誰も思わない。 Cだったら、printfなどの、数字や文字を画面に表示する関数で使って、「見る」だけでいいからだ。
520 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 10:40:55 ID:xezqMnLO] 流されかかってる>>515 を拾ってみる。 とりあえず思いついた方法2つ。どちらもGMを使う。 1)全音停止 sound_stop_all() ↑を使えば全部止めることが出来る。 全部止めれば、「今鳴っているサウンド」を停止することができる。 2)確認→停止 sound_isplaying(index) ↑を使って、再生されているかどうかの確認が出来る。 これを使って戻り値がtrueならsound_stop(index)で止める、という方法。 チェックしたいサウンド分だけループさせることで、「今鳴っているサウンド」をピンポイントで停止させる。
521 名前:520 mailto:sage [2008/12/02(火) 11:00:03 ID:xezqMnLO] >>520 誤)GM 正)GML orz
522 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 14:41:52 ID:xRaNmqQG] GMのヤバいところは、ほっておくとサウンドデバイスが増え続けること ffdshowなどの、1デバイス1デコーダーのデコーダーで見るとわかるが、 音楽鳴るたびにデコーダが増える。 20曲鳴らせば20個のデコーダが用意され、デバイスを閉じても消えないことすらある。
523 名前:名前は開発中のものです。 [2008/12/02(火) 17:06:18 ID:We5UmkXJ] ゼルダみたいなゲーム作りたいんだけど お金表示やお金を作ることってできるんですか?(ゼルダで言うルピーみたいな
524 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 17:25:34 ID:Ujq+dWEg] すごく初歩だと思うが質問させてください。 グラディウスみたいなのを想像してもらえればわかりやすいと思うけど、 自機の移動がうまくいかない。 上下左右それぞれ押したときにその方向に一定の速度を与え、 離したときにその方向の速度を0にしているんだが、 たまに引っかかったように動かなくなることがある。 急に逆方向のボタン(上と下、右と左)を押すとなることが多い。 ちなみに座標を移動させる場合も同じように引っかかる。 どうやったらもっとスムーズに動くんだろう?
525 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 20:58:31 ID:taOqiXBl] >>523 変数使えば簡単にできるけど 初心者だったらscoreを流用するのがお手軽でおすすめ。 >>524 GMについてくるサンプルか公式のチュートリアルに 1945っていうシューティングがあるから、見て真似してみれば? キーを下げた時(key press)と上げた時(key release)で制御してると 複数のキーの上げと下げが干渉してそんな不具合が起きやすい。 単に押している間(keyboard)だけ座標を増減させるようにすればすっきりする。
526 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 20:59:02 ID:UFWpQr+3] >>523 できます。 お金とか敵とかリンクとかはすべて「オブジェクト」という個体表示で考えます。 敵に当たるとダメージの部分を、 お金に触れると(お金が画面から消え)お金単位が増える。 と置き換えます。 どの言語を使っても考え方は同じになります。
527 名前:名前は開発中のものです。 [2008/12/02(火) 21:45:08 ID:We5UmkXJ] >>525 >>526 ありがとうございます。スコア使ってみますね
528 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 22:23:17 ID:uu7fmr/m] なんか条件式がおかしいと思ったら xprevious と ypreviousは >>377 の >・(now all instances are set to their new positions) これ以降じゃないと値が保障されないのか。ぬかったわ
529 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 22:42:03 ID:ATORRfCZ] シミュレーションゲームの練習をしているのですが 範囲の求め方が分かりません。 自分のやり方だと先ず、プレイヤーを選択すると 移動範囲が出るようにはしたのですが、 この出し方がinstance_create(x,y,object) で出しているのですがこの方法だと どうすれば障害物の処理が出来るのかが分かりません; もう一回一から作ったほうがいいのでしょうか・・・ 説明が下手で申し訳ありません;
530 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 23:10:09 ID:uu7fmr/m] 自分もシュミレーション作ってるよ ゲームにもよるけど障害物の処理ってのは避けて通るとかそういうことかな 具体的な状況がよく分からないかも どこまで移動できるかだけでいいなら プレイヤーに移動力のような値を持たせて 平地なら-1 砂地なら-2とかやって移動力がゼロ以上なら指定した場所までいけるとかできるけど
531 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 23:15:43 ID:ATORRfCZ] >>530 仰るとおりです。 障害物をよけて通れるようにしたいのです。 ネットとかで調べるとそのようなやり方を良く見かけるのですが、 如何せんどう組み込めばいいのか分からず; もう少しヒントを頂けると嬉しいです。 厚かましくてすみません;
532 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 23:21:00 ID:uu7fmr/m] どういうゲームなのか教えて欲しいかも たとえばFEやタクティクスのようにターン制なのか ポピュラスのようにリアルタイムな感じなのか マップの構造によっても変わってくるし ていうかシュミレーション・・・これは恥ずかしい誤字だった///
533 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 23:24:40 ID:ATORRfCZ] FE目指してます。 もう少し粘ってみます。
534 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 00:07:38 ID:5ByG7lYo] 例えば、開始時の移動力が10あるとして 5 1 6 4☆2 7 (星の位置がキャラクターだとして) 3 ☆を起点として1、2、3、4を調べ、座標とかかるコストを配列に保存する。 1に起点を移し周囲4マスを調べ、座標とそれまでにかかったコストを保存する。 すでに調べた座標は基本的に記録しないが 1→6 と 2→6のような経路が被る場合、移動コストが軽いほうを保存する。 移動コストが10より小さいものがなくなるまでこの作業を繰り返して 終わったら配列に保存された座標のところを移動範囲として表示すればいいような気がする FEだったらこんな感じかな
535 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 02:03:59 ID:r0U2/w9u] 通れないマップチップは、「通れまへんフラグ」を設定しておく 自分と敵との最短経路を弾き出し、その間に「通れまへん」があれば分岐
536 名前:524 mailto:sage [2008/12/03(水) 17:54:24 ID:XBsb6U76] >>525 ありがとう、助かりました。
537 名前:名前は開発中のものです。 mailto:sage [2008/12/04(木) 19:42:54 ID:COm9ODRQ] FEならSRC使うべきだろ常識的に考えて…
538 名前:名前は開発中のものです。 [2008/12/04(木) 19:51:06 ID:wis04ySw] 質問多くてすみません・・・ ゼルダでアイテム画面とかに移動する。というのはRPGのフィールドの位置保存 を使えばできると思ったんだけど、装備した元の位置の主人公のオブジェクト変更 ってできるんですか?
539 名前:名前は開発中のものです。 mailto:sage [2008/12/04(木) 20:23:54 ID:BFQV7gOy] >>538 「元の位置の」ってのが何指してるのかどうしたいのかわからないけど 主人公の表示アイテムを変える方法としては、 1)アイテムに固有IDを割り振っておく 2)装備してるアイテムIDの画像を表示する で、いけるんじゃないかな。 もともと表示するのはIDのアイテムで、アイテムが変わったら画像もチェンジする アイテムごとに画像を用意しなくちゃいけないのは、そもそも当然のことだしね。
540 名前:名前は開発中のものです。 [2008/12/04(木) 20:32:17 ID:hYQrGj00] はじめまして。 GM初級者です。 早速質問ですが、 複数のインスタンスから 一番別のオブジェクトに近いインスタンスを取得したいのですが、 どうすればいいでしょうか。
541 名前:名前は開発中のものです。 mailto:sage [2008/12/04(木) 21:33:34 ID:BvmV+/Fo] >>540 質問がややこしくて読み間違えてるかもしれんが 恐らくinstance_nearest(x,y,obj)を探してるんだと思う 例えば、objMikata、objTeki、の2種類のオブジェクトがあるとして objMikataのインスタンスが9個ある(insMikata1〜insMikata9) 同じくobjTekiのインスタンスが9個ある(insTeki1〜insTeki9) この時、3番目の味方から最も近い敵は nearestTeki = instance_nearest(insMikata3.x, insMikata3.y, objTeki); こんな感じで求められる 詳しい説明や似たような関数はヘルプ参照
542 名前:540 [2008/12/04(木) 22:08:30 ID:hYQrGj00] >>541 それです! ありがとうございました。
543 名前:名前は開発中のものです。 [2008/12/05(金) 17:53:46 ID:X+fPv7FO] >>539 助かりました。 ありがとうございます!
544 名前:名前は開発中のものです。 [2008/12/06(土) 17:02:27 ID:DxqncoX6] また問題が出ました。 何度も何度もすみません。 敵が全滅したり 味方が全滅したりすると 変数の参照先がなくなり エラーになります。 解決策はないでしょうか?
545 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 17:49:42 ID:6jDgYk9y] 参照するまえに、存在するか確認する。 存在するなら参照する。しなかったら何もしなくていい。 instance_exists(obj)を使えば存在するかどうかが、 instance_number(obj)を使えば個数がわかる。
546 名前:544 mailto:sage [2008/12/06(土) 18:50:41 ID:DxqncoX6] ありがとうございます。
547 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 19:09:11 ID:uswEIGEy] ターン制を自分なりに頑張ってみたのですが、 完成したと思ったらやっぱり色々とおかしかったのでアドバイスをいただきたい次第です まず敵を用意して、生成時にglobal.bに+1する。 global.aを用意して、1の時主人公が行動できる→何か行動したらa=2にする a=2になったとき敵達のターンになり、何か行動したら一体につきglobal.bを-1する。 global.b=0になったときa=1にして、現在ルームにいる敵の数をbに代入する これで作ってみたのですが時々何故かbが0より少なくなったり敵が挙動不審な動きになってしまいます。 その辺りはまだ許容範囲だとしてもう一つ、 ・主人公が敵に囲まれているときに相手達のターンになり、敵が攻撃してくる の際一斉に殴りかかってくるような有様になってしまいます。 そこで現在いるモンスターに何か順番に番号を与えて、たとえば敵Aに1、Bに2、Cに3、Dに4…という具合に。 「global.Nを用意して、主人公が行動、つまりa=2になったらNを1にする N=1のときAが行動し、bから-1してN=2にする→N=2になったのでBが行動し、bから-1してN=3にする→ N=3のときCが…〜→b=0になったらa=0、N=0にする」 こうすればおそらく順番に行動してくれると思うのですが (b-=1のタイミングは攻撃や移動などのアニメーション終了時なのでちゃんと順に動くはず) 「現在いる敵に何か順番に『番号』を与える」「Nの値と等しい『番号』を持つ敵が行動し始める」 という処理をどう行えばいいのか分かりません。 敵の数は死んだり新しく出現したりでa=2になるごとに変動してしまうので初めから固定で番号を与えることはできません。 長文かつ分かりにくい文章だと思いますがどうすればよいか分かる方ご教授願います…
548 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 21:06:12 ID:eG4vVrw2] 一般には待ち行列とかキューとか言われる構造を使うと思う。 1. 主人公とすべての敵のインスタンスIDをキューに入れる 2. キューからインスタンスを一つ取り出し、そのインスタンスに行動させる 3. 行動が終わったら2に戻る。キューが空になっていたら1に戻って最初から 具体的にどう実装するかだけど、まずコントローラオブジェクトを一つ用意して 次のように処理させる。 (ds_queue使ってもいいけど、レジストしてないかもしれないので配列で実装してみた) ・Createイベントで以下の変数を用意 global.current_id = noone; // 現在行動しているインスタンスのID(nooneなら誰もいない) queue_size = 0; // キューの中身の要素数 queue_pos = 0; // キューの何番目まで処理したか ・Stepイベントで次のように処理 if (!instance_exists(global.current_id)) { // 行動しているインスタンスがいない場合 if (queue_pos >= queue_size) { // キューが空だったら…… queue[0] = obj_player.id; // 先頭に主人公のIDを入れ…… queue_size = 1; with (obj_enemy) { // 他のすべての敵もキューに入れる other.queue[other.queue_size] = id; other.queue_size += 1; } queue_pos = 0; } // キューから一つ取り出して行動を開始させる global.current_id = queue[queue_pos]; queue_pos += 1; } 主人公と敵のインスタンスは ・global.current_id == id だったら自分が行動する ・行動が終わったらglobal.current_idをnooneに戻す とすればいい。
549 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 21:34:34 ID:uswEIGEy] ありがとうございます ちょっと難しそうですが頑張ってみます。
550 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 21:44:15 ID:Gr9J9Ja2] やはり548氏が説明されてるキューが一般的だと思う あえて別の方法を挙げると ターン情報をグローバル変数ではなく各ユニットに持たせるようなやり方 ユニットは配列に格納しておきそれぞれにターン値を設定する unitList[0].turn = 15; // ターン値の初期値 unitList[0].speed = 7; // 素早さ 毎ターンごとに全ユニットのturnプロパティに素早さパラメータを加算 unitList[0].turn = 15 + unitList[0].speed; turnの値が100以上になったユニットがいれば彼のアクティブターン いなければ素早さ加算を繰り返す 魔法や呪文で素早さやターン順が変わるゲームではこの方法も分かりやすいかもしれない
551 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 22:33:58 ID:uswEIGEy] >>548 stepの部分を入れてみたところ色々なところが構文エラーになってしまったのがどうしてでしょうか… obj.enemyなどの部分はちゃんとオブジェクト名に直しました(そこは関係なかったみたいですが)。
552 名前:名前は開発中のものです。 mailto:sage [2008/12/07(日) 01:43:46 ID:Hva4nw+k] すみません、{などの位置を正したら直ったみたいです。 >>548 の場合私が設定したglobal.aやbなどは無くても大丈夫なのでしょうか?
553 名前:名前は開発中のものです。 [2008/12/07(日) 15:34:40 ID:BlF8unb/] また問題が... 自分のオブジェクトと敵のオブジェクトの間に 壁オブジェクトがあったら弾を打たず、 無かったら撃つという風にしたいのですが・・・ 回答はしたいときで構いません。 よろしくお願いします。
554 名前:名前は開発中のものです。 mailto:sage [2008/12/07(日) 16:47:56 ID:iNdKCD5t] >>553 ヘルプでcollision_line関数を調べてみましょう・・・
555 名前:553 mailto:sage [2008/12/07(日) 18:01:29 ID:BlF8unb/] またまたありがとうございます
556 名前:名前は開発中のものです。 [2008/12/10(水) 20:08:22 ID:Pwqi4CyR] www2.uploda.org/uporg1845643.gmk.html 今こんなゲームを作っています クリックしたとこに緑のやつが移動 近くに赤いやつがいたら勝手に撃つ 左上はレーダー ですが、 なぜか赤いやつの処理だけが遅いのです。 緑のほうが、数も処理数も多いはずです。 赤が一匹だけでもかくかくになってしまいます。 見ていただけたらうれしいです。
557 名前:名前は開発中のものです。 [2008/12/10(水) 20:09:11 ID:Pwqi4CyR] 連レスorz パスは fedora8 です
558 名前:名前は開発中のものです。 mailto:sage [2008/12/10(水) 20:27:44 ID:edz1Bxdl] 緑の奴にinstance_exists(object3)があるから もし赤い奴がなければこれ以降が無視されるので軽い 衝突判定だとか索敵を毎ステップやると当然重くなるよ あと他の人に見てもらうならコメントか何かはつけるべし
559 名前:名前は開発中のものです。 mailto:sage [2008/12/10(水) 20:56:57 ID:nqQ/Z5/R] ルームのスピードはそのまま(30fps)で特定のキャラクターのスプライトを10fpsでアニメーションさせる、というようなことは可能でしょうか?
560 名前:名前は開発中のものです。 mailto:sage [2008/12/10(水) 22:32:55 ID:eRvJFMy9] >>559 image_speed アニメーションの速度 image_index アニメーションの何コマ目を表示しようとしてるか image_number アニメーションの長さ(総コマ数) ヘルプの同じページに3つとも例文付きで載ってます 徐々にアニメーションを早くしたり、特定のコマで停止したり 状況に応じて動的にアニメーション速度を変更できます
561 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 08:01:09 ID:0wlARFf+] ステップの処理速度を早くしたいのですが ルームのfpsを高くするだけで効果はあるのでしょうか?
562 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 08:47:48 ID:BGyF9xSS] >>561 ステップの処理速度を早くしたい、というのは、 動作が重いのを何とかしたい、ということだろうか。 基本的に、効率が悪いと重くなる。 処理速度を上げたいのなら、効率を上げるのが一番いい方法。 例えばマ○オで、そのステージ全体の処理を全て実行するのは無駄が多すぎるのがわかるだろうか。 見えない部分、画面からあまりにも離れた場所の処理を省くことで、効率も処理速度も大きく変わる。 同じ要領で、毎ステップ実行しなきゃいけないことなのかどうかを考えながら、 無駄な部分を出来る限り省いてみるといいと思う。
563 名前:561 mailto:sage [2008/12/11(木) 09:52:59 ID:uFLRyYUD] 説明不足でした。すみません キャラAが行動し終わったらすぐキャラBが行動し、Bが行動し終わったらキャラCがすぐ行動し… という動作をあくまでも順番通りに、かつほぼ瞬時に行いたいのですがどうも若干遅延したり最初に動くキャラと最後に動くキャラで行動終了に差が出来たりしてしまうのです。 これはfpsを高くすることで若干でも解消できるのでしょうか。
564 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 14:11:51 ID:BGyF9xSS] 何だかどうしてもfpsを上げたいようだね。 それに、解消できるかどうかは、試してみればわかるようなことだと思うが……。 理論的には目立たなくなるだろうけど、でも「目立たなくすること」が最終目的じゃないはず。 「あくまでも順番通りに、かつほぼ瞬時に行いたい」 本来なら、これをどうやったら実行できるかと考えるべき。 うまくいかないのなら、何故ズレが生じるのかと原因を考えるべき。 ABCとキャラが三人いるとしても、ABCの順に処理されるとは限らない。 もしかしたらGMは、BCAの順に処理してるかもしれない。 もしそうだったら、 1フレーム目 B:「Aが未処理」 C:「Bが未処理」 A:処理 2フレーム目 B:処理(Aが処理済) C:処理(Bが処理済) という感じに、1フレーム目にAが処理され、2フレーム目にBCが処理されることになる。 これが多分遅延される原理だと思う。 他のオブジェクトに順番を覚えさせ、 そのオブジェクトがABC全員を操作するのがいいんじゃないかと。 例えば、Zってのを作って、ABC自身は何もせず、ZがAを処理してBを処理して……と。 順番を扱うときには配列等を使うのもあり。
565 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 16:37:49 ID:nF6qn38V] 結論から言えばfpsを変えても解消できないだな 1フレーム毎にオブジェクトが全部更新されるから、何の差か知らないけれど ある経過時間での差は変わらないよ キャラA、B、Cが別々に動いてそれぞれの行動開始までの時間がばらつくというのなら 最初のフレームで行動決定処理(AI部分)をやって次のフレームで行動開始ってすれば 揃っているように見えるけど・・・ゲームによりけりかもね
566 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 18:43:18 ID:0wlARFf+] なるほど、ありがとうございます 一応>>548 を参考にして形だけは出来たのですが先述の通り遅延が生じたり 敵の数が多くなると処理が遅くなって(主人公の動ける順番が回ってくるのが遅くなって) 一歩動くと次動くまでに若干待たされ動作が快適とは言えないような状態になってしまうのです 解消する方法は無いでしょうか…
567 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 19:45:07 ID:nF6qn38V] ゲームの設計かキューの使い方、どちらかが間違っているような気がする スペックにもよるけどインスタンス5〜600体ぐらいなら 上記のキュー設計で処理落ちすることはあんまりないと思うんだけどなあ 主人公サイドはキューに詰め込まなくてもいいとか細かいことはあるけど
568 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 20:57:24 ID:0wlARFf+] 処理落ちというか主人公が動いたときに一斉に行動するのではなく敵がちょっと遅れて動くんです。 敵の数が多ければ多いほど番号が最後に割り振られてる敵?の動きがかなり遅れています。
569 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 20:59:36 ID:5W34XGsl] >>568 1)情報を小出しにしない。 2)仕様はなるべく提示 3)表現したい目的を言う
570 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 21:22:53 ID:YYSIE6Pp] もともと>547で敵が全部一斉に動くのがイヤだというから>548のキュー案が出てきたわけで 「順番に動く」と「一斉に動く」は両立しないんだけど、結局どうしたいの? >566で言ってる主人公が待たされるのを解消したいと言うのなら 行動完了するまで待たないで、行動開始してから数ステップ経過したら 次のキャラに行動を始めさせるという手がある。 キャラ数に応じて間隔を変えるようにすれば>568の問題もばっちり。 もちろん、複数のキャラがある程度並行して動けるように設計しとかないといけない。
571 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 22:19:17 ID:0wlARFf+] 「一斉に動く」というのは視覚的な物で>>570 さんのおっしゃる「ある程度並行して動く」というのが正しい表現ですね。すみません。 今は>>548 さんの案でシステムを組んで、 主人公:「global.current_id = idで行動できる状態になる」「移動、攻撃など何かを行ったらglobal.current_id = noone」 敵:「global.current_id = idで行動できる状態になる」「移動、攻撃など何かを行ったらglobal.current_id = noone」(同じ) でそれぞれ動くようにしています。 敵が1体の時でも主人公が動く→敵が動くの過程で「視覚的に」同時には動かず、 ・主人公が動く→動き終わる(行きたいマスに行く)と敵がすぐ動く の流れになりどうも不自然になってしまいます。 敵の数が多くなればなるほどそれが連鎖して ・主人公動く→動き終わると敵Aが動く→Aが動き終わるとBが動く… となり少しずつ遅延されていってしまいます。 以前の global.a=1で主人公のターン global.a=2で敵のターン 主人公行動でa=2に 敵のクリエイト時にglobal.b+=1 global.bの最大値をglobal.cに記録 敵が行動するとglobal.b-=1 global.b=0になった時にa=1に戻し、cをbに代入 だと視覚的でなく実際に「主人公と敵全員が一斉に動いた」のですが これでは順番に動くというのが全く無視されるため廃止しました。 自分の希望としては ・(視覚的にでもいいので)全員が同時に動く。 ・順番に攻撃したりするために(内部処理の面だけでもいいので)順番に行動しているようにする。 の二つが同時に満たされるといいのですがいい方法は無いでしょうか。 何度も申し訳ありません
572 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 22:41:52 ID:YYSIE6Pp] 普通のターン制ゲームでも、敵がたくさんいたら全員が攻撃し終わるまで待たされるだろ? と書こうとしたけど、でも全員が歩き終わるのを待ったりはしないよな?と思ったのでちょっと考えてみた。 シレンなり何なり君が参考にしてるゲームで自分と敵の動きをじっくり観察すればわかるはずだけど、 その手のゲームでは1ターンが実際には複数のフェーズから成り立っている。 (1) 自分が行動する(歩く、攻撃する、道具を使うなど) (2) 敵が歩く(全員同時に) (3) 敵が攻撃する(一体ずつ順番に) 自分が歩いた時には(1)と(2)が同時に起こるけど、それ以外の行動をとると(1)が終わってから(2)が起こる。 誰も攻撃行動をとらなければ、主人公は立ち止まることなくスムーズに歩き続けられるわけだ。 この辺を踏まえて、歩くのとその他の行動を分けて別々に実行させるようにしたらどうかな。 ただ、敵はあくまで1ターンに「歩く」と「攻撃する」のどちらか片方しかしないと思うので、 どちらの行動をとるかは(2)より前(ひいては主人公が歩き始める時)に決めておく必要がある。 まとめるとこんな感じかな。 ・主人公が行動決定したら、その他のキャラ全員がどう行動するか決定。変数にでも覚えておく ・主人公の攻撃行動、終わるまで待つ(攻撃しない場合はすぐ次に進む) ・歩く予定のキャラ全員を同時に歩かせる。全員の行動が終わるまで待つ ・攻撃予定のキャラに、キューを使って順番に攻撃行動を行わせる ・全員行動し終わったら最初に戻る
573 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 00:41:26 ID:YwPJgrfp] 攻撃はなるべく隣接したときや一直線上にきたときに行いたいので 行動前に決定するのはちょっと自分の技能じゃ辛いかなぁと… 主人公が行動する→敵:主人公の行動と同時に、攻撃範囲内に主人公がいなければ移動や特殊行動、いる場合は一旦待機 →移動するべき敵が全員移動し終わったら攻撃準備している敵のフェイズに入る→キューを使って順番に攻撃処理→主人公が動ける状態に戻す として 変数aを用意→a=1の時主人公行動可能状態→主人公行動時にa=2→a=2になったら敵の行動開始(a=2になった際敵の数をbに記録)→ ・攻撃範囲内に主人公がいない敵:移動や特殊行動をし、b-=1 ・攻撃範囲内に主人公がいる敵:キューを利用して順番に攻撃。何らかの変数等をON状態にしてその敵だけキューに対応させる?>攻撃したらb-=1 b=0になったらa=1に戻して再び主人公行動可能状態に とこんな感じでいいのでしょうか? 攻撃をする敵に関するキューをどう組めばいいやらよく分からないのですが…
574 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 01:37:09 ID:AbV0Ta9O] 攻撃範囲にいたらキューに追加 フェーズが変わったら一個取り出してと処理していけば問題ないんじゃないか 根本的に a が 0,1,2,4 とかビットフラグで管理したいのかもしれないけど 慣れていないならきちんと名前をつけて真偽値でやるべき フェーズ管理についても同様。変数の状態で管理するのではなく 主人公行動、敵の行動、敵の攻撃 etc とそれぞれフラグ管理するべき bの意味が果てしなくないように見える
575 名前:名前は開発中のものです。 [2008/12/12(金) 14:22:36 ID:UTYwgiXi] オブジェクトの親やマスクを途中で変えたいのですがどうやればいいのでしょうか?
576 名前:名前は開発中のものです。 [2008/12/12(金) 19:19:55 ID:b5nKeRJC] 親を変えるのは不可能だけど マスクはmask_indexに再代入すればできるはず
577 名前:名前は開発中のものです。 [2008/12/12(金) 21:00:29 ID:6TlHc+FT] すみません gmkはgmdに変換できないでしょうか
578 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 22:10:49 ID:Vplk2GsR] >>575 object_set_parentで親を変えることはできるが、インスタンスではなく オブジェクト自体(設計図)に作用するから期待するような結果にはならない。 親を変えたいって質問はたまに見るけど、そういう時はたいてい設計が間違ってるべ。 >>577 LGMでGM7→6に変換できるらしいけど、使ったことないから本当かどうかはわからん。 ttp://www.ismavatar.com/lgm/ って、gmdってことはさらに6→5に落とさないといけないのか。 互換性ない機能も多いからほとんど無理じゃないかな?
579 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 22:16:46 ID:agcPaJTz] GMで5ボタンマウス等のサイドボタン使う事はできませんか?
580 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 22:59:50 ID:AbV0Ta9O] Help見る限り無理っぽそうだけど もしデバッグでサイドボタン押したときのmouse_buttonの値が0〜3以外だったら その値を割り当てればいいし、キーコンフィグっぽくするなら global.mb_side_one |= mouse_bottun とかすればできそうではあるけど対応していないような気もする
581 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 23:36:54 ID:agcPaJTz] >>580 レスありがとう デバッグでGM5.3とLGMで確認したところ無反応でした
582 名前:577 mailto:sage [2008/12/13(土) 00:38:49 ID:K75p9U8G] >>578 ありがとうございます LGMですね やってみます
583 名前:582 [2008/12/13(土) 14:58:29 ID:K75p9U8G] LGMでGM6.1A用に変換しました www2.uploda.org/uporg1852115.gm6.html PASSは GT このobject3の変数 "near"がおかしいです クリックでobject0を近づけると ちゃんとスクリプトやCreateイベントで定義してあるのに Unknown variable near で エラーになります バグでしょうか?
584 名前:名前は開発中のものです。 mailto:sage [2008/12/13(土) 16:00:12 ID:682sG2h4] 多分ここだろ。 with (ebul){ move_towards_point((near).x,(near).y,2) } with文内の変数は呼び出し元(この場合object3)の変数の意味にならないよ。 ちゃんと other. をつけてやらんと。(詳しくはヘルプ参照) 以下のように修正したらエラーは出なくなったぞ。仕様かどうか分からんが。 move_towards_point((other.near).x,(other.near).y,2) つーか、こんなことでツール側のバグとか疑うなよ・・・。自分のバグじゃないかw
585 名前:583 mailto:sage [2008/12/13(土) 16:21:59 ID:K75p9U8G] >>584 wwww そうでしたね 修正します
586 名前:名前は開発中のものです。 mailto:sage [2008/12/14(日) 22:59:58 ID:VLzMeB5w] >>585 >wwww とか >バグでしょうか? 言い出す前に、テメーの無能を疑えよな
587 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 14:09:14 ID:VQe5+xHL] >>586 には同意としても なんとなく高圧的な人増えたな。嫌味っぽく言ってもなんもならんのに
588 名前:名前は開発中のものです。 mailto:sage [2008/12/15(月) 18:09:05 ID:6p1v9SNR] 質問する側もちょっとは考えろという事でしょう
589 名前:名前は開発中のものです。 mailto:sage [2008/12/16(火) 11:54:03 ID:Pj6nrR98] RPG的なものを作っているのですが、手に入れたアイテムをアイテム欄などで取得順に表示したり カーソルが合わさっているとき使用するとそのアイテムの効果が現れたりするにはどうすればいいのでしょうか。 アイテム自体は全部完成しており、アイテム名のスプライトやシステム上の番号等は割り振ってあります。5.3です
590 名前:名前は開発中のものです。 mailto:sage [2008/12/16(火) 12:21:24 ID:KxWOE/yV] オブジェクト(例えば、主人公のオブジェクトとか)に取得したアイテムを管理する配列を用意して、 取得したアイテム番号を代入していく感じにすればイイのでは? get_item[0] = 取得したアイテム番号 []内は取得するに従い数値を上げていけばよい。 配列の長さを調べる術はないので、自分で管理しないといけない。 もしくは、データ構造で map が使えるなら、それを使ってもよい。 たとえば、キーネームをアイテム名、値に所持数とやると管理しやすい。 ただし、mapはキーネームでソートされてしまうんで、取得順となると工夫しないといけないね。 アイテムメニューのシステムは面倒だが地道にやるしかないのでは。 カーソルの操作処理とかも、いちいちオブジェクトを用意してやらないといけない。 アイテム効果を発動させるには、 メニュー欄に表示されるアイテムオブジェクトに、 使用するときのキー入力イベント(mouseクリックボタン等)を持たせて、 そのイベント内で、 ・アイテム効果発動 ・アイテム消費 の処理を記述していく感じかな。 概念的なことしか書いてないが、参考になれば。
591 名前:名前は開発中のものです。 mailto:sage [2008/12/17(水) 08:18:19 ID:BlN9VESD] アイテムAを取った時にグローバル変数に1をプラスして、アイテムAの変数にグローバル変数+1を代入。 アイテムを使用した時はグローバル変数から1マイナスする。 ってな感じでどうかな?
592 名前:名前は開発中のものです。 mailto:sage [2008/12/18(木) 00:08:00 ID:A6CnLTdh] instance_id[] のインデックス使えないかなと思ったけど これ自体キューになってるんだね。そりゃそうか
593 名前:濱田 [2008/12/18(木) 18:33:59 ID:5x5AGIoL] ゲーム作成ツールGameMaker で商業ソフトを作成、販売することは合法でしょうか? またファイナルファンタジータクティクスのようなクォータビューのSRPGは製作可能でしょうか?
594 名前:名前は開発中のものです。 mailto:sage [2008/12/18(木) 18:49:28 ID:zjRT977K] >>593 課金版なら可能。それと理論上はどんなゲームでも作れる。
595 名前:名前は開発中のものです。 [2008/12/18(木) 19:00:44 ID:AtKHrczp] えーと変数を使用したアクションを実行すると ERROR in .....posution 1:UnKnown variable {変数名} ってでるんですけど原因わかる人いたら教えてください
596 名前:名前は開発中のものです。 mailto:sage [2008/12/18(木) 19:06:15 ID:uRYQk5PQ] >>595 初期値定義してないんじゃね?
597 名前:名前は開発中のものです。 [2008/12/18(木) 20:00:57 ID:AtKHrczp] >>596 ゲーム作り初心者ですみません・・・ 初期値定義ってなんですか?
598 名前:名前は開発中のものです。 [2008/12/18(木) 20:23:37 ID:9UDCWn2j] 変数に最初の値を定義するってこと
599 名前:名前は開発中のものです。 [2008/12/18(木) 20:34:28 ID:AtKHrczp] >>599 ありがとうございます。 何とかできました。
600 名前:名前は開発中のものです。 mailto:sage [2008/12/18(木) 22:15:12 ID:BD5z/Zcu] >>594 非レジスト(Lite)版でも商用利用可だよ。EULA見た限りでは、商用不可のはβ版だけ。 レジストしてないと「GameMakerで作りました」ってロコが出るからカッコ悪いことになるけど。 >>595 その「.....」の中にも割と重要な手がかり(イベント名とか)が含まれてることがあるので 今後はなるべく省略なしで頼む。
601 名前:名前は開発中のものです。 mailto:sage [2008/12/18(木) 23:23:16 ID:gWEUu2RB] 初心者とか変に短文にしようとするから困る ・長文でもいいから情報を小出しにするな ・現在どうなってるのか提示 ・目的を明確に この3つそろそろテンプレに入れた方がいいんじゃないか?
602 名前:名前は開発中のものです。 [2008/12/18(木) 23:35:13 ID:9UDCWn2j] まあ正論だけど もう解決したからいいんじゃない
603 名前:名前は開発中のものです。 mailto:sage [2008/12/19(金) 00:51:49 ID:AK9HTeCg] 何がわからないのかわからないもんさ
604 名前:名前は開発中のものです。 mailto:sage [2008/12/19(金) 01:06:57 ID:QZODxzKf] ゲーム起動時のローディングの時に出せる画像ですが、 あれをアニメ(gif)にしたり複数用意した画像の中からランダムで一枚を表示、などということは可能でしょうか?
605 名前:名前は開発中のものです。 mailto:sage [2008/12/19(金) 11:57:53 ID:OJi6EA5S] www.uploda.org/uporg1866564.txt.html 使えるかどうかわからないけど ポーズのスクリプト書いてみた。 初期値 global.move=0 のあと このスクリプト読めばば動くはず。 カウントや時間を使ってる、またオブジェクトの生成、消去の部分は別途、 if (global.move =0) { 〜〜〜〜〜 } でくくってあげればいいはず。
606 名前:605 mailto:sage [2008/12/19(金) 12:03:25 ID:OJi6EA5S] 書き忘れてたけどスクリプトの読み込みはkeypress時ね
607 名前:名前は開発中のものです。 mailto:sage [2008/12/19(金) 20:40:28 ID:7ZgwG0BV] 消えるのはや! ありがたく貰おうと思ったらもう404…
608 名前:濱田 [2008/12/19(金) 21:11:16 ID:sOxi3S7i] Game Maker 5.3A で作成したゲームをVistaでする事は出来ますか?
609 名前:名前は開発中のものです。 mailto:sage [2008/12/19(金) 21:12:39 ID:7ZgwG0BV] できるよ。
610 名前:名前は開発中のものです。 mailto:sage [2008/12/20(土) 10:28:38 ID:rZvj3mwD] >>607 その1 if (global.move = 0) { global.move = 1; global.pause = instance_count; for(i=0; i<global.pause; i+=1) { array_a[i,1] = instance_id[i].gravity; array_a[i,2] = instance_id[i].gravity_direction; array_a[i,3] = instance_id[i].hspeed; array_a[i,4] = instance_id[i].vspeed; array_a[i,5] = instance_id[i].path_speed; instance_id[i].gravity = 0; instance_id[i].gravity_direction = 0; instance_id[i].hspeed = 0; instance_id[i].vspeed = 0; instance_id[i].path_speed = 0; } for(i=0; i<8; i+=1) { array_b[i,1] = background_hspeed[i]; array_b[i,2] = background_vspeed[i]; background_hspeed[i] = 0; background_vspeed[i] = 0; } }
611 名前:名前は開発中のものです。 mailto:sage [2008/12/20(土) 10:29:35 ID:rZvj3mwD] その2 else { global.move = 0; for(i=0; i<global.pause; i+=1) { instance_id[i].gravity = array_a[i,1]; instance_id[i].gravity_direction = array_a[i,2]; instance_id[i].hspeed = array_a[i,3]; instance_id[i].vspeed = array_a[i,4]; instance_id[i].path_speed = array_a[i,5]; } for(i=0; i<7; i+=1) { background_hspeed[i] = array_b[i,1]; background_vspeed[i] = array_b[i,2]; } } 書ききれないから2つに分けたけどこれだけ
612 名前:名前は開発中のものです。 mailto:sage [2008/12/20(土) 21:00:05 ID:4d+YUfVI] ゲームの遷移状態を管理するオブジェクトに ポーズ状態をループさせるほうがいいと思うんだけどなあ 各インスタンスの変数を一括処理するのは思わぬバグが出るときがあるから できるだけ避けたほうがいいよ 現にアラーム処理が抜けているような
613 名前:名前は開発中のものです。 mailto:sage [2008/12/21(日) 11:14:37 ID:PzRsHlBP] instance_activate...とinstance_deactivate...を使う方法もある。 あと、>>31 にルーム移動を使ったポーズがある。
614 名前:濱田 [2008/12/21(日) 13:39:17 ID:OMCEofD9] GMver7で日本語表示するにはどうすればいいでしょうか? 初めてGMでゲーム作成する者ですがバージョン5,3A. 6. 7 .どれを使えばいいでしょうか?
615 名前:名前は開発中のものです。 mailto:sage [2008/12/21(日) 14:13:03 ID:susUXEb/] あるオブジェクトAにオブジェクトB(いくつもある)が重なった時にEnterを押すと 重なっているBだけが消えるようにしたいのですがどのようにアクションを組めばいいのでしょうか
616 名前:名前は開発中のものです。 mailto:sage [2008/12/21(日) 15:46:08 ID:xad+zz/A] 音ゲーチックな物を作ろうとしているのですが、soundに音楽を入れ再生した場合ズレが生じたりはしないでしょうか。 するとしたらできるだけ軽減する方法はありますか?
617 名前:名前は開発中のものです。 mailto:sage [2008/12/21(日) 16:03:49 ID:J97WFZEv] >>615 アクションの中にIf there is an objectみたいなのがある。 BのEnterキーアクションの中でそれを使って、Aと重なっていたら自分を消せばいい。 >>614 >1の非公式情報サイトへGo っていうか、その質問だとすでに7使うこと前提じゃないの? とりあえずバージョンごとの違いとか、今まで聞いてきたことも このスレ内にちゃんと情報があるのでまずは頭から読んできて。
618 名前:名前は開発中のものです。 mailto:sage [2008/12/22(月) 01:31:06 ID:FUN2QKHC] なんか、大雑把な質問になりますけど、 変数を用意していない状態などで relative用いて変数増やそうとしたり、分母0の割り算とかすると、 エラーメッセージが出て、プレイが中断されますよね? テストプレイ中、エラーメッセージが出ずに、OS巻き込んで フリーズしたり電源落ちたりしてしまうことの原因で 考えられることって何があるでしょうか…。
619 名前:名前は開発中のものです。 mailto:sage [2008/12/22(月) 02:11:18 ID:UfdezWih] OSの種類もGMのバージョンもどんな状況でなるのかも分からず姉妹
620 名前:名前は開発中のものです。 mailto:sage [2008/12/22(月) 13:45:56 ID:VIUd8eyr] OS:windows xp sp2 CPU:pen4 3Ghz Memory:2G GM7 pro 処理落ちなどはなく、いきなりフリーズもしくは電源落ちします。 状況…なんですが、これが分からないんですよ。 1度起きた状況を再度再現しようとしたら、何回やっても全然問題なく動いたりするし。 2Dアクションゲームで、ボス敵が岩を投げるんですが、そのときその岩に対し 主人公キャラがジャンプ斬りをあてた時(その時ボスは防御していました) フリーズしました。 岩は「敵の攻撃」を親オブジェクトに持っていますが、 それまで何百回と出てきた「敵の攻撃」に対して同じ攻撃を当てた時はそのようなことはなかったです。 何らかの変数がオーバーフロウした時、似たようなことになった気もしますが、 そういうコードもなさそうです。 フリーズしてしまう原因として挙げられる要因(例えばオーバーフロウ等)、 どなたかご存知の方おられないでしょうか…。。
621 名前:名前は開発中のものです。 mailto:sage [2008/12/22(月) 21:09:57 ID:Ff2Oxw5o] >>620 その処理の中でオブジェクトの生成・削除・変更などしているとしたら イベントの無限呼び出し(Createイベントの中で同じオブジェクトをCreateするとか) が原因でスタックオーバーフローすることはあり得る。 あるいはコード的な無限ループとか。それで電源落ちるとまでは考えにくいけどね。 何らかのエフェクトを生成しているとしたら、ビデオドライバとの相性かもしれない。
622 名前:620 [2008/12/24(水) 13:52:00 ID:j2sRIJLR] 遅レスすいません。 無限呼び出しもないと思います。 そうですよね、、コード無限ループの場合、ゲームアプリのみが シャットダウンするに留まる程度だったような記憶があります。 未だ解決されていないのですが、起こる確率がかなり 低い様子ではあるので、この問題は一旦置いておくことにします。 ありがとうございました。
623 名前:名前は開発中のものです。 [2008/12/24(水) 19:15:30 ID:Je0ZC97P] 前に変数のエラーを書いたものです。 変数の初期値定義のやり方がわからないんですけど、教えてください。
624 名前:名前は開発中のものです。 mailto:sage [2008/12/24(水) 19:27:04 ID:Xm8ZsJDZ] >>599 は何だったんだ
625 名前:名前は開発中のものです。 mailto:sage [2008/12/25(木) 00:32:19 ID:lTYGyE3i] 非公式情報サイト10回読破して来い
626 名前:名前は開発中のものです。 mailto:sage [2008/12/25(木) 01:47:33 ID:LZR7eQes] 何も置いてない部屋で「そのボールを四つ『A』って書いてある箱に入れといて」なんて言われても困るでしょう。 カラの入れ物を前もって用意しておかなきゃいけない 初期値定義なんて難しく(?)いうと混乱するかもしれないけど、 要は使いたい変数があるなら数値代入とかする前に数値0で変数を用意しておけ、ってこと。 オブジェクト「箱」の変数Aに+2とかしたいんだったら 「箱」のクリエイトイベントかどこかに「変数Aを0として用意」しておかないとAが見当たらないなんてことになってエラーが起きる。
627 名前:名前は開発中のものです。 [2008/12/25(木) 19:40:35 ID:wKjFbyzV] >>624 前は何故かGM5から7に変えたらできるようになったから 解決と思ってました・・ >>626 オブジェクトが作られたときに発生するイベントに変数のアクションで 変数を0にして入れたら 解決しました。 教えてくれて助かりました。 ありがとうございます。
628 名前:名前は開発中のものです。 mailto:sage [2008/12/25(木) 23:16:41 ID:FQPSIRUG] イベントとアクションで書いたものをGMLコードとして見ることはできますか?
629 名前:名前は開発中のものです。 mailto:sage [2008/12/25(木) 23:56:07 ID:lTYGyE3i] ObjectのShow Informationってボタンで見れたような気がする
630 名前:名前は開発中のものです。 [2008/12/26(金) 15:57:01 ID:PhPwcMia] これってコンピューター言語を使って自分でプログラム組めたりするの? それと他のソフトとリンクしたりできる?? そういうのを後々やっていきたいんだけど
631 名前:RMT-WM mailto:rmt_wm@hotmail.co.jp [2008/12/26(金) 16:33:47 ID:K4aSBGcm] <a href="blog.rmt-wm.com ">RMT−WMのブログ</a> ページへようこそ!
632 名前:名前は開発中のものです。 mailto:sage [2008/12/26(金) 19:46:25 ID:KU6Gan+K] >>629 やっぱそれぐらいしかないすか
633 名前:名前は開発中のものです。 mailto:sage [2008/12/26(金) 21:37:08 ID:L5Xtp1pR] >>630 GameMaker だけでは、Windows APIやプログラミング言語用のライブラリを直接使うようなプログラムは無理。 あくまでゲーム製作用ツールだからね。 ほかのソフトというか、ほかの言語(C++とか)で作ったDLLを呼び出すことは可能なので、 自作プログラムや、自作DLLで制御可能な他のソフトとの連携は可能。 なもんで、WindowsAPI とリンクさせることももちろん可能で、 例えばダイアログボックスをつくって、 そこからGameMakerでつくった自作ゲームに制御を加えるなんてことも出来る。 もちろん、Windowsプログラミングの知識がそれなりに必要。 流行の(?) .NET との連携は難しそうだね。
634 名前:名前は開発中のものです。 mailto:sage [2008/12/26(金) 21:38:56 ID:L5Xtp1pR] 追記。DLLを扱える機能は Pro バージョンのみです。
635 名前:名前は開発中のものです。 mailto:sage [2008/12/26(金) 22:56:29 ID:SuoE1taa] MPのようなゲージを作って、MPが10以上の時にボタンを押すと MPを10消費して飛び道具が撃てるという設定を作りました。 その結果、何故か描写されているMPゲージが10以下にならず(もちろん内部も)、打ち放題になってしまう現象が起きました。 これのほかにはMPは以下にならない程度しかMPに関連する変数を弄っていないのですが何がいけないのでしょうか。
636 名前:名前は開発中のものです。 mailto:sage [2008/12/26(金) 23:11:14 ID:SxF5ePcK] >>635 普通そういうのは実際のソース見なけりゃ答えられん。が、もし If MPが10以上なら MPを10減らす 飛び道具を撃つ みたいに組んでるなら If MPが10以上なら ▲<Start of block> MPを10減らす 飛び道具を撃つ ▼<End of block> こう囲め。
637 名前:名前は開発中のものです。 [2008/12/27(土) 00:34:43 ID:zgTmgbXH] スプライトを透過させたい時に透過を選ぶとドット絵に穴があいたような感じになりますが ああではなく後ろの色が映るいわゆる半透明にしたいのですが可能でしょうか
638 名前:名前は開発中のものです。 mailto:sage [2008/12/27(土) 01:12:00 ID:Glw8dwT3] >>637 単純に画像全体を半透明にしたいならどのverでもOK(未レジストでも) スプライトのalphaプロパティを弄れば良い ピクセルごと透明度が異なるような表現(例えば輪郭にアンチエイリアス)がしたいなら ver6以降のレジスト版か、あるいは外部DLLを使えばver6以前のGMでも可能かも ついでに確かver7レジスト版から32bitPNGが扱えたはず
639 名前:名前は開発中のものです。 mailto:sage [2008/12/27(土) 15:43:46 ID:bMiIzurr] アクションゲームを作っています。 フォーラムなどを参考にしてジャンプして地面に着地などはできるようになったのですが、 ジャンプ中やダッシュ中に障害物に当たると(毎回起こるわけではないのですが)コリジョンの設定が悪さをしているのか遥か上空に吹っ飛んだりあらぬところにワープしてしまいます。 障害物は上に乗れるので親を地面と同じにしています。 横移動やジャンプ中の接触(上や横)に対するコリジョンはどう設定すればいいのでしょうか。バージョンは5.3です
640 名前:名前は開発中のものです。 [2008/12/27(土) 19:56:55 ID:zgTmgbXH] >>638 できました、ありがとう ついでにもう一つ質問です キーボードを押しっぱなしの時にアクションを起こしているのですが 特定状況下で「プレイヤーはキーを押しっぱなしだけど内部ではそのキーは押されていない」と言う処理を行いたいのです。 これは可能でしょうか。
641 名前:名前は開発中のものです。 mailto:sage [2008/12/27(土) 21:54:29 ID:mqdpfh1K] >>639 ソース見なきゃわからん
642 名前:名前は開発中のものです。 mailto:sage [2008/12/27(土) 21:58:58 ID:mqdpfh1K] >>640 理解力が無いから俺の想像だけど 例えば変数1の時はAキーを押すとアクションが発生するけど、変数が2の時はAキーを押しても発生しないって事で良いかな? もしそうならキーを押すイベントでIf an exprssion is trueを使えば良いと思う
643 名前:名前は開発中のものです。 [2008/12/28(日) 01:10:46 ID:lQUrTnBK] ついに登場!アクションゲームツクール www.famitsu.com/blog/tkool/2008/09/post_52.html アクションゲーム制作の決定版!Multimedia Fusion2 国内販売推進委員会 www7a.biglobe.ne.jp/~bp-827z/mmf2/ hp.vector.co.jp/authors/VA036419/game.html
644 名前:名前は開発中のものです。 mailto:sage [2008/12/28(日) 05:48:32 ID:1w+FYaO/] なんか使ってるうちにアクションは全部スクリプトで処理になるよね? 管理と編集が楽になるよね?
645 名前:名前は開発中のものです。 mailto:sage [2008/12/28(日) 15:22:43 ID:cZXYtdqt] あえてアイコン方式で記述する意味がないからなあ コードがかけなくても作れるってのを謳い文句にしてるけど 制約の中アイコン記述を覚えてもしょうがないんだよな
646 名前:名前は開発中のものです。 mailto:sage [2008/12/28(日) 17:21:40 ID:LlMEzWDN] ただ、スクリプト記述するよりもアイコンの方が処理が早い罠w
647 名前:名前は開発中のものです。 mailto:sage [2008/12/28(日) 19:00:32 ID:fT956MDj] アクションゲームで左右キーを押すとキャラが左右に動くのですが 坂道などでは段差でカクカクしたりしてしまいます。 なめらかに動かすには当たり判定や動きをどう設定すればいいでしょう。
648 名前:名前は開発中のものです。 mailto:sage [2008/12/28(日) 20:37:31 ID:cZXYtdqt] >>646 Scriptsは呼び出し自体が重いから差が顕著に出るけど piece of code だとほとんど変わらないような気がする >>647 ピクセル単位で当たり判定を取っていたりしないかな 矩形や簡易図形で当たり判定を取るようにすればよくなるんじゃないかと 少し上にもあったけど、当たり判定処理がうまくいかないとかは ○○のエラーがでますというのと違って、プログラムは良くも悪くも書いた通りにしか動かないから 周辺の情報を出さないと条件式を見直せぐらいしか答えようがなくなってくるよ
649 名前:名前は開発中のものです。 mailto:sage [2008/12/28(日) 21:00:33 ID:fT956MDj] 正確な当たり判定を取るとキャラクターの足が動くたびに判定がおかしくなるのでとりあえず大きさに合わせて四角にしています。 足場も同様ですが斜めの床を作る際斜めにすると三角でマスクしても微妙なドットのせいでかくかくしてしまうのです。
650 名前:646 mailto:sage [2008/12/28(日) 23:34:43 ID:LlMEzWDN] >>648 昔、timeGetTime()を呼び出すDLLを作って実験してみたことがあったんだ。 今また試しにやってみたところ、変数の代入なら varアイコンを使うより piece of code の方が早かった。 が、instance_create() の呼び出しは、アイコンの方が早かった。 即効作ったソース。 ttp://www3.uploda.org/uporg1890827.zip.html
651 名前:646 mailto:sage [2008/12/29(月) 00:02:49 ID:gdKazmBS] ああ、忘れてた。 >>650 の受信pass : gamemaker スレ汚しごめんなさい。
652 名前:名前は開発中のものです。 [2008/12/29(月) 01:21:50 ID:PIejyGZB] 床のコリジョンを作っていますが 今の段階だと床に当たった時に起きるアクションと空中にある床に頭から接触したとき、 壁に横から接触したときのアクションが同じになってしまいます。 コリジョンを方向によってわける方法を教えてください
653 名前:名前は開発中のものです。 mailto:sage [2008/12/29(月) 03:11:36 ID:p4VZEUac] vspeed > 0 && y < other.y+18 ってんでどうかな これは上からね
654 名前:645 mailto:sage [2008/12/29(月) 13:44:03 ID:T1r41zQH] >>650 404・・・自分でも確かめられることなのでやってみた repeat loop 20000 回でinstance_create()をGMのcurrent_timeで比較してみた 確かにアイコンの方が早いみたいですね。平均20msぐらい差が出ました 一応環境 XP SP3 Celeron M 1.3 GHz GMのcurrent_timeの精度もあるので相対比較という感じです
655 名前:濱田 [2008/12/29(月) 20:51:48 ID:hLjua+tb] 日本語訳の手に入れ方が分かりません。どうすればいいでしょうか?
656 名前:名前は開発中のものです。 mailto:sage [2008/12/29(月) 21:44:28 ID:quafeWvW] みんな買ってんの? PROだとエフェクト楽しいのかな