【2D】ゲーム作成ツールGameMaker part3【マンセー】
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2008/05/11(日) 01:41:47ID:PRhlwPyW●本家(英語)
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/
0011名前は開発中のものです。
2008/05/11(日) 18:11:22ID:cmOvm32X了解です。ありがとうございます。
0012名前は開発中のものです。
2008/05/11(日) 18:39:07ID:cmOvm32Xしかし、マウスカーソルの位置に向かって銃を構えた画像に変更するのが、
上手くいきません。。
レジストしてない場合、コードを書く必要があるけど
向きごとに別々にスプライトがあるのかそれともフレームが分かれてるのか、
全部で何方向あるのかとかで対応が違う。
まあ、何方向でも構わないからなるべくスムーズにしたいというのなら
>1. スプライトエディタで Animation > Rotation Sequenceの機能を使って
>360°分回転させたイメージを作る(36フレームくらいがおすすめ)
>2. StepイベントでVARアクションを使って次の変数を設定
>image_single = direction / 360 * image_number
これをすると一度はその方向を向きますが、後はまったく反応してくれません
0013名前は開発中のものです。
2008/05/11(日) 19:26:43ID:cmOvm32X一応自分なりにこれなら出来るんじゃないだろうかっと思う程度まで考えて、
その銃を構えるキャラクターのSpriteを45度の角度づつ計8個(1.270°2.235°3.180°4.135°5.90°〜方向に銃を構える)
マウスポインタの位置がキャラクターに対してどの角度内にいるかでSpriteを変更したいと思います。
あと、Test Expressionで一文ぐらいなら出来ると思います。。
よろしくお願いします。
0014名前は開発中のものです。
2008/05/11(日) 22:15:44ID:cmOvm32Xif at position (1 <= x <= 333,-3 <= y <= -999) there is object obj_p001
set the sprite to spr_k001_08 with subimage 0 and speed 1
else
if at position (0,-1 <= y <= -999) there is object obj_p001
set the sprite to spr_k001_01 with subimage 0 and speed 1
else
if at position (-1 <= x <= -333,-3 <= y <= -999) there is object obj_p001
set the sprite to spr_k001_02 with subimage 0 and speed 1
else
if at position (-333 <= x <= -1,0) there is object obj_p001
set the sprite to spr_k001_03 with subimage 0 and speed 1
else
if at position (-333 <= x <= -1,1 <= y <= 999) there is object obj_p001
set the sprite to spr_k001_04 with subimage 0 and speed 1
else
if at position (0,1 <= y <= 999) there is object obj_p001
set the sprite to spr_k001_05 with subimage 0 and speed 1
else
if at position (1 <= x <= 333,3 <= y <= 999) there is object obj_p001
set the sprite to spr_k001_06 with subimage 0 and speed 1
else
if at position (1 <= x <= 333,0) there is object obj_p001
set the sprite to spr_k001_07 with subimage 0 and speed 1
この形に組みました。
(GMLでなく普通にです)
何となく、自分のしたいことは表せたのですが、一切反応してくれませんでした。。
間違っている所やこうしたらいいと言う意見をお待ちしております。。。
何度も何度も度々すみません。。
0015名前は開発中のものです。
2008/05/11(日) 23:56:50ID:AX4c16UA(1番目が右向き、2番目が右上、3番目が上、……と0°から反時計回りに並べる)
で、Stepイベントで
image_singe = point_direction(x, y, mouse_x, mouse_y) / 45
と設定すればいけるはずだけど。
(厳密に言えば、image_singleはGM6以降では廃止されているので、
image_indexを設定してimage_speedを0にするのが正しい)
ちなみにどうしてもスプライト別々でやりたいなら、
変数を一つ設定しておいて
set the variable direction to point_direction(x, y, mouse_x, mouse_y)
if expression (direction < 22.5 || direction >= 337.5) is true // 8角形に「?」のアイコンを使う
set the sprite (右向きのスプライト)
if expression (direction >= 22.5 && direction < 67.5) is true
set the sprite (右上のスプライト)
if expression (direction >= 67.5 && direction < 112.5) is true
set the sprite (上向きのスプライト)
……(中略)
if expression (direction >= 292.5 && direction < 337.5) is true
set the sprite (右下のスプライト)
みたいな感じに判定していく。ここまでくるとGML書いてるのとあまり変わらんけど、
アクションだと複数条件の組み合わせはうまく表現できないからね。
0016名前は開発中のものです。
2008/05/12(月) 00:15:01ID:Nz3aygB6条件にあるxとyの値が決め打ちなのも意味不明。
君がやりたいことは、
・マウスの方向によって画像を変更する
なのだろう?
なら、「マウスの方向」が条件になるはずではないか。マウスの座標は mouse_x mouse_y で知ることができる。
そして、自キャラから見たマウスの方向は、point_direction() という関数で知ることができる。
アイコンによる設定の説明は面倒なので、コードだけ書いとく。(Varアクションと TestExpression でできるけど)
ステップイベントにExecute Code アクションを追加して、中身を下のやつをコピペしてみ。
spr_k001_xx は向きにあわせたものに直してくれ。
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;
}
0017名前は開発中のものです。
2008/05/12(月) 00:15:38ID:Nz3aygB60018名前は開発中のものです。
2008/05/12(月) 01:16:43ID:ikz1QGUi返答ありがとうございます。
おお、出来ました
お二人ともありがとうございました。
ではまたいじってきます^^
0019名前は開発中のものです。
2008/05/12(月) 01:30:34ID:RmZAj2l+三角形単位だとやっぱ辛いか
0020名前は開発中のものです。
2008/05/12(月) 02:07:25ID:TpSXp6LY三角形単位だと歪むね・・・。
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どう書き換えたらいいでしょうか。。書き換えていただけませんか?
0022名前は開発中のものです。
2008/05/12(月) 02:41:29ID:ikz1QGUi動かしたのですが、そしたら弾の出る場所がおかしくなりました。。
どうしたら前のように銃口の座標から撃てるでしょうか
0023名前は開発中のものです。
2008/05/12(月) 03:03:27ID:4cPaCS6eいいかげんにしろ。
「書き換えていただけませんか?」とか、失礼すぎ。人をツールのように扱うなよ。
あと、基本的なことが理解できてないようだから、
>>1の非公式サイトを読みながら、最低一ヶ月試行錯誤しろ。
今までの質問を解決する材料は、全て書いてあるし。
0024名前は開発中のものです。
2008/05/12(月) 09:26:48ID:RmZAj2l+やっぱり簡単にはいかないのかな
弾幕シューティングの背景にするには軽くないといけないし……
四角面を張れれば簡単なんだけどなぁ
もうちょっと研究してきますです
0025名前は開発中のものです。
2008/05/12(月) 15:43:35ID:ikz1QGUiすみません。。。以後頑張ってきます。。
0026名前は開発中のものです。
2008/05/12(月) 20:15:49ID:3BNN/6ibこいつアホだろ
0027名前は開発中のものです。
2008/05/12(月) 20:18:50ID:5kQyHDOM・・・何いってんの?
0028名前は開発中のものです。
2008/05/12(月) 20:57:52ID:IGlYgd9cGMもそれなりに知名度を上げてきたって事かねぇ、TonyuやZGE出し抜いてよくまぁ…
0029名前は開発中のものです。
2008/05/13(火) 00:13:26ID:jNkfDGaf特定のボタンを押すと、前オブジェクトの動作が止まって
メニューが表示され、メニュー画面操作のみ受け付けるような
動作をさせたいと考えているのですが
いまいち、簡単な方法が思いつきません。
何か良い方法はありませんでしょうか?
0030名前は開発中のものです。
2008/05/13(火) 00:14:04ID:jNkfDGaf「前」じゃなくて「全」の間違いでした…
0031名前は開発中のものです。
2008/05/13(火) 10:25:49ID:yM+gChpvポーズメニューみたいな感じなのかな。
それなら私が良く使う方法を一つ。
元のルーム(ゲーム部分)のルーム設定を「持続する」にしておいて、背景色を描画してないルーム(ポーズ部分)に移動する。
再描画されないのでメニューの後ろにだけウィンドウか何かを描画しておかないといけないけど。
元のルームに戻ればそのまま動作するのでそれっぽく見えるはず。
わかりにくくてゴメン。
0032名前は開発中のものです。
2008/05/14(水) 01:04:12ID:+oaQcg1Cif (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なるほどぉ、そんな方法が。。。
ありがとうございます。
0035名前は開発中のものです。
2008/05/14(水) 09:38:29ID:+oaQcg1Cfloor(point_direction(x,y,mouse_x,mouse_y)+22.5);
ここだと自分は思ってます。
ただ、どう文章をおけばいいのかわからなくて。。
0036名前は開発中のものです。
2008/05/14(水) 10:10:14ID:+oaQcg1Cif (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:jcqbfyhBfloor(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色々とすみません。。
ある程度ましになるまで見てきます。
003937
2008/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:a1mpKMyg0041名前は開発中のものです。
2008/05/16(金) 22:37:09ID:mTen8rcq0042名前は開発中のものです。
2008/05/17(土) 11:05:14ID:iuDmkXQZ0043名前は開発中のものです。
2008/05/17(土) 13:11:22ID:4t7O5zMmここのChapter14 ゲーム配布に売ってもかまわないと書いてあるが、これ本当?
0044名前は開発中のものです。
2008/05/17(土) 13:25:09ID:iuDmkXQZライセンス読む限りでは制作したゲームは使用素材の規定を守っている限り、配布方法の制限は一切ないみたい。
プロジェクトファイルは販売してはいけないみたいなこと書いてあるけど、exeで出力したファイルならいいと思うよ。
0045名前は開発中のものです。
2008/05/17(土) 13:30:23ID:4t7O5zMmなるほど。調べてくれてありがとう。
0046名前は開発中のものです。
2008/05/17(土) 16:19:00ID:mUIUdkzkしないようにしたいんですが、方法はないでしょうか?
壁自身のsolid属性を変えると、他のOBJが落っこちてしまうし・・・
どうすればいいでしょうか?
0047名前は開発中のものです。
2008/05/17(土) 20:20:00ID:iuDmkXQZ特定のタイミングでだけ別のオブジェクトに変更するとか……
駄目だこれくらいしか浮かばないにゃー
0048名前は開発中のものです。
2008/05/17(土) 20:37:37ID:WkeQkIH/キーイベントやステップイベントでsolidオブジェクトに対する処理をしているなら、
無効にしたいときのフラグをたてて、条件分岐で処理を振り分ければいいと思う。
衝突イベントのところを変えたいとなると、ちょっと難しいかな。
solidオブジェクトとの衝突イベントでは、双方のインスタンスがそのステップで移動していたとしても、
インスタンスの位置がステップ開始時の座標(xprevious, yprevious)に自動で戻されてしまうから。
壁を無効にしたいときには、衝突イベント内で移動し直さないといけないことになる。
・・・いろいろ書いたあとにリロードしなおした。>>47のほうがスマートにできるかもね・・・。まあ、参考になればorz
0049名前は開発中のものです。
2008/05/17(土) 22:25:09ID:mUIUdkzkレスありがとうございます。
「Stepイベント」とかではなく、「衝突イベント」を作って動作させています。
ということは、やるべき事はSolid云々を考えるのではなく
「Stepイベント」内で「衝突イベント」と同じことをさせないといけないということですね…
いろいろ試してはみたんですが、Stepイベント内で条件指定すると
「衝突イベント」のようにうまくいかず、めり込んでしまいます・・・
多分、条件指定の方法がいけないんだと思います…
「Stepイベント」内で「衝突イベント」とまったく同じ動作をさせる条件ってありますでしょうか?
005048
2008/05/18(日) 02:22:11ID:eCUFmfOE>「Stepイベント」内で「衝突イベント」とまったく同じ動作をさせる条件ってありますでしょうか?
instance_place(x,y,obj)
っていう関数が一番近いかな・・・。
この関数を実行しているインスタンスが(x,y)に置かれたとき、objと重なっている状態なら真を返す関数だよ。
これをif文の条件に使うといいかもしれない。
えっと質問とは別に、さっき考えた自分ならこうするかもっていう方法も書いておくよ。
solidの衝突イベントでは、>>48で書かれているとおり
>インスタンスの位置がステップ開始時の座標(xprevious, yprevious)に自動で戻されてしまう
っていうのがあるんだけど、これを逆手にとって、
壁をすり抜けさせたい場合のみに、すり抜けさせるオブジェクトの通常ステップイベントの最後で、
xprevious = x;
yprevious = y;
とする。
そして、衝突イベントのところで、通常とすり抜けの条件分岐させて、
すり抜けのときは何もしないようにする。
この方法が汎用的かどうか不明だから、わからなかったら聞き流して。
005146
2008/05/19(月) 06:37:21ID:lUKR9rqpなるほど!
衝突イベントについて、分かってきた感じです。
いろいろと試してみようかと思います。
ありがとうございました。
0052名前は開発中のものです。
2008/05/20(火) 00:44:21ID:34XojH21他にレジスト購入代行してくれるところってありませんかねぇ?
海外サイトのクレジット決済、日本のと違って、どこにどう入れればいいのかサッパリっすorz
0053名前は開発中のものです。
2008/05/20(火) 03:24:54ID:D4oicTQ30054名前は開発中のものです。
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私はどのゲームでも基本的に各編が128か256か512とかになるようにしてる。
あまりメモリ潰さなきゃ好きなサイズでいいと思うけど……
005756
2008/05/20(火) 14:47:41ID:3IvwgtXZ各編→各辺
0058名前は開発中のものです。
2008/05/21(水) 07:20:16ID:tP4UvCEO・ステップごとに十字キー(レバー)と各ボタンの入力をチェックしてファイルに書き出すオブジェ作成。
・リプレイモードで保存したファイルから記録したデータをプレーヤーキャラにコントロールデータとして送るオブジェを作成。
(書き出すオブジェと統合でもいいと思うけど煩雑になるかもしれないので分けたほうがいい)
・プレーヤーキャラオブジェは「通常プレーモード時では、コントローラー入力で作動する」「リプレイモード時では、もらったコントロールデータで作動する」を
切り替える仕組みを作ってやればいい。
要は「不定なのはプレーヤーの入力のみとし、それを記録する」こと
リプレイ実装を考えてるゲームに、ゲーム側で不定要素を抱えている時はそれを不定でなくすようにする。例えば
@ランダム要素、random()関数や「With a change perform next」アクションを使っているオブジェがあって、
それがゲーム進行を左右しているなら「乱数の種」付きランダム関数にし、リプレイモード開始時「乱数の種」をリセットすればランダムも使用可能となる
「乱数の種」付きランダム関数はhogehige氏が作ってくれています。(この場を借りて感謝)>>4のリンク先、上から二つ目
A当然ながらポーズキーを実装している場合は書き出すオブジェの書き出しも停止してやらなくてはならない。まぁポーズに限らず
ROOMの移動とかもあるので「記録停止」「記録開始」も必要になってくるし、リプレイモードもそのタイミングで「コントロールデータ送出停止」とかも必要になってくる
と・・・まぁこんな感じかな・・・ほんとに大雑把なので回答になってないかもしれないが、これぐらいでかんべんしてください。
0059名前は開発中のものです。
2008/05/21(水) 09:28:39ID:wqIERWKFわざわざ調べて返答してくれたのなら申し訳ない(^^;
単純にリプレイ機能作ってる人ってどのくらい居るのかな〜ってのを知りたかっただけだったのだが……
でも自作の今のリプレイ機能よりすっきりまとまる感じがするのでちょっとシステム洗練してきますです
現時点ではなぜか一面でだけ絶対ずれるし……
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+やっぱり文章的にアレだったので訂正・・・
足場OBJを作るとして
プレイヤーが足場OBJに上から衝突した場合は、Solid属性みたいに乗る事が出来
ジャンプ等で下の方から足場OBJに衝突した場合は、すり抜けて通れるように
したいと考えております。
instance_place(x,y,obj)を条件に、Gravityを0にする動作をさせてみても
すり抜けてしまうし、なかなか難しいものです。
ご教授いただきたく、お願いしますm(__)mペコ
0063名前は開発中のものです。
2008/05/22(木) 17:46:59ID:QlDRy8fj実際に試してないのでどうかわからないがこんな感じのを考えてみた。
プレイヤー側の床とのコリジョンイベントで、
床に対し、自分が完全に乗る高さ以上に居る&vspeedが0以上なら、
vspeedと重力を0にし、自分の高さを床に乗るように合わせる。
かなりわかりにくくて申し訳ない……
0064名前は開発中のものです。
2008/05/22(木) 20:36:05ID:dVs71+g+なるほど。vspeedですね。
試してみたんですが
>>自分の高さを床に乗るように合わせる。
これをやらないと衝突判定があっても、沼に沈むように下降する現象が発生
(↑原因不明・・・なんでだろう)
vspeedだけじゃ駄目なんですね。
位置を合わせるって部分はまだ微調整が必要ですが
おかげで、実現に近づける事ができました
ありがとうございました。
0065名前は開発中のものです。
2008/05/22(木) 21:17:29ID:QlDRy8fj位置を合わせないと沈んでいくのはvspeedが0になったあと1フレーム分下に加速度がかかっているからで。
まあ、お節介かも知れないけど補足(^^;
0066名前は開発中のものです。
2008/05/22(木) 21:36:47ID:A9Tj0djsポーズの作り方で
ゲーム上のインスタンスを動かなくさせる(反応しなくさせる)
っていうのがあった気がするんですけど
誰か詳しく覚えてませんか?
0067名前は開発中のものです。
2008/05/22(木) 21:39:49ID:F+pyFRDi0068名前は開発中のものです。
2008/05/22(木) 21:45:49ID:QlDRy8fj0069名前は開発中のものです。
2008/05/22(木) 21:50:14ID:bh5bHg1Z日本語がおかしくてすみません。。
0070名前は開発中のものです。
2008/05/22(木) 21:54:35ID:QlDRy8fj残念ながらできません。
ブラウザで遊べるゲームが作りたいのならFLASHかJavaで作りましょう
0071名前は開発中のものです。
2008/05/22(木) 21:59:29ID:bh5bHg1Zそうですか、わかりました。
ありがとうございました。
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""で囲むとそれは文字列として扱われてしまう。
しかしnとだけ指定しても内容が文字列ではなく数値なので、文字列にしてやる必要がある。
"n"をstring(n)に書き換えればオーケー。
0074名前は開発中のものです。
2008/05/23(金) 01:49:02ID:IwtfC0JSなるほど!
助かりました、ありがとうございます
0075名前は開発中のものです。
2008/05/23(金) 02:01:25ID:smnTR4WN表現の方法がサッパリ分からない状態です。
何か良い方法は無いものでしょうか…?
※以下の動画で使われてる飛び道具のような表現です
ttp://www.nicovideo.jp/watch/sm2021499
>>ニコ動嫌いな人
URL出してしまい、すいません…
0076名前は開発中のものです。
2008/05/23(金) 03:26:40ID:d1WY1temcの攻撃みたいなやつ?
0077名前は開発中のものです。
2008/05/23(金) 05:21:17ID:6Q5daQ7yexecute_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:OhG93FRYparameter_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:smnTR4WNcの攻撃みたいなやつのことです
0080名前は開発中のものです。
2008/05/23(金) 10:22:58ID:6Q5daQ7yparameterを使ってみたら見事にできました。
ありがとうございました。
0081名前は開発中のものです。
2008/05/23(金) 11:06:03ID:9mBFsqkn飛び道具から丸くて小さくなっていくスプライトのオブジェクトを置き続ければいいんじゃないか?
レジスト版なら加算合成とか使えて綺麗になるが、通常版だとちとイマイチかもしれないが……
0082名前は開発中のものです。
2008/05/23(金) 14:43:02ID:EGcliZhuここの37にマルチプレイヤーゲームが出来ると書いてありますが、
書いてあることが凄すぎてよくわかりません。。
誰か上手く教えていただけませんか?
0083名前は開発中のものです。
2008/05/23(金) 15:56:41ID:9mBFsqkn要はネット対戦機能とかを作れるって事だけど、マニュアルに書いてある事を理解できる位のネットワークに関する知識がないと辛いんじゃないかな……
出来たら面白そうだなとは思うけどね
0084名前は開発中のものです。
2008/05/23(金) 18:31:26ID:EGcliZhuわかりました
0085名前は開発中のものです。
2008/05/26(月) 21:09:52ID:K7Gb+EE1横に移動して、ジャンプも出来て、重力をつけたら画面外まで落ちていきました。
何かオブジェクトに乗っかるにはどうすればいいですか?
0086名前は開発中のものです。
2008/05/27(火) 01:16:07ID:il/v0kgX1、衝突検知→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呼び出した後の消し方も分からないし
非公式読んでもわからなかった・・・
オブジェクトいっぱい作って表現するよりも軽いらしいから
使いこなせたらベストなんだけど、うーm
0089名前は開発中のものです。
2008/05/28(水) 12:32:20ID:xSCQjZ2edrawイベントは呼ばれている間ずっと描画するからifとかで描画する条件を付ければいい。
そんな重いものを作るんでなかったらオブジェクトを複数に分けた方が良いと思う。
ずっと描画する背景やメニューなら別だけど……。
>>87
悪魔城やったことないからイメージできないや……
奥から手前に雲が向かってくるのなら、雲を描画するオブジェクトを作って、拡大しながら移動したりアルファをいじればいいと思うんだが……
0090名前は開発中のものです。
2008/05/29(木) 02:36:12ID:DHizXfG5>>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暗号化って、難しそうですねぇ。
うーん・・・
0094名前は開発中のものです。
2008/05/31(土) 12:15:42ID:zJdP1EEF0095名前は開発中のものです。
2008/05/31(土) 13:34:09ID:ou8RstaYあとは保存された数値の内容でパスワードみたいなのを生成して一緒に保存して、読み込むとき整合性がとれなかったら不正なデータと見なすとか。
0096名前は開発中のものです。
2008/06/02(月) 15:17:04ID:/RuiniIL0097名前は開発中のものです。
2008/06/02(月) 22:26:22ID:Epu/dM/T重いけどできなくはないよ。
画面を細かく水平方向に区切って、サインカーブに沿ってずらしながら描画する。
そのカーブを時間と共に変えれば、ゆらゆらと揺れる感じが出せる。
GM6以降ならテクスチャやサーフェス使えばいいかな。
0098名前は開発中のものです。
2008/06/03(火) 06:54:11ID:OlF/LjGiできるのかw、流石GMだ…
っていうか、サインカーブ…。テクスチャはまだわかるけど、サーフェスとか
まだ使い始めて間も無いんで、一見しただけではパッとこないが…
とりあえずレスサンクス、97のレスを元に色々やってみるよ。
0099名前は開発中のものです。
2008/06/04(水) 10:49:46ID:JdoODmgp0100名前は開発中のものです。
2008/06/04(水) 11:32:43ID:YZVoGHHf背景画像(あるいはroom背景色の領域)をクリックした時にクリック座標を取得しインスタンスを生成するのが目的です
具体的には画面をクリックした場所に地雷を設置するというゲームを作ってます
今は背景色で塗りつぶした画像を用意しオブジェクトとしてAddEvent>Mouse>LeftButton>Code
という方法でやりたい事は実現はできているのですが上手い方法じゃないと自覚しとります
GM6未レジスト、フォーラムとHelpは読んだつもりですが過去ログは見落としてるかもしれません
0101名前は開発中のものです。
2008/06/04(水) 12:37:58ID:TGP/82mE私が以前作った格ゲーのサンプルを提供してあげたいが、いかんせんPCにネット環境がない……。
格ゲー作るならそれなりに複雑な処理になるから、
ボタンが押される→キャラの状態により攻撃実行
の仕組みを作って、CPUの動作は位置によって複数の連携テーブルから適当なものを選んで行動、とかそんな感じにしなきゃ辛い。
何が言いたいかというと、私は応援してるよ、と(^^;
0102名前は開発中のものです。
2008/06/04(水) 19:59:47ID:JdoODmgpこれかもアドバイス頂けると嬉しいです。
応援ありがとうございます。
0103名前は開発中のものです。
2008/06/04(水) 20:17:36ID:JdoODmgpCPの動きはプレイヤーが近くにいるとパンチするようにしたんですが、そうするとCPが永遠にパンチしてきます。
パンチのランダム性(?)てどうやるんでしょう。あとCPのプレイヤーの位置認識にxyを使ってるんですがそうすると特定の距離の時しかパンチしてきません。
0104名前は開発中のものです。
2008/06/04(水) 21:00:11ID:s7z6oTUxMouse > 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「主人公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:5xx8K1a20107名前は開発中のものです。
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回設け、
それを台形にしておき、変形する。
移動時は、テクスチャ上の各点を移動させる。
ということです。
■ このスレッドは過去ログ倉庫に格納されています