【2D】ゲーム作成ツールGameMaker part4【マンセー】
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001名前は開発中のものです。
2009/04/23(木) 08:11:08ID:iAS0afeL●本家(英語)
ttp://www.gamemaker.nl/
●GameMaker Japan - 非公式情報サイト(日本語)
ttp://gamemaker.main.jp/(現在一時閉鎖中)
前スレ
【2D】ゲーム作成ツールGameMaker part3【マンセー】
ttp://pc11.2ch.net/test/read.cgi/gamedev/1210437707/
0843839
2010/06/18(金) 21:45:25ID:zwccdsE4ありがとう
なんかそう言われるとやけに簡単な気がして
ゼロから組み直したらある程度形になりました。
まだ思い通りにはいきませんが…
0844名前は開発中のものです。
2010/06/22(火) 11:01:41ID:Ci7o/Mjt0845名前は開発中のものです。
2010/06/23(水) 01:35:42ID:qd+uDdYgまずcreateしてからsppedとdirectionを設定すればいい
a = instance_create(x, y, object);
a.speed = 速度;
a.direction = 方向;
Createイベントの時点ではまだspeedとdirectionが設定されてないから
厳密に言うとアクションと等価じゃないけどな
0846名前は開発中のものです。
2010/06/23(水) 01:44:03ID:tBjeKmtzたくさん変数を用意しないといけませんね。
0847名前は開発中のものです。
2010/06/23(水) 01:54:04ID:qd+uDdYg一時変数すら使いたくないならwithを使う方法もある
with (instance_create(x, y, object)) { spped=速度; direction=方向; }
同じことをあちこちでやるんだったらスクリプトにすればいい。
0848名前は開発中のものです。
2010/07/01(木) 17:55:32ID:RG53nBFrStep towards a point avoiding objects はGMLでどう表せばよいのでしょうか
http://www1.axfc.net/uploader/Img/so/87434.bmp
0849名前は開発中のものです。
2010/07/01(木) 19:26:31ID:U4SaJhzrレジストしていないなら
mp_potential_settings(maxrot,rotstep,ahead,onspot)
で設定した後
mp_potential_step_object(x,y,stepsize,obj) もしくは mp_potential_step(x,y,stepsize,checkall)
関係ないけど画像でaxfc使われると手間がかかるんだよなあ
0850名前は開発中のものです。
2010/07/01(木) 19:50:38ID:RG53nBFrありがとうございます。
ところで A*ってなんでしょうか
0851名前は開発中のものです。
2010/07/01(木) 20:36:34ID:U4SaJhzrGameMaker でも使えるみたいだけどGMで使ったこと無いから
精度とかコストはどれほどものかわからない
A*そのものについてはググッた方が早いかも
今なら結構解説サイトがあると思う
0852名前は開発中のものです。
2010/07/01(木) 21:52:39ID:RG53nBFrありがとうございます
0853名前は開発中のものです。
2010/07/03(土) 12:24:32ID:xej2WSqRこのようなアプローチは可能でしょうか
0854名前は開発中のものです。
2010/07/03(土) 17:57:32ID:LChSDnyO0855853
2010/07/03(土) 18:31:38ID:xej2WSqRmp_potential_stepとmp_potential_settingsを使うのでしょうか
ルームの広さは大体600×600くらいです
0856名前は開発中のものです。
2010/07/03(土) 20:41:39ID:LChSDnyO例えばTower Defense系のように最短経路を辿らせたいとか
トルネコみたいなローグ系な動きとか
迷路のほうはともかくAIに何をさせたいか分からないと説明に困るぞ
0857名前は開発中のものです。
2010/07/03(土) 21:34:57ID:9sSVyJeo0858名前は開発中のものです。
2010/07/03(土) 21:35:54ID:9sSVyJeo0859853
2010/07/04(日) 09:41:34ID:R47f51enそうですね・・・
Tower Defenceみたいに最短経路を辿らせてみたいのですが
説明忘れてましたorz
0860名前は開発中のものです。
2010/07/04(日) 11:49:06ID:fTuJE3/P迷路の形状が決まった時点で、出口から通路をスコアつきで塗りつぶしていけば
敵はそのスコアが小さくなるようにたどっていけば最短になる
mp_potential_stepとmp_potential_settingsの組み合わせはTDには向いていない
根本的に最短を通るわけではないし
かなりいい加減によけていくのでおそらく狭い通路みたいなところだとうまくないと思う
2Dの見下ろし型のゲームで単純な障害物をよけるような場面が適しているんじゃないかと
0862853
2010/07/04(日) 14:11:38ID:R47f51en>迷路の形状が決まった時点で、出口から通路をスコアつきで塗りつぶしていけば
調べてもなかなかよくわかりませんでした
サンプルとかあると幸いです
0863名前は開発中のものです。
2010/07/04(日) 14:58:54ID:fTuJE3/Pずれているかも知れないけど右のようになるでしょう
あとは数字が少なくなるように移動させるだけ
□□□□ 3456
□■S □ → 2■65
□G ■□ 10■4
□□□□ 2123
GM5は古いしサンプル期待するのは難しいかもしれない
経路探索の名前はともかくアルゴリズムの本を見れば大抵のものには
これ系のものは載っていると思う
0864名前は開発中のものです。
2010/07/04(日) 21:49:22ID:R47f51enヒントを有難う
これを参考に頑張ってみます
0865名前は開発中のものです。
2010/07/13(火) 18:47:11ID:K3o0YDHH自機スプライトの縦と横の長さが違い、回転するのでroomの中に常に収めるコードが
うまく書けません。
正方形のスプライトなら if (x < sprite_width/2) x = sprite_width/2
とかで出来るんですが…(原点=中心)
lengthdirとか使ってもうまくいきません
いい方法ありませんか?
0866名前は開発中のものです。
2010/07/13(火) 19:14:30ID:/NxeAPUS仮にスプライトの縦の方が横より長いとして
自機が縦向きで画面の端にくっついているとしよう。
その状態で自機が回転して横向きになったら、ぐぐーっと端から離れないといけないの?
縦と横の最大値をとって、その分だけ固定で離した方が簡単だし自然じゃない?
ちなみにスプライトの幅÷2をw、高さ÷2をhとおくと一番遠い端までの距離はこうなる。
a = degtorad(image_angle);
b = arctan(h/w);
x = sqrt(sqr(w) + sqr(h)) * max(abs(cos(a + b)), abs(cos(a - b)));
0867名前は開発中のものです。
2010/07/13(火) 19:22:14ID:/NxeAPUS固定で距離をとる場合はこの値にすればいい。
もし角度によって距離を変える場合、縦の距離は上の式のcosをsinに変えれば出る。
0868名前は開発中のものです。
2010/07/13(火) 21:37:38ID:K3o0YDHHありがとうございました
0869名前は開発中のものです。
2010/07/17(土) 12:18:00ID:gER7nrJ5collision_line(x,y,x+hspeed,y+vspeed,壁オブジェクト,1,0)
だとSpeedが10や13ぐらいなら壁をすり抜けずにすむのですが、Speedを60とかにすると
うまいこと行きません。
何かいい方法はないでしょうか?
Gamemakerのバージョンは6、未レジストです
0870名前は開発中のものです。
2010/07/17(土) 20:48:18ID:7i0jj3Bmよくある間違いはcollision_lineの結果をtrueやfalseと比較することだけど
そこは大丈夫か?
0871名前は開発中のものです。
2010/07/18(日) 14:00:31ID:4F6YppA5大丈夫 だと思います
どうやら俺の作り方がまずかったみたい。
Step Event:
execute code:
if(collision_line(x,y,x+hspeed,y+vspeed,kabe,1,0)){sound_play(chakudan);instance_destroy();}
と設定すると着弾処理自体はしっかりと行ってくれるみたいです
ですが、弾道のトレースを行うと壁を貫通しているんです
うp:http://www1.axfc.net/uploader/Sc/so/135056
形式は.gm6です
0872名前は開発中のものです。
2010/07/18(日) 14:07:27ID:XkeNVelGxとyが更新されるのはStepイベントの後、Collisionなどが実行される手前
(ヘルプでEventのところを見ると詳しく書いてある)
・Stepイベントでcollision_lineでチェック→この時点ではまだ貫通してない
・その後、xとyにhspeedとvspeedが足される
・Drawイベントでx,yから直線を描画
1ステップ未来の弾道を見てるから、貫通してるように見えるだけ。
0873名前は開発中のものです。
2010/07/18(日) 15:14:06ID:4F6YppA5なるほど
いろいろと調べながら頑張ります。
ありがとうございます
0874名前は開発中のものです。
2010/07/18(日) 17:51:47ID:XkeNVelGEnd stepイベントでcollision_line(xprevious, yprevious, x, y, ..) でチェックしてもいいけど
(その場合Stepイベントでは駄目)
弾速が速い場合、今度は弾が壁の手前で消えるように見えるという問題が出るはず。
それが気になるようだったら、move_contact_solidを使って着弾点まで移動させればいい。
0875名前は開発中のものです。
2010/07/19(月) 13:12:37ID:bqKfWWqPttp://gmc.yoyogames.com/index.php?showtopic=320670
0876名前は開発中のものです。
2010/07/19(月) 17:01:55ID:PLPwIk6X6だとtrue/falseが返ってくるのか。wikiにもそんなことが書いてあったし
7以降だとちゃんとidが返ってくるのにね
true/falseの返り値だとかなり使いにくいと思う
0877名前は開発中のものです。
2010/07/19(月) 17:23:01ID:WcNhtTfY> All these functions return either the id of one of the instances that collide,
> or they return a negative value when there is no collision.
ここの説明は5から8までずっと変わっていない。
ただ、全体読まずに関数の説明だけ見てtrue/falseだと早とちりする人は多い。
0878名前は開発中のものです。
2010/07/19(月) 17:35:40ID:WcNhtTfYif (A) は if (A > 0)、 if (!A) は if (A <= 0) と同じ意味。
>871のif文が期待どおり動くのはそういう理由。
これを if (collision_line(...) == true) と直接true/falseと比較してしまうと動かなくなる。
0879名前は開発中のものです。
2010/07/19(月) 17:35:54ID:PLPwIk6Xttp://gamemaker.wikicomplete.info/gml:collision-line
ここの説明が間違ってるのか
0880名前は開発中のものです。
2010/07/19(月) 19:06:25ID:WcNhtTfYcollision_pointの方の説明は合ってるのにね
他にも「bbox_*はProでしか使えない」とかところどころ間違ってる
0881873
2010/07/25(日) 20:00:59ID:1/i3AWzXおおお!
俺がPC使っていない間に… みんなありがとう!
>874
move_contact_solidか・・・使ってみたらめり込みが改善されました。
>875
サンプル有難うございます!
これを参考に頑張ります。
>878
そんな仕様があったなんて知らなかった・・・
0882名前は開発中のものです。
2010/08/03(火) 20:30:08ID:cKSw/IY10883名前は開発中のものです。
2010/08/17(火) 09:24:30ID:OKMjBkLc0884名前は開発中のものです。
2010/08/17(火) 13:43:12ID:4/akdMWt0885名前は開発中のものです。
2010/08/17(火) 13:46:28ID:4/akdMWt>>883
禿同。
0886名前は開発中のものです。
2010/08/30(月) 12:44:47ID:4I8KA9ny0887名前は開発中のものです。
2010/09/02(木) 07:47:32ID:GMFPofTi有償でGM(7pro)に本当に詳しい人を募集したら、集まるものだろうか?
自分はプログラムは素人だけど、GMLを2年くらい触ってる。
0888名前は開発中のものです。
2010/09/02(木) 19:43:56ID:DnjUZssB同人ゲームとか?あえてソフトウェアと呼ぶという事はツールとかかな?
0889名前は開発中のものです。
2010/09/02(木) 21:17:32ID:0WLIvYuZ0890名前は開発中のものです。
2010/09/03(金) 10:10:05ID:MNeR9scqそう、同人ゲーム。
興味がある人がいれば連絡用のメアドを晒そうと思うので、
詳しいことはそちらで改めて。
>>889
べ、別にメモリリークとか言ってないんだからね!
0891名前は開発中のものです。
2010/09/07(火) 21:58:20ID:4Oy4y2r6興味ありますなあ、教えてもらう側として
0892名前は開発中のものです。
2010/09/19(日) 22:23:46ID:rmqa1/V50893名前は開発中のものです。
2010/09/20(月) 10:57:08ID:8iAYpL5b0894名前は開発中のものです。
2010/09/25(土) 09:28:35ID:z7hfMkRR0895名前は開発中のものです。
2010/09/25(土) 09:32:38ID:z7hfMkRRしてるのかな? ググっても良くわからなかったが
0896名前は開発中のものです。
2010/10/04(月) 19:27:47ID:1XNZlB77最悪ムービーを連番画像化して音を別に流せば何とかなる気もするけど…
間違いなくずれるなw そしてexe肥大化するし。
0897名前は開発中のものです。
2010/10/04(月) 22:27:13ID:jyzenNLT0898名前は開発中のものです。
2010/10/04(月) 23:47:24ID:nPL36qTA0899名前は開発中のものです。
2010/10/05(火) 07:11:07ID:Ic8INzlSそういうエクステンションならいくらでもあったような
0901名前は開発中のものです。
2010/10/05(火) 15:24:36ID:qGis8gOUパチスロゲーとか作ろうとしても紙芝居じゃどうしても演出が大変だったんだ
GM6を卒業する時が来たらしいな
0902名前は開発中のものです。
2010/10/06(水) 14:56:26ID:Ty8IdKCx0903名前は開発中のものです。
2010/10/08(金) 00:09:20ID:2eH0fymjGamemaker8になってタブインデントができなくて困る
(勝手にスペースになる)んだけど、これって設定しだいで直せます?
0904名前は開発中のものです。
2010/10/12(火) 22:27:48ID:g8GuItbA全部置き直さないと変えれないかな?
0905名前は開発中のものです。
2010/10/13(水) 12:00:34ID:eqtsqMr8GMLとGM7Pro版を使えるものとして話を進める。
インスタンス固有のidは読み取り専用だから変更できない。
with構文を使うとどんなときでもidが小さい順に処理されるからこれでも無理。
そこで、処理したいオブジェクトに優先度を格納する変数aを用意して個別に値を設定し、優先度つきキューに入れる。
その後にキューからaの大きい(小さい)順に取り出しつつ処理すれば、置き直さずに処理の順番を変更できる。
途中で順番を変更したくなったら個別にaを変えてやると良い。
Lite版でも配列を駆使して優先度つきキューを実現できれば、目的の処理はできる。
サンプル作ったから見てみて。GM7で見れる。
http://www1.axfc.net/uploader/Sc/so/162440.zip
分かりにくかったらごめん。
0906名前は開発中のものです。
2010/10/13(水) 22:56:36ID:62J2Pig+なるほど、優先度つきキューですか。
thx
0907名前は開発中のものです。
2010/10/14(木) 23:18:52ID:Kg7PYzOpそのマップ間を切り替えなしでさも繋がってるかのように移動させたいのですが可能でしょうか
以下のような感じです
☆プレイヤー
□○ルーム1、ルーム2
■●視野
□□□□□ □□□□□○○○○○
□■■■□右に2マス移動 □□□■■●○○○○
□■☆■□ → □□□■☆●○○○○
□■■■□ □□□■■●○○○○
□□□□□ □□□□□○○○○○
0908名前は開発中のものです。
2010/10/15(金) 23:48:51ID:uQkrUNOE複数のルームを同時に表示するということはできない。
room transitionを使って、ルームの間をなめらかに切り換えるってことはできるけど。
ルーム自体が大きくても、ビューの外にあるインスタンスを無効化すれば
そのインスタンスは存在しないことになるから、処理を軽くできる。
instance_deactivate_regionのところを調べれば例が出てるよ。
0909名前は開発中のものです。
2010/10/16(土) 00:18:18ID:fyPt5aO4どうすれば出来るのでしょうか
0910名前は開発中のものです。
2010/10/16(土) 01:56:04ID:qwLa8JJSds_listとかのdata structureのことだったら、GM7からはコピー用の関数が用意されてる。
それより前のだったら、片方から一個ずつ読んでもう一方に移し替えていくしかない。
queueとかstackだと、読むことで中身が変わっちゃうからもう一工夫いるけど。
0911名前は開発中のものです。
2010/10/16(土) 02:10:11ID:fyPt5aO4どうにかして(A)ds_listの中身を(B)ds_listにコピー出来ないものかと
0912名前は開発中のものです。
2010/10/16(土) 02:13:27ID:fyPt5aO4> ds_listとかのdata structureのことだったら、GM7からはコピー用の関数が用意されてる。
勉強になります
>片方から一個ずつ読んでもう一方に移し替えていくしかない。
成る程 やってみます。
0913名前は開発中のものです。
2010/10/16(土) 13:03:30ID:fyPt5aO4ds_list_replaceのvalueって変数は使えるの?
ご教示お願いします
0914名前は開発中のものです。
2010/10/16(土) 13:51:36ID:qwLa8JJSds_list_replace(list_a, 1, X) とすると、2番目のBがXに置き換わって
(A, X, C, D, E) となる。最初の要素が0だから、posを1にすると2番目ってことに注意な。
replaceの場合、すでにその場所に要素があることが条件となる。
(上の例だと、posに5以上の値を指定しても何も起こらない)
リストのコピーが目的なら、一度全部消してから追加し直す方が早くて簡単かな。
ds_list_clear(list_b); // 移す先のリストをクリア
for (i = 0; i < ds_list_size(list_a); i += 1) {
ds_list_add(list_b, ds_list_find_value(list_a, i)); // list_aから読んでlist_bに追加
}
0915名前は開発中のものです。
2010/10/16(土) 14:19:51ID:HIul/WZm有難うございます!
これを参考にして頑張ってみます。
0916名前は開発中のものです。
2010/10/16(土) 17:47:48ID:bpF4uBuxありがとうございます
これは便利ですね
0917名前は開発中のものです。
2010/10/17(日) 00:55:19ID:XKA4smCP面倒な方法でしたらいくつか浮かぶのですが当たり判定が四角形などの単純な形ではないので
マスク画像を2つ用意する程度の事で出来ないでしょうか
0918名前は開発中のものです。
2010/10/17(日) 02:04:55ID:5q2d82Js一時的にマスクを取り換えて判定するというのはどうか
mask_index = 別のマスク;
inst = instance_place(x, y, object_a);
if (inst) {
// 衝突した時の処理(接触したインスタンスのidはinstに入っている)
}
判定が終わったらmask_indexは元に戻しておく。(初期値は-1)
この方法だと複数のインスタンスが接触していても
そのうちの一つに対してしか処理できない。
複数処理したい場合は、with文で立場を入れ替えて判定してやればいい。
mask_index = 別のマスク;
with (object_a) { // object_aの全インスタンスをループ
if (place_meeting(x, y, other)) {
// 衝突した時の処理
// withの中では衝突したインスタンスがself、
// 元のインスタンスがotherと立場が逆になっているのに注意
}
}
0919名前は開発中のものです。
2010/10/24(日) 12:44:44ID:MEs8hqg2例えば簡単なとこで読み込みダイアログを表示させたりD&Dさせて読み込んだファイルのパスを取得、パス指定で他のフォルダに移動とかコピーとか削除とか
0920名前は開発中のものです。
2010/10/24(日) 14:01:38ID:W+p1cV2K「読み込みダイアログを表示」「パス指定で他のフォルダにコピー・ファイルの削除」は対応する関数があるから簡単にできる
「パス指定で他のフォルダに移動」も、文字列をいろいろと処理すればそれっぽいことはできるかも
D&Dの処理については、画面にファイルを持っていっても禁止マークが出るから無理
「読み込んだファイルのパスを取得」はできるけど
>>3の一番下にヘルプファイルの和訳があるからそれ見ながら考えると良いよ
0921名前は開発中のものです。
2010/10/24(日) 20:22:32ID:MEs8hqg2ありがとうございます。試してみます
D&Dは例として挙げただけで使えなくても特に問題はなさそうですので大丈夫です
0922名前は開発中のものです。
2010/10/24(日) 23:53:15ID:W+p1cV2K具体的には、スクリプトの引数の個数と引数の内容を求めるやつ
よこしまさんのmbtextで使ってたis_realだけでは上手くいかなかったのでなんとかして作ってみた
argvのほうはargumentがあるから無駄かもしれないけどね
良かったら使ってみてくれ
ttp://www1.axfc.net/uploader/File/so/53160.zip
0923名前は開発中のものです。
2010/10/27(水) 06:41:36ID:uNw6oYwm0924名前は開発中のものです。
2010/10/27(水) 21:35:48ID:8+r9IUjA審査ないんだしさ
0925名前は開発中のものです。
2010/10/28(木) 08:10:36ID:jZmlZYGSその手があったか!
今度やってみます
0926名前は開発中のものです。
2010/10/28(木) 08:12:09ID:jZmlZYGS今でもGameMaker5.3Aってレジストは可能なの?
0927名前は開発中のものです。
2010/10/28(木) 08:32:54ID:NfsN57sP>>3の一番上(英語)に書いてある
GM8以外はもうレジストできないらしい
0928名前は開発中のものです。
2010/10/28(木) 08:50:06ID:jZmlZYGS> GM8以外はもうレジストできないらしい
/(^o^)\ナンテコッタイ
0929名前は開発中のものです。
2010/10/28(木) 10:32:49ID:jZmlZYGS0930名前は開発中のものです。
2010/10/28(木) 11:00:27ID:NfsN57sPGM7の頃からキーの互換性がなくなったと聞いたぞ
0931名前は開発中のものです。
2010/10/28(木) 12:29:45ID:jZmlZYGSまじかよ 残念だ
0932名前は開発中のものです。
2010/10/28(木) 18:56:03ID:DIDVJOicそもそもGM8なんていつの間に出てたんだ
GM6から移ったら何もかもがわからなくて憤死しそう
0933名前は開発中のものです。
2010/10/31(日) 22:12:21ID:U3BNtydC早すぎて中間を飛び越して移動してるようで、その中間に他のオブジェクトがあっても判定を受け付けてくれません
"←"移動オブジェクト "★"他オブジェクト "□"隙間
←□□□←□★□←□□□←□□□←□□□←□□□←
このような感じです
視覚的に飛び飛びでも構わないのですが内部処理的に隙間なく素早く移動させるにはどうすれば良いでしょうか?
よろしくお願いします
0934名前は開発中のものです。
2010/10/31(日) 22:16:19ID:ib0tadlb0935名前は開発中のものです。
2010/10/31(日) 23:47:49ID:/MNbm6V05→6で大きく変わったけど、6→7→8は基本的に上位互換だから
そんなに使い勝手は違わないはず
>>933
簡単にやるならcollision_lineで判定すればいい
オブジェクトの大きさを考慮に入れるなら、move_contact系で
何かにぶつかる手前まで動かしてから、place_meetingで進行方向を見るとか
>869あたりからの流れが参考になるかも
0936933
2010/11/01(月) 18:15:47ID:Eo37ucriありがとうございます。collision_lineを試してみたところそれっぽい物が出来ました。
現行のスレも確認せず申し訳ありませんでした
0937名前は開発中のものです。
2010/11/03(水) 10:44:19ID:UHbBxQ2c0938名前は開発中のものです。
2010/11/04(木) 18:50:30ID:6g0yzTmO回転後の正面のちょっと前の座標に弾を生成したとして弾オブジェクトの方にも回転後の角度に応じた方向に飛んで貰わなくてはならなく、
どうしてよい物やらわかりません。アドバイスよろしくお願いします。
0939名前は開発中のものです。
2010/11/05(金) 17:07:47ID:BtGAmMc50940名前は開発中のものです。
2010/11/05(金) 20:57:52ID:nJmyU6QP0941名前は開発中のものです。
2010/11/05(金) 23:34:00ID:BtGAmMc5自レスですが、問い合わせたらすぐにDLのリンク送ってきてくださいました。
やっぱりCDのリソースも付いてるみたいです。
0942名前は開発中のものです。
2010/11/07(日) 00:05:07ID:kYUiTMH6的外れだったらゴメンナサイですが、GameMaker7のExampleフォルダの『space cleaner』を参考にするのじゃイカンの?
レス数が900を超えています。1000を超えると表示できなくなるよ。