トップページgamedev
996コメント482KB

【2D】ゲーム作成ツールGameMaker part3【マンセー】

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2008/05/11(日) 01:41:47ID: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【マンセー】
http://pc8.2ch.net/test/read.cgi/gamedev/1087068523/
0017名前は開発中のものです。2008/05/12(月) 00:15:38ID:Nz3aygB6
おわ、リロードすればヨカタ.... orzorz
0018名前は開発中のものです。2008/05/12(月) 01:16:43ID:ikz1QGUi
>>15 >>16
返答ありがとうございます。
おお、出来ました
お二人ともありがとうございました。
ではまたいじってきます^^
0019名前は開発中のものです。2008/05/12(月) 01:30:34ID:RmZAj2l+
プリミティブでテクスチャを綺麗に台形に表示するってのはできないのかね……

三角形単位だとやっぱ辛いか
0020名前は開発中のものです。2008/05/12(月) 02:07:25ID:TpSXp6LY
>>19
三角形単位だと歪むね・・・。
64x64で、上辺32、下辺64、高さ64の等脚台形で、力技でこんなのやってみた。
比較的ゆがまないが、多数表示するのには向いていないだろうね

draw_primitive_begin_texture(pr_linelist,texid);
for (i=0;i<64;i+=1) {
draw_vertex_texture(16-i*16/63,i,0,i/63);
draw_vertex_texture(47+i*16/63,i,1,i/63);
}
draw_primitive_end();
0021名前は開発中のものです。2008/05/12(月) 02:38:35ID:ikz1QGUi
>>16さんの文章を応用して、弾もマウスの方向によって変えたいのですが、
どう書き換えたらいいでしょうか。。書き換えていただけませんか?
0022名前は開発中のものです。2008/05/12(月) 02:41:29ID:ikz1QGUi
あ、あとしっかりとマウスの方向に向かって回るようにしたら中心を動かすことになったので
動かしたのですが、そしたら弾の出る場所がおかしくなりました。。
どうしたら前のように銃口の座標から撃てるでしょうか
0023名前は開発中のものです。2008/05/12(月) 03:03:27ID:4cPaCS6e
>>ID:ikz1QGUi
いいかげんにしろ。
「書き換えていただけませんか?」とか、失礼すぎ。人をツールのように扱うなよ。
あと、基本的なことが理解できてないようだから、
>>1の非公式サイトを読みながら、最低一ヶ月試行錯誤しろ。
今までの質問を解決する材料は、全て書いてあるし。
0024名前は開発中のものです。2008/05/12(月) 09:26:48ID:RmZAj2l+
>>20
やっぱり簡単にはいかないのかな

弾幕シューティングの背景にするには軽くないといけないし……

四角面を張れれば簡単なんだけどなぁ

もうちょっと研究してきますです
0025名前は開発中のものです。2008/05/12(月) 15:43:35ID:ikz1QGUi
>>23
すみません。。。以後頑張ってきます。。
0026名前は開発中のものです。2008/05/12(月) 20:15:49ID:3BNN/6ib
>>25
こいつアホだろ
0027名前は開発中のものです。2008/05/12(月) 20:18:50ID:5kQyHDOM
>>26
・・・何いってんの?
0028名前は開発中のものです。2008/05/12(月) 20:57:52ID:IGlYgd9c
こんな過疎板って、無闇な批判が飛んでくるとは
GMもそれなりに知名度を上げてきたって事かねぇ、TonyuやZGE出し抜いてよくまぁ…
0029名前は開発中のものです。2008/05/13(火) 00:13:26ID:jNkfDGaf
すいません、空気を読まずに質問させてください。

特定のボタンを押すと、前オブジェクトの動作が止まって
メニューが表示され、メニュー画面操作のみ受け付けるような
動作をさせたいと考えているのですが
いまいち、簡単な方法が思いつきません。

何か良い方法はありませんでしょうか?
0030名前は開発中のものです。2008/05/13(火) 00:14:04ID:jNkfDGaf
>>29
「前」じゃなくて「全」の間違いでした…
0031名前は開発中のものです。2008/05/13(火) 10:25:49ID:yM+gChpv
>>29
ポーズメニューみたいな感じなのかな。

それなら私が良く使う方法を一つ。


元のルーム(ゲーム部分)のルーム設定を「持続する」にしておいて、背景色を描画してないルーム(ポーズ部分)に移動する。

再描画されないのでメニューの後ろにだけウィンドウか何かを描画しておかないといけないけど。

元のルームに戻ればそのまま動作するのでそれっぽく見えるはず。

わかりにくくてゴメン。
0032名前は開発中のものです。2008/05/14(水) 01:04:12ID:+oaQcg1C
direction = floor(point_direction(x,y,mouse_x,mouse_y)+22.5);
if (direction>=0 && direction <45) { //右向き
sprite_index = spr_k001_xx;
} else if (direction>=45 && direction <90) { //右上
sprite_index = spr_k001_xx;
} else if (direction>=90 && direction <135) { //上
sprite_index = spr_k001_xx;
} else if (direction>=135 && direction <180) { //左上
sprite_index = spr_k001_xx;
} else if (direction>=180 && direction <225) { //左
sprite_index = spr_k001_xx;
} else if (direction>=225 && direction <270) { //左下
sprite_index = spr_k001_xx;
} else if (direction>=270 && direction <315) { //下
sprite_index = spr_k001_xx;
} else if (direction>=315 && direction <360) { //右下
sprite_index = spr_k001_xx;
}

前に教わったこの文章を応用して、プレイヤーキャラクターを追うキャラが、
プレイヤーキャラクターのいる角度によって画像を変えたいのですが、どこをどう返ればいいでしょうか。
あと、前は何度も何度も質問してすみませんでした。挙げ句の果てに、書き換えて欲しいなどと。。
以後頑張りますは以後自分で頑張りますの間違いです。
色々すみません。。
0033名前は開発中のものです。2008/05/14(水) 02:17:22ID:0kVdrtr1
「マウス」が「プレイヤー」になっただけだろ。
どこがそれに当たる場所なのか、それぞれの文が何をしているのか分かってる?
自分で原理を理解しないと、何から何まで人に作ってもらうことになるよ。
0034名前は開発中のものです。2008/05/14(水) 07:44:37ID:+PP6HbGL
>>31
なるほどぉ、そんな方法が。。。
ありがとうございます。
0035名前は開発中のものです。2008/05/14(水) 09:38:29ID:+oaQcg1C
>>33
floor(point_direction(x,y,mouse_x,mouse_y)+22.5);
ここだと自分は思ってます。
ただ、どう文章をおけばいいのかわからなくて。。
0036名前は開発中のものです。2008/05/14(水) 10:10:14ID:+oaQcg1C
direction = obj_k001_01;
if (direction>=0 && direction <45) { //右向き
sprite_index = spr_k002_07;
} else if (direction>=45 && direction <90) { //右上
sprite_index = spr_k002_06;
} else if (direction>=90 && direction <135) { //上
sprite_index = spr_k002_05;
} else if (direction>=135 && direction <180) { //左上
sprite_index = spr_k002_04;
} else if (direction>=180 && direction <225) { //左
sprite_index = spr_k002_03;
} else if (direction>=225 && direction <270) { //左下
sprite_index = spr_k002_02;
} else if (direction>=270 && direction <315) { //下
sprite_index = spr_k002_01;
} else if (direction>=315 && direction <360) { //右下
sprite_index = spr_k002_08;
}

これで一応できました。
ありがとうございました
0037名前は開発中のものです。2008/05/14(水) 15:15:31ID:jcqbfyhB
direction : インスタンスの方向をあらわすローカル変数 0〜360に丸められる。
floor(x) : x を超えない最大の整数を返す。 例 : floor(3.5) だったら3 floor(-2.5) だったら-3
point_direction(x1,y1,x2,y2) : 座標(x1,y1)から座標(x2,y2)を見たときの角度。 例 : point_direction(0,0,1,-1) だったら 45

floor(point_direction(x,y,mouse_x,mouse_y)+22.5)
っていうのは、floor() の中に point_direction(x,y,mouse_x,mouse_y)+22.5 っていうの入っている。
さらに、point_direction(x,y,mouse_x,mouse_y)+22.5 で角度を表しているということになる。
つまり、インスタンスのいる位置(x,y)から、マウスの座標(mouse_x, mouse_y)を見たときの角度を求めていて、 それに22.5度を加えている。
で、その角度を floor()によって整数にしているわけ。なぜ22.5を足すのかは、22.5を消して試してみればわかる。多少感覚とズレるはずだ。
どうしてズレるのかは自分で考えろよ?わからなければ、数学の勉強をしろ。
で、下に続くif文は全て、 directionの値で場合分けして、表示するスプライトを指定してるものが書かれているだけ。

>>36でやってる一行目の
direction = obj_k001_01;
っていうのは、そのインスタンスの direction を obj_k001_01 と同じにするっていう意味になってるの。
それで解決したなら別にいいんだけど、俺にはぜんぜんトンチンカンに見えるのだが。

お願いだから>>1の非公式情報サイトを読んできてくれ。サイト内の「検索」で全てでてくる。
今書いたことも。ドキュメントのところを探せ。
0038名前は開発中のものです。2008/05/14(水) 17:56:24ID:+oaQcg1C
>>37
色々とすみません。。
ある程度ましになるまで見てきます。
0039372008/05/14(水) 19:29:18ID:koT5HTYt
すまん、訂正させてくれ…
>>37 で「direction を obj_k001_01 と同じにする」
とか書いてるけど、間違ってるな。
obj_k001_01 のdirectionと同じな値になるとか勘違いしてた…。 obj_k001_01.direction と書けば、そういう意味になるが。

正確に言うと、obj_k001_01 っていうのはオブジェクト名なんだろうが、
これはある数値の定数になっている。(そのオブジェクトをリソースに追加したときに決まる)
この数値がそのまま direction に代入されているので、direction の値はそのまま固定値になってしまっている。
0040名前は開発中のものです。2008/05/16(金) 01:14:43ID:a1mpKMyg
レジストしたいと考えてるんですが、簡単な方法ってないものでしょうか?
0041名前は開発中のものです。2008/05/16(金) 22:37:09ID:mTen8rcq
金払う
0042名前は開発中のものです。2008/05/17(土) 11:05:14ID:iuDmkXQZ
過去スレにそれっぽいのなかったっけ?
0043名前は開発中のものです。2008/05/17(土) 13:11:22ID:4t7O5zMm
http://www.ice.ci.ritsumei.ac.jp/~ruck/CLASSES/SOUSEI1/gmaker_japan.htm
ここのChapter14 ゲーム配布に売ってもかまわないと書いてあるが、これ本当?
0044名前は開発中のものです。2008/05/17(土) 13:25:09ID:iuDmkXQZ
>>43
ライセンス読む限りでは制作したゲームは使用素材の規定を守っている限り、配布方法の制限は一切ないみたい。

プロジェクトファイルは販売してはいけないみたいなこと書いてあるけど、exeで出力したファイルならいいと思うよ。

0045名前は開発中のものです。2008/05/17(土) 13:30:23ID:4t7O5zMm
>>44
なるほど。調べてくれてありがとう。
0046名前は開発中のものです。2008/05/17(土) 16:19:00ID:mUIUdkzk
特定のタイミングのみ、特定のOBJだけ壁に対するsolid判定を
しないようにしたいんですが、方法はないでしょうか?

壁自身のsolid属性を変えると、他のOBJが落っこちてしまうし・・・
どうすればいいでしょうか?

0047名前は開発中のものです。2008/05/17(土) 20:20:00ID:iuDmkXQZ
>>46
特定のタイミングでだけ別のオブジェクトに変更するとか……

駄目だこれくらいしか浮かばないにゃー
0048名前は開発中のものです。2008/05/17(土) 20:37:37ID:WkeQkIH/
solidOBJのほうでナントカするのではなく、特定のOBJのほうで対処するべきだろうね。
キーイベントやステップイベントでsolidオブジェクトに対する処理をしているなら、
無効にしたいときのフラグをたてて、条件分岐で処理を振り分ければいいと思う。

衝突イベントのところを変えたいとなると、ちょっと難しいかな。
solidオブジェクトとの衝突イベントでは、双方のインスタンスがそのステップで移動していたとしても、
インスタンスの位置がステップ開始時の座標(xprevious, yprevious)に自動で戻されてしまうから。
壁を無効にしたいときには、衝突イベント内で移動し直さないといけないことになる。

・・・いろいろ書いたあとにリロードしなおした。>>47のほうがスマートにできるかもね・・・。まあ、参考になればorz
0049名前は開発中のものです。2008/05/17(土) 22:25:09ID:mUIUdkzk
>>47、48
レスありがとうございます。
「Stepイベント」とかではなく、「衝突イベント」を作って動作させています。

ということは、やるべき事はSolid云々を考えるのではなく
「Stepイベント」内で「衝突イベント」と同じことをさせないといけないということですね…
いろいろ試してはみたんですが、Stepイベント内で条件指定すると
「衝突イベント」のようにうまくいかず、めり込んでしまいます・・・
多分、条件指定の方法がいけないんだと思います…

「Stepイベント」内で「衝突イベント」とまったく同じ動作をさせる条件ってありますでしょうか?
0050482008/05/18(日) 02:22:11ID:eCUFmfOE
>>49
>「Stepイベント」内で「衝突イベント」とまったく同じ動作をさせる条件ってありますでしょうか?
instance_place(x,y,obj)
っていう関数が一番近いかな・・・。
この関数を実行しているインスタンスが(x,y)に置かれたとき、objと重なっている状態なら真を返す関数だよ。
これをif文の条件に使うといいかもしれない。

えっと質問とは別に、さっき考えた自分ならこうするかもっていう方法も書いておくよ。
solidの衝突イベントでは、>>48で書かれているとおり
>インスタンスの位置がステップ開始時の座標(xprevious, yprevious)に自動で戻されてしまう
っていうのがあるんだけど、これを逆手にとって、
壁をすり抜けさせたい場合のみに、すり抜けさせるオブジェクトの通常ステップイベントの最後で、
xprevious = x;
yprevious = y;
とする。
そして、衝突イベントのところで、通常とすり抜けの条件分岐させて、
すり抜けのときは何もしないようにする。

この方法が汎用的かどうか不明だから、わからなかったら聞き流して。
0051462008/05/19(月) 06:37:21ID:lUKR9rqp
>>50
なるほど!
衝突イベントについて、分かってきた感じです。

いろいろと試してみようかと思います。
ありがとうございました。
0052名前は開発中のものです。2008/05/20(火) 00:44:21ID:34XojH21
Share it代行やってなかった…
他にレジスト購入代行してくれるところってありませんかねぇ?

海外サイトのクレジット決済、日本のと違って、どこにどう入れればいいのかサッパリっすorz
0053名前は開発中のものです。2008/05/20(火) 03:24:54ID:D4oicTQ3
つPaypal
0054名前は開発中のものです。2008/05/20(火) 09:13:24ID:3IvwgtXZ
シューティング作ってる人でリプレイ機能作ってる人いる?


とちょっと聞いてみる。
0055名前は開発中のものです。2008/05/20(火) 12:28:50ID:D4oicTQ3
俺も便乗して質問。

みんな背景はどうしてるんだ?
バース効かせた640×480のとか、どれくらいの規格が主流なのか参考の為に教えてもらえるとありがたい。
特にアクションゲームの分野で…
0056名前は開発中のものです。2008/05/20(火) 14:45:32ID:3IvwgtXZ
>>55
私はどのゲームでも基本的に各編が128か256か512とかになるようにしてる。

あまりメモリ潰さなきゃ好きなサイズでいいと思うけど……
0057562008/05/20(火) 14:47:41ID:3IvwgtXZ
間違えた
各編→各辺
0058名前は開発中のものです。2008/05/21(水) 07:20:16ID:tP4UvCEO
>>54大雑把でわるいが、
・ステップごとに十字キー(レバー)と各ボタンの入力をチェックしてファイルに書き出すオブジェ作成。
・リプレイモードで保存したファイルから記録したデータをプレーヤーキャラにコントロールデータとして送るオブジェを作成。
 (書き出すオブジェと統合でもいいと思うけど煩雑になるかもしれないので分けたほうがいい)
・プレーヤーキャラオブジェは「通常プレーモード時では、コントローラー入力で作動する」「リプレイモード時では、もらったコントロールデータで作動する」を
 切り替える仕組みを作ってやればいい。
要は「不定なのはプレーヤーの入力のみとし、それを記録する」こと
リプレイ実装を考えてるゲームに、ゲーム側で不定要素を抱えている時はそれを不定でなくすようにする。例えば
@ランダム要素、random()関数や「With a change perform next」アクションを使っているオブジェがあって、
それがゲーム進行を左右しているなら「乱数の種」付きランダム関数にし、リプレイモード開始時「乱数の種」をリセットすればランダムも使用可能となる
「乱数の種」付きランダム関数はhogehige氏が作ってくれています。(この場を借りて感謝)>>4のリンク先、上から二つ目
A当然ながらポーズキーを実装している場合は書き出すオブジェの書き出しも停止してやらなくてはならない。まぁポーズに限らず
ROOMの移動とかもあるので「記録停止」「記録開始」も必要になってくるし、リプレイモードもそのタイミングで「コントロールデータ送出停止」とかも必要になってくる

と・・・まぁこんな感じかな・・・ほんとに大雑把なので回答になってないかもしれないが、これぐらいでかんべんしてください。
 
0059名前は開発中のものです。2008/05/21(水) 09:28:39ID:wqIERWKF
>>58
わざわざ調べて返答してくれたのなら申し訳ない(^^;
単純にリプレイ機能作ってる人ってどのくらい居るのかな〜ってのを知りたかっただけだったのだが……

でも自作の今のリプレイ機能よりすっきりまとまる感じがするのでちょっとシステム洗練してきますです

現時点ではなぜか一面でだけ絶対ずれるし……

0060名前は開発中のものです。2008/05/21(水) 11:47:10ID:khQhl2Eo
自分もレジスト考えてるのですが、
>>53のPaypalってのは何ですか?
コンビニとかに払ってくるような物?
0061名前は開発中のものです。2008/05/21(水) 21:25:07ID:j5bhpnBL
文章的に分かりにくいかもですが

上からは乗れて、下からジャンプすると貫通して通れるような足場を作りたいのですが
何か良いアイディアはありませんでしょうか?
0062名前は開発中のものです。2008/05/22(木) 07:57:22ID:dVs71+g+
>>61
やっぱり文章的にアレだったので訂正・・・

足場OBJを作るとして
プレイヤーが足場OBJに上から衝突した場合は、Solid属性みたいに乗る事が出来
ジャンプ等で下の方から足場OBJに衝突した場合は、すり抜けて通れるように
したいと考えております。

instance_place(x,y,obj)を条件に、Gravityを0にする動作をさせてみても
すり抜けてしまうし、なかなか難しいものです。

ご教授いただきたく、お願いしますm(__)mペコ
0063名前は開発中のものです。2008/05/22(木) 17:46:59ID:QlDRy8fj
>>62
実際に試してないのでどうかわからないがこんな感じのを考えてみた。

プレイヤー側の床とのコリジョンイベントで、
床に対し、自分が完全に乗る高さ以上に居る&vspeedが0以上なら、
vspeedと重力を0にし、自分の高さを床に乗るように合わせる。


かなりわかりにくくて申し訳ない……


0064名前は開発中のものです。2008/05/22(木) 20:36:05ID:dVs71+g+
>>63
なるほど。vspeedですね。

試してみたんですが
>>自分の高さを床に乗るように合わせる。
これをやらないと衝突判定があっても、沼に沈むように下降する現象が発生
                  (↑原因不明・・・なんでだろう)

vspeedだけじゃ駄目なんですね。
位置を合わせるって部分はまだ微調整が必要ですが
おかげで、実現に近づける事ができました
ありがとうございました。
0065名前は開発中のものです。2008/05/22(木) 21:17:29ID:QlDRy8fj
>>64
位置を合わせないと沈んでいくのはvspeedが0になったあと1フレーム分下に加速度がかかっているからで。

まあ、お節介かも知れないけど補足(^^;
0066名前は開発中のものです。2008/05/22(木) 21:36:47ID:A9Tj0djs
前のスレあたりで
ポーズの作り方で
ゲーム上のインスタンスを動かなくさせる(反応しなくさせる)
っていうのがあった気がするんですけど
誰か詳しく覚えてませんか?
0067名前は開発中のものです。2008/05/22(木) 21:39:49ID:F+pyFRDi
Show informationでポーズは満足してる俺は明らかにやる気が無い
0068名前は開発中のものです。2008/05/22(木) 21:45:49ID:QlDRy8fj
全ての該当オブジェクトを非アクティブにするってのだったっけ?
0069名前は開発中のものです。2008/05/22(木) 21:50:14ID:bh5bHg1Z
ダウンロードとかは不要っで作ったゲームをホームページ上で起動させる方法はありますか?
日本語がおかしくてすみません。。
0070名前は開発中のものです。2008/05/22(木) 21:54:35ID:QlDRy8fj
>>69
残念ながらできません。
ブラウザで遊べるゲームが作りたいのならFLASHかJavaで作りましょう
0071名前は開発中のものです。2008/05/22(木) 21:59:29ID:bh5bHg1Z
>>70
そうですか、わかりました。
ありがとうございました。
0072名前は開発中のものです。2008/05/23(金) 00:31:35ID:IwtfC0JS
日本語描画スクリプトで変数の現在の数値を表示したいんですけど

{
n=0;
mbtext_setfont(spr_zen20,spr_han20,20);
mbtext_draw("n",x,y,0,0,0)
}

これだと0ではなく、nが表示されて困っています
どうすればnではなく代入されている数値が表示できるのでしょうか?
0073名前は開発中のものです。2008/05/23(金) 01:03:30ID:9mBFsqkn
>>72
""で囲むとそれは文字列として扱われてしまう。

しかしnとだけ指定しても内容が文字列ではなく数値なので、文字列にしてやる必要がある。

"n"をstring(n)に書き換えればオーケー。

0074名前は開発中のものです。2008/05/23(金) 01:49:02ID:IwtfC0JS
>>73
なるほど!
助かりました、ありがとうございます
0075名前は開発中のものです。2008/05/23(金) 02:01:25ID:smnTR4WN
飛び道具にオーラをつけるような表現をしたいんですが
表現の方法がサッパリ分からない状態です。
何か良い方法は無いものでしょうか…?

※以下の動画で使われてる飛び道具のような表現です
ttp://www.nicovideo.jp/watch/sm2021499

>>ニコ動嫌いな人
URL出してしまい、すいません…
0076名前は開発中のものです。2008/05/23(金) 03:26:40ID:d1WY1tem
>>75
cの攻撃みたいなやつ?
0077名前は開発中のものです。2008/05/23(金) 05:21:17ID:6Q5daQ7y
質問です。

execute_program(prog,arg,wait)
execute_shell(prog,arg)
この二つはexeファイルも起動させることができる。
argumentを一つ使うこともできる。ここまではわかりました。

GMで作ったゲームにargumentを使って実行させることはできますか?
言い直すと、「GMで作ったゲーム1」がexecute_programで「GMで作ったゲーム2」を起動させたとき、
ゲーム2は、execute_programのargumentを参照することができますか?
0078名前は開発中のものです。2008/05/23(金) 07:15:28ID:OhG93FRY
>>77
parameter_count()
 起動時パラメータ(コマンドライン引数)の数を取得する。パラメータなしで0となる。
parameter_str(n)
 n番目の起動時パラメータ(コマンドライン引数)の文字列を取得する。0番目はexe本体のフルパス名となる。

この二つの関数が使えそうだね。
たとえば、ゲーム1から
 execute_program("ゲーム2.exe", "arg1 arg2 arg3", 0);
を実行すると、
ゲーム2において、
 parameter_count() ← 3を返す
 parameter_str(1)  ← 文字列"arg1"を返す
ってなるんじゃないかな。
0079名前は開発中のものです。2008/05/23(金) 07:20:51ID:smnTR4WN
>>76
cの攻撃みたいなやつのことです
0080名前は開発中のものです。2008/05/23(金) 10:22:58ID:6Q5daQ7y
>>78
parameterを使ってみたら見事にできました。
ありがとうございました。
0081名前は開発中のものです。2008/05/23(金) 11:06:03ID:9mBFsqkn
>>79
飛び道具から丸くて小さくなっていくスプライトのオブジェクトを置き続ければいいんじゃないか?

レジスト版なら加算合成とか使えて綺麗になるが、通常版だとちとイマイチかもしれないが……
0082名前は開発中のものです。2008/05/23(金) 14:43:02ID:EGcliZhu
http://www.ice.ci.ritsumei.ac.jp/~ruck/CLASSES/SOUSEI1/gmaker_japan.htm
ここの37にマルチプレイヤーゲームが出来ると書いてありますが、
書いてあることが凄すぎてよくわかりません。。
誰か上手く教えていただけませんか?
0083名前は開発中のものです。2008/05/23(金) 15:56:41ID:9mBFsqkn
>>82
要はネット対戦機能とかを作れるって事だけど、マニュアルに書いてある事を理解できる位のネットワークに関する知識がないと辛いんじゃないかな……


出来たら面白そうだなとは思うけどね

0084名前は開発中のものです。2008/05/23(金) 18:31:26ID:EGcliZhu
>>83
わかりました
0085名前は開発中のものです。2008/05/26(月) 21:09:52ID:K7Gb+EE1
マリオのような感じのゲームを作りたいのですが、
横に移動して、ジャンプも出来て、重力をつけたら画面外まで落ちていきました。
何かオブジェクトに乗っかるにはどうすればいいですか?
0086名前は開発中のものです。2008/05/27(火) 01:16:07ID:il/v0kgX
>>85

1、衝突検知→wallに衝突した場合、衝突フラグをオン
           
             //↓四角範囲指定でキャラの足元の座標を指定
if collision_rectangle(x+10,y+55,x+30,y+60,wall,true,false){wall_flag = 1}
                     //↑「wall」っていう名前の壁OBJを用意
else {wall_flag=0}//それ以外の場合は空中判定


//2、衝突フラグオンの場合、足元のOBJを調べて、重力とvspeed(縦速度)を0
//  更に、足元OBJのy座標に自OBJの座標を合わせる(こうすることですり抜け現象を回避)
if wall_flag ==1
{
col_id = (collision_rectangle(x+10,y+55,x+30,y+60,wall,true,false))//足元の足場OBJのID取得
if vspeed >= 0//落下、もしくは直立時のみ、座標を合わせる
{
vspeed = 0; //縦速度0
y = col_id.y-1;//足元の足場OBJの1マス上のy座標に合わせる
}
gravity = 0//条件がなんであろうと、とりあえず重力0
}

超大雑把だけど、↑のコード調整すればいけると思うよ
無駄に手順が多い気がするけど、これ以上スマートな方法知らないんです。。。

ちなみにこのまま使うと>>62みたいな足場になります。
0087名前は開発中のものです。2008/05/27(火) 06:04:21ID:8CURxQUf
悪魔城シリーズみたいに、雲のテクスチャを使って遠方から
雲が流れてく様な演出ってできないかな…、あまり無茶をするとガクガクになるからアレかも。
0088名前は開発中のものです。2008/05/27(火) 22:54:16ID:6Xhx1kD4
drawイベント、使い方がよくわからない・・・
一度draw呼び出した後の消し方も分からないし
非公式読んでもわからなかった・・・

オブジェクトいっぱい作って表現するよりも軽いらしいから
使いこなせたらベストなんだけど、うーm
0089名前は開発中のものです。2008/05/28(水) 12:32:20ID:xSCQjZ2e
>>88
drawイベントは呼ばれている間ずっと描画するからifとかで描画する条件を付ければいい。

そんな重いものを作るんでなかったらオブジェクトを複数に分けた方が良いと思う。
ずっと描画する背景やメニューなら別だけど……。



>>87
悪魔城やったことないからイメージできないや……

奥から手前に雲が向かってくるのなら、雲を描画するオブジェクトを作って、拡大しながら移動したりアルファをいじればいいと思うんだが……
0090名前は開発中のものです。2008/05/29(木) 02:36:12ID:DHizXfG5
88です

>>89
>>drawイベント
なるほど!ありがとうございます!
0091名前は開発中のものです。2008/05/31(土) 00:39:40ID:rrtVSSkL
セーブデータ関係って皆さんどうされてます?
ファイル生成とかいろいろありますが
データが外部から操作されないようなセーブデータって可能でしょうか?
0092名前は開発中のものです。2008/05/31(土) 08:51:13ID:ZVZLgF9M
物理的に不可能。
暗号化するなどで操作されにくくするのが関の山。
0093名前は開発中のものです。2008/05/31(土) 09:10:26ID:rrtVSSkL
>>92
暗号化って、難しそうですねぇ。
うーん・・・
0094名前は開発中のものです。2008/05/31(土) 12:15:42ID:zJdP1EEF
暗号化といっても、ビットシフトとXORの組み合わせならそんなに難しくないし、それなりに弄られなくなると思うけど。
0095名前は開発中のものです。2008/05/31(土) 13:34:09ID:ou8RstaY
無茶苦茶分かりにくい並び方でデータを並べるとかしか浮かばないなぁ。

あとは保存された数値の内容でパスワードみたいなのを生成して一緒に保存して、読み込むとき整合性がとれなかったら不正なデータと見なすとか。
0096名前は開発中のものです。2008/06/02(月) 15:17:04ID:/RuiniIL
蜃気楼の表現ってどうするんだろうな…、2Dじゃ無理臭い気が…。
0097名前は開発中のものです。2008/06/02(月) 22:26:22ID:Epu/dM/T
>>96
重いけどできなくはないよ。
画面を細かく水平方向に区切って、サインカーブに沿ってずらしながら描画する。
そのカーブを時間と共に変えれば、ゆらゆらと揺れる感じが出せる。
GM6以降ならテクスチャやサーフェス使えばいいかな。
0098名前は開発中のものです。2008/06/03(火) 06:54:11ID:OlF/LjGi
>>97
できるのかw、流石GMだ…
っていうか、サインカーブ…。テクスチャはまだわかるけど、サーフェスとか
まだ使い始めて間も無いんで、一見しただけではパッとこないが…
とりあえずレスサンクス、97のレスを元に色々やってみるよ。
0099名前は開発中のものです。2008/06/04(水) 10:49:46ID:JdoODmgp
GM初心者で格ゲーみたいなのを作りたいんだが全くわからない。とりあえず、  ・簡単なCPの作り方(近づいてパンチと移動だけでよい) バージョンは5.3レジスターはしてません。GMLは少しなら         
0100名前は開発中のものです。2008/06/04(水) 11:32:43ID:YZVoGHHf
Backgroundやroomにマウスクリック等のイベントを追加することはできますか?
背景画像(あるいはroom背景色の領域)をクリックした時にクリック座標を取得しインスタンスを生成するのが目的です
具体的には画面をクリックした場所に地雷を設置するというゲームを作ってます
今は背景色で塗りつぶした画像を用意しオブジェクトとしてAddEvent>Mouse>LeftButton>Code
という方法でやりたい事は実現はできているのですが上手い方法じゃないと自覚しとります

GM6未レジスト、フォーラムとHelpは読んだつもりですが過去ログは見落としてるかもしれません
0101名前は開発中のものです。2008/06/04(水) 12:37:58ID:TGP/82mE
>>99
私が以前作った格ゲーのサンプルを提供してあげたいが、いかんせんPCにネット環境がない……。

格ゲー作るならそれなりに複雑な処理になるから、
ボタンが押される→キャラの状態により攻撃実行
の仕組みを作って、CPUの動作は位置によって複数の連携テーブルから適当なものを選んで行動、とかそんな感じにしなきゃ辛い。

何が言いたいかというと、私は応援してるよ、と(^^;
0102名前は開発中のものです。2008/06/04(水) 19:59:47ID:JdoODmgp
格ゲーはとりあえず試行錯誤しときます。
これかもアドバイス頂けると嬉しいです。
応援ありがとうございます。
0103名前は開発中のものです。2008/06/04(水) 20:17:36ID:JdoODmgp
早速質問です、すいません(-_-;)
CPの動きはプレイヤーが近くにいるとパンチするようにしたんですが、そうするとCPが永遠にパンチしてきます。
パンチのランダム性(?)てどうやるんでしょう。あとCPのプレイヤーの位置認識にxyを使ってるんですがそうすると特定の距離の時しかパンチしてきません。
0104名前は開発中のものです。2008/06/04(水) 21:00:11ID:s7z6oTUx
>>100
Mouse > Global mouse event(GM6以降)
またはcontrolの中にある「If a mouse button is pressed」

>>103
あるアクションをランダムで実行したいなら「With a chance」アクション
(controlにあるサイコロの絵のアイコン)
あと、サンプルに付いてくる1945っていうシューティングを見ると
一定間隔でしか弾を撃てないようにする制御をしているので参考になるかも。
基本的に格闘ゲームは変数を使って「今キャラクタがどんな状態にいるか」
を管理するのが重要になるよ。

後半の質問は意味がよくわからん。自分と相手の距離を計算して
「100より大きくて120より小さい」とか大小判定すればいいと思うんだけど、
そういう話じゃない?
0105名前は開発中のものです。2008/06/04(水) 23:33:38ID:LluC3sBJ
スクロールの対象を現在「主人公A」にしてます。
「主人公B」に変身すると、スクロールの対象が失われエラーになるのですが、
どーすればいいのでしょうか?教えて下さい。

{
//
new_view_left = min(max(0, (主人公A.x+10) - view_width[0]/2), room_width - view_width[0]);
view_left[0] += (new_view_left - view_left[0]) / 4;
}
0106名前は開発中のものです。2008/06/04(水) 23:51:42ID:5xx8K1a2
AとBを同じParentに設定して、そのParentを追尾すればいいんじゃない?
0107名前は開発中のものです。2008/06/04(水) 23:56:56ID:LluC3sBJ
お答えいただいたのにすいません・・・
プログラムとかが分からないので、

(主人公A ? 主人公B.x+10)

?の所に何か書き込めばいいのでしょうか?
or とかandとか入れてみたんですが駄目でした。
0108名前は開発中のものです。2008/06/05(木) 01:30:34ID:Cu6N54BP
新しいオブジェクトを作る。命名「主人公の素」
主人公Aのプロパティを開いて、「Parent」の欄で今しがたつくった「主人公の素」を選ぶ。
主人公Bも同じようにParentを「主人公の素」に設定する。
さっきの式を「主人公の素.x + 10」に変更。おわり
0109名前は開発中のものです。2008/06/05(木) 05:40:07ID:SxCz6ZJb
丁寧な回答
ありがとうございます!!
エラーが出ず、スクロールできました。
0110名前は開発中のものです。2008/06/06(金) 00:51:41ID:J8O2ZYG8
自分も以前から台形の立体表示を
作りたいと思っていました。
テクスチャの変形が平行四辺形的な
変形になってしまうため、変形率の異なる
三角形二つの組み合わせでは不可能と
思っていたのですが…
力押しでこんなの作ってみました。
キャラや背景その他は適当です。

ttp://www.h6.dion.ne.jp/~m_style/texture_s.zip

キー左右で移動のみです。

映像の繰り返しパターンを1枚のテクスチャで2回設け、
それを台形にしておき、変形する。

移動時は、テクスチャ上の各点を移動させる。

ということです。
01111102008/06/06(金) 00:57:58ID:J8O2ZYG8
書き忘れました。
obj_bg_earth01が、地面の部分のオブジェクトです。
0112名前は開発中のものです。2008/06/06(金) 11:05:29ID:4VD34WHe
>>110
うぉぉぉぉ……!
せっかくサンプル用意してもらったのに今PCにネット環境がないから見れない……。

……でも凄い嬉しいです。
0113名前は開発中のものです。2008/06/07(土) 14:55:19ID:5IJUQrYD
>>110
キャラ素材の作りに感動しました!
3Dっぽいですけど、素材は何で作ってます?
0114名前は開発中のものです。2008/06/08(日) 13:41:45ID:T6BCIG1y
クリックした瞬間に存在してる「オブジェクトA」を削除して
クリックした地点に新しく「オブジェクトA」を作成し、
Step towards pointでその「オブジェクトA」の地点まで「主人公」を移動させる。というゲームを作っているのですが
「主人公」のスプライト(GIF動画)を移動している方向によって変えるにはどうすれば良いでしょうか?

If an expression is trueで「0<=direction<=45」みたいな風にやったのですが
一番最後に書いた方向(315<=direction<=360)のスプライトに固定されてしまい何処に移動しても画像が変わりません。

解りにくい説明ですみませんが、どうかご教授お願いします。
0115名前は開発中のものです。2008/06/08(日) 14:54:45ID:utQhd3oj
0<=direction && direction<=45
でも両方<=だと、たとえばdirectionがちょうど45.0の時に条件がかぶるから
0<=direction && direction<45
の方がいい
0116名前は開発中のものです。2008/06/08(日) 16:42:58ID:T6BCIG1y
>>115
ありがとうございます。
その様にした所、時々横向きになるのですがやはり画像はほとんど変わりません。

この様な感じに作っているのですが
http://www2.uploda.org/uporg1470436.zip
もしかして根本的な何かを間違えているのでしょうか?

再度質問で申し訳ありませんが、よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています