【2D】ゲーム作成ツールGameMaker part3【マンセー】
レス数が950を超えています。1000を超えると書き込みができなくなります。
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/
0002名前は開発中のものです。
2008/05/11(日) 01:43:10ID:PRhlwPyW@ コリジョン(当たり判定)/スプライト/マップ/サウンド再生など、2Dゲーム作成にかかせない機能が充実
@ なにかと便利なイメージエディタを内蔵
@ プログラミングの知識はあってもなくてもよい
@ *.exe(単体実行可能)形式でゲームを出力できる
@ 作ったゲームは自己責任の元で自由に配布できる(作ったゲームを売る場合のライセンス料さえ不要!)
@ キーボード、マウス、ジョイスティックからのキー・ボタン入力をサポート
@ イベントドリブン型なのでスマートにゲームを構築できる
@ 組み込みスクリプト言語"GML"により、さらに細かい処理が可能
@ エンジンはDirect X
※有料登録(15ユーロ)するとゲーム起動時のロゴ表示が消えて3Dやエフェクト機能などが追加されますが、基本的に無料で充分使えます。
《Game Makerの欠点》
@ 英語ソフトなので、英語が読めないととっつきにくい
@ ツクール類とは違い、ゲームの"動き"から設計しなければならない(それがまた長所でもある)
0003名前は開発中のものです。
2008/05/11(日) 01:43:51ID:PRhlwPyWGame Makerの作者であるMark H. Overmars氏はオランダの超名門大学"Utrecht"大学の教授で、主にゲームデザインについて研究されています。
参考: ttp://www.cs.uu.nl/people/markov/
《このスレの掟》
・Game Makerの略称はGMとする
・いきなり、「こんな素材ありませんか?」系の書き込みは避ける → 素材スレに行きましょう
・質問する場合には、「Game Makerのバージョン」「GMLを使えるか否か」をなるべく記す。
(必要に応じて、「ビデオメモリ容量」や「DirectXのバージョン」などを書くとなおよい)
現在主に使われてるGame Makerのバージョンには5.3Aと6.xがありますが、
5.3AはGame Maker 5.x系列の最終安定リリース版で、Game Maker 6.xは今のところ開発段階にあります。
●Game Maker 5.3A ダウンロード先:
ttp://www.gamemaker.nl/old.html
●Game Maker 6 ダウンロード先:
ttp://www.gamemaker.nl/download.html
5.3Aと6.xの詳しい相違点については以下を参照のこと:
ttp://gamemaker.main.jp/modules/smartfaq/faq.php?faqid=1
0004名前は開発中のものです。
2008/05/11(日) 01:49:44ID:PRhlwPyWttp://www.geocities.jp/hogehige2005/
0005名前は開発中のものです。
2008/05/11(日) 01:51:35ID:PRhlwPyW前スレ:【2D】ゲーム作成ツールGameMaker part2【マンセー】
http://pc11.2ch.net/test/read.cgi/gamedev/1121126627/
前前スレ: 【2D】ゲーム作成ツールGameMaker【マンセー】
http://pc8.2ch.net/test/read.cgi/gamedev/1087068523/
0006名前は開発中のものです。
2008/05/11(日) 01:57:21ID:ngsHwQAh乙っす、自分もスレ立てしようとか思ってて追加情報とか書いてたら立ってたようなので・・・
んで、なんというか・・ちょこっと追加
初代スレ: 【2D】ゲーム作成ツールGameMaker【マンセー】
http://pc8.2ch.net/test/read.cgi/gamedev/1087068523/
前スレ:【2D】ゲーム作成ツールGameMaker part2【マンセー】
http://pc11.2ch.net/test/read.cgi/gamedev/1121126627/
●Game Maker まとめWiki
(過去ログから質問をジャンル別にまとめてあったり、関数ヘルプなど)
ttp://www.wikihouse.com/GameMaker/index.php
0007名前は開発中のものです。
2008/05/11(日) 01:59:26ID:ngsHwQAhあうあうでしゃばってすません
0008名前は開発中のものです。
2008/05/11(日) 02:10:15ID:ngsHwQAh○現在主に使われてるGame Makerのバージョンには5.3Aと6.1A及び7.xのいずれか
現状の最新バージョンは7.0です。
●Game Maker 7 ダウンロード先:
http://www.yoyogames.com/gamemaker/try
ダウンロードにはサイト登録が必要
0009名前は開発中のものです。
2008/05/11(日) 15:38:01ID:cmOvm32Xなので、ここで続きの質問をさせていただきます。
ゲームオプションでマウスを消すとはどういう風にすればいいのでしょうか
なお、7を使ってるので英語で読めません。。
Global Game settingsって奴の中にあるのでしょうか?
具体的にご教授お願いします。
0010名前は開発中のものです。
2008/05/11(日) 16:01:38ID:/qP9TRX50011名前は開発中のものです。
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回設け、
それを台形にしておき、変形する。
移動時は、テクスチャ上の各点を移動させる。
ということです。
0111110
2008/06/06(金) 00:57:58ID:J8O2ZYG8obj_bg_earth01が、地面の部分のオブジェクトです。
0112名前は開発中のものです。
2008/06/06(金) 11:05:29ID:4VD34WHeうぉぉぉぉ……!
せっかくサンプル用意してもらったのに今PCにネット環境がないから見れない……。
……でも凄い嬉しいです。
0113名前は開発中のものです。
2008/06/07(土) 14:55:19ID:5IJUQrYDキャラ素材の作りに感動しました!
3Dっぽいですけど、素材は何で作ってます?
0114名前は開発中のものです。
2008/06/08(日) 13:41:45ID:T6BCIG1yクリックした地点に新しく「オブジェクト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でも両方<=だと、たとえばdirectionがちょうど45.0の時に条件がかぶるから
0<=direction && direction<45
の方がいい
0116名前は開発中のものです。
2008/06/08(日) 16:42:58ID:T6BCIG1yありがとうございます。
その様にした所、時々横向きになるのですがやはり画像はほとんど変わりません。
この様な感じに作っているのですが
http://www2.uploda.org/uporg1470436.zip
もしかして根本的な何かを間違えているのでしょうか?
再度質問で申し訳ありませんが、よろしくお願いします。
0117名前は開発中のものです。
2008/06/08(日) 17:50:32ID:eax+1E9yそりゃ0<=direction && direction<=45「ではないとき」なんて書き方をしてたら、
一番最後の【270〜360「ではないとき」】が高確率で反映されるわな。
余談だが、0<=directionって書き方に違和感を感じて仕方が無い。
ま、問題なく動いていればいいのかもしれないけどね。
0118名前は開発中のものです。
2008/06/08(日) 17:55:53ID:eax+1E9yどう頑張ってもボックス自体は外せねぇだろ。
notのチェックボックスのチェックを外す、だ。
0119名前は開発中のものです。
2008/06/08(日) 20:02:45ID:T6BCIG1yウボアァアァァァありがとうございます。気付きませんでしたorz
おかげでちゃんと移動先を向いてくれるようになりました。本当にありがとうございます。
何度も何度も質問ですみませんがgifの1フレーム目から動かないのですが何か設定が必要なのでしょうか?
本当に申し訳ありません。よろしくお願いします。
0120名前は開発中のものです。
2008/06/08(日) 23:36:33ID:NJgDJbX1どうすればいいのでしょうか?
たとえば走りながらジャンプ等
初心者すぎる質問で申し訳ありません
0121名前は開発中のものです。
2008/06/09(月) 00:17:01ID:QzRxZbxDジャンプアクションの要素を羅列してみる。
・空中に居ると下に落ちる
・床の上にキャラが乗れる
・左右にキーを入れると加速する。ダッシュボタンを押すと最大速度が上がる
・床に乗っている状態でジャンプボタンを押すとジャンプする。
とりあえずダッシュしながらジャンプは、ジャンプの際は横のスピードはいじらずに上にだけ速度を加えればいいと思うよ
0122名前は開発中のものです。
2008/06/09(月) 00:42:40ID:ekIBUZL+みるべきところはそこじゃなす
Edgeかなにかで描いたんだろ?
0123名前は開発中のものです。
2008/06/09(月) 15:28:48ID:N/jbPRoy素人の俺が考えて見たサンプルをどうぞ
http://www2.uploda.org/uporg1471552.zip
中身がゴチャゴチャしてスマン。
0124120
2008/06/09(月) 20:00:05ID:2DlmJVHk後>>123のファイルは解凍した後のファイルが読めないのですが
どうしたら読めるようになりますか?
このファイルを読み込むプログラム〜と言われてしまいます
0126名前は開発中のものです。
2008/06/09(月) 20:30:48ID:MbRvBo5s公式のチュートリアル(Platform Gamesってやつね)眺めるだけでも
けっこう参考になると思うんだが、あれも今はGM7用のしか置いてないな
0127名前は開発中のものです。
2008/06/10(火) 02:44:02ID:S3IlP6Mt互換というよりは、古verのものを新verの形式に書き直す、とかだったような気がするけど。
ファイルを直接ダブルクリックとかでは開けられないだろうから、GMから開くとかDrag&Dropとか……。
何にせよ、話が噛み合わないとどうしようもないので、情報は書いておいて欲しいもの。
0128名前は開発中のものです。
2008/06/10(火) 08:16:48ID:WKUtiVJV6から7なら大丈夫だろうけど。
まあ567全部インストールしておけば問題ないんだろうけどね
0129名前は開発中のものです。
2008/06/10(火) 12:07:20ID:1Irexyd70130名前は開発中のものです。
2008/06/10(火) 13:37:08ID:WKUtiVJVBGMやムービーを別々にして配布したいなら、拡張子を変更しつおいて、使う時だけリネームして読み込み、使い終わったら戻すって方法位かなぁ。
別々にしたい訳じゃないけど読み込みに時間かけたくない!ってのなら、6以降限定だが、Global Game SettingのIncludeで本体に含めてから実行時に展開するようにすればいいよ。
0131名前は開発中のものです。
2008/06/10(火) 14:29:23ID:1Irexyd7thx
0132113
2008/06/10(火) 20:08:22ID:6sraZo9Rうーm。。。答えてもらえないか
スレ違いだけど、素材作りにEdge管理で行き詰まり感じてて…
でもどこに質問しにいけばいいか分からなかったので質問させていただきました。
「3D→2D素材化」って流れで作られたものに見えたんで
この行き詰まりから脱せるんではないかって希望を見てしまったんでs
0133名前は開発中のものです。
2008/06/11(水) 16:39:10ID:EVNflJcn0134名前は開発中のものです。
2008/06/11(水) 21:49:55ID:5ZX5tJO/今は大丈夫みたいだが、どう?
0136名前は開発中のものです。
2008/06/12(木) 00:56:25ID:4EAhP+NE0137名前は開発中のものです。
2008/06/12(木) 08:09:28ID:9TqDsi5lダウンロードが?
ダウンロードなら特に何も問題なく出来るはずだが……
0138名前は開発中のものです。
2008/06/12(木) 10:22:01ID:zGKrtRU4yoyoに日本語対応してもらうのだ
0139名前は開発中のものです。
2008/06/13(金) 15:58:32ID:tjeMHdYO0140名前は開発中のものです。
2008/06/13(金) 17:37:16ID:8tjP+W255.3で作られたFPSがあったから、工夫次第では未レジストでも疑似3Dで作れると思う。
海外の作品で、doomとかいうタイトルだったような
ただプレイしてて激しく酔った記憶が……
0141名前は開発中のものです。
2008/06/14(土) 11:38:27ID:4m4S8SwE0142名前は開発中のものです。
2008/06/15(日) 19:59:47ID:n3ZqdSRd0143名前は開発中のものです。
2008/06/18(水) 10:02:15ID:0+3MnSWl未レジスト版ならGM7でもGM6でも大差無いのかな
0144名前は開発中のものです。
2008/06/20(金) 18:49:05ID:Xt39fvZ+レジスト版だけみたい。
未レジストなら基本6と変わらないかも。
それと、6で同じ効果音が重なる場合、うまく再生されないんだけど、これって何が原因かね?
他の効果音ならどんなに重なって鳴っても大丈夫なのに、一つだけうまく鳴らない音があるんだけど……
0145名前は開発中のものです。
2008/06/21(土) 06:42:13ID:j/kRwP45配列の長さ(サイズ)を取得する方法を教えて下さい
ヘルプとフォーラムには目を通したのですが初歩的すぎるのか見つかりません
0146名前は開発中のものです。
2008/06/21(土) 11:32:20ID:NtqmRukWというか、変数を定義した瞬間、特に制限無く配列として使用できてしまうし。
サイズ情報を管理する変数を自分で用意するとかしか思いつかん。非常に面倒だが。
それか、配列として扱う論理的なオブジェクトを作って、インスタンス数を数えるとか、か・・・?
0147名前は開発中のものです。
2008/06/21(土) 12:59:26ID:j/kRwP45残念ではありますが逆にスッキリいたしました
無いと分かれば割り切って強引なコーディングに踏み切れそうです
スマートに書きたいならレジストしてスタックやキューを使えということでしょうかね
勉強もかねてもう少し頑張ってみます
ありがとうございました
0148名前は開発中のものです。
2008/06/21(土) 19:29:15ID:S/Uv8sSkメモリ使用率削減のテクニック教えてもらえないでしょうか?
0149名前は開発中のものです。
2008/06/22(日) 00:34:10ID:3YikmJWj0150名前は開発中のものです。
2008/06/22(日) 09:10:47ID:NRn4PvdD連結された文字列の名前の変数、インデックスを作りたいと
考えております。
str ='var_'
str +='100'
//str='var_100'
//これを変数var_100として使用したい
//例えば
//SPRスプライトをvar_100に割り当てる
//sprite_assign(var_100,spr)
sprite_assign(??????,spr)
この??????が連結された文字列と同じ名前のインデックスになるような
指定をしたい場合、どうすればいいでしょう?
0151名前は開発中のものです。
2008/06/22(日) 10:21:52ID:9BAqCfGFvariable_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()の第一引数は、存在する(存在していた)スプライトインデックスで無いとエラーを起こすんで、注意してください。
0152名前は開発中のものです。
2008/06/24(火) 03:08:54ID:+uYxoItW6.1で縦16横8ピクセルの半角文字を1080字程描画すると、
それだけで20FPSくらいになるんだけど、普通なのかな?
0153名前は開発中のものです。
2008/06/24(火) 04:23:32ID:SW9HLMt81文字1文字スプライトから切り貼りして表示しているんだし・・・。
1080字も一度に書くとかなりの負荷なんじゃないかな。
サーフェスとか画面から見えないところで描画して、
描画したものをスプライト登録してそれを画面表示する、
とかするとよいかもね。この方法はレジスト版でしか出来ないけど。
0154名前は開発中のものです。
2008/06/24(火) 12:28:37ID:+uYxoItWうーん、レジストはしてあるんだけど、肝心の描画したい物がデータリスト的な物で、
ちょこちょこ切り替えるからなぁ。
とりあえず色々試してみます。
ありがとうございましたー
0155名前は開発中のものです。
2008/06/25(水) 21:39:01ID:4PLXCLdLおまいらどこのフリメ使ってる?
0156名前は開発中のものです。
2008/06/26(木) 08:07:08ID:ZUCsxIUu>>155
hotmail。ただし.comで。.co.jpは知らん。
0157名前は開発中のものです。
2008/06/26(木) 21:10:56ID:+fAgrEGQhoge.sprite_index = "spr_" + "piyo";
こんな感じでsprite_indexを変数で指定したいのですが上手くいきません
piyoの部分は100種類ほどあり増減の可能性もあるため逐一条件分岐で書くのは避けたいです
hoge.sprite_index = 4;
と、直接indexを数値で指定するというのも考えたのですが
画像と数値の管理が面倒そうで試してません
何か良い方法ないでしょうか
0158よこしま
2008/06/26(木) 21:27:15ID:ls1Ls4j4ウィンドウモードを切り替えたときに、bGMが親ウィンドウを見失うために終了していたようです。
以下の対策で解決すると思います。
1. bGM_play()スクリプトの下から約14行目をコメントアウトする。
「" -w " + string(window_handle()) + 」
↓
「// " -w " + string(window_handle()) + 」
2. ゲーム終了時には必ずbGM_close()関数を呼び、bGM.exeを確実に終了させる。
0159名前は開発中のものです。
2008/06/26(木) 23:23:46ID:4NwLrBZ+execute_stringが定番だけど遅いのは覚悟すること。
名前とインデックスの対応をmapで管理する方法もある。
最初にmapに入れるところが面倒だけど
(名前に規則性があるならループで回しながらexecute_stringで可)
一度作ってしまえば後のアクセスは速い。
後はスプライト別々にするのをやめて、subimageで分けるようにするとか。
0160名前は開発中のものです。
2008/06/26(木) 23:56:05ID:+fAgrEGQありがとうございます
execute_stringの方法で上手くできました
実行速度に関しては大丈夫そうです
余談ですが実はまだレジストしておりません
この関数ってヘルプ「リソースの変更」の項にあるのに未登録でも使えるのですね
教えて頂かなければ一生気付かなかったかもしれません
0161名前は開発中のものです。
2008/06/26(木) 23:58:49ID:ZUCsxIUu今まで原因がわからなかったから、いっそのことオプション画面用のroomでも作ってそのroomを抜ける時に、ウィンドウモードを切り替えていたらゲームを再スタートさせようかなと思っていました。
それでもbGMがどうなっているのかが不明だったため、この方法を使ってもいいのかと悩んでいて……。
GameEndイベント用のpersistentのオブジェクトを作ろうかと思います。
ありがとうございました。
0162名前は開発中のものです。
2008/06/27(金) 11:46:16ID:aoPSnAYiこれは困った
0163名前は開発中のものです。
2008/06/27(金) 22:07:01ID:IOoyzN5tstringで文字列化してini_write_stringで書き出すと直るよ。
0164名前は開発中のものです。
2008/06/28(土) 17:16:03ID:MGJMVRVBなるほど!
でも全箇所直すのめんどいなぁ……
ぼちぼちやりますか……
0165名前は開発中のものです。
2008/06/29(日) 16:00:15ID:0XhC6Ln6get_stringではポップアップボックスが出ている間ゲームが止まるのでこれは避けたい。
ゲーム内でIMEをどうにか使えるようになれないか。
とまで考えてみて、結局解らず仕舞orz
0166名前は開発中のものです。
2008/06/29(日) 19:41:43ID:lhyc/F0cマリオのような横アクション対戦ゲームを作りたいのですが・・・
0167名前は開発中のものです。
2008/06/30(月) 08:01:32ID:XJvv+Gn/物によってはメッセージと使い分けるといいかもしれない。
とまぁGM的に作れるには作れるけど、実際にオンラインプレイできるかは別。
ポート開放が必要になるから。LAN内ならポート開放とかその他細かい設定は無しでプレイ可能。
まあ>>83が結論かな。
0168名前は開発中のものです。
2008/07/03(木) 18:30:58ID:1ilwX3ov主人公の移動後に主人公のオブジェクトを変更して・・・って感じだと敵が複数の場合相当長くなってしまいます。
ちなみにダンジョンの自動生成は考えてません。
0169名前は開発中のものです。
2008/07/03(木) 23:07:04ID:PDxRGKbt主人公の移動後に敵のオブジェクトを変更して、と勝手に解釈した
とりあえず具体的に何がどう長くなるのか分からないけどコードは大して長くならないかと
描画処理もビュー内外で処理分ければ重くなることもないと思う
0170名前は開発中のものです。
2008/07/03(木) 23:20:15ID:PDxRGKbtUserDefined0イベント:1ターンの行動をした時に発生するイベントとして定義
Alerm0:1ターン分の行動を見せるためのタイマー(再帰はしない)
objEnemy:全ての敵オブジェクトの親
objZako1〜n:それぞれのユーザ定義イベント(UserDefined0)にターンごとのアルゴリズムを記述
だいたいの流れは
プレイヤー行動決定→全敵にUserDefined0発生→全敵が行動を決定→それぞれの行動を描画(ビュー外なら結果だけ)
→行動の結果を反映→最初に戻る
主人公オブジェクトが1ターン分の行動を決定するたびに以下のコードも実行
with(objEnemy){event_user(0);}
この時点で敵も味方も動いてないけど全ユニットの行動は決まってるので
ビュー内なら移動や行動アニメーションも見せる(Alerm0をONにしてゴニョゴニョ何かする)
UserDefined0で決定したアクションに従って移動や行動のアニメーション描画
ビュー外なら結果だけ反映(座標に直接ジャンプしたりパラメータだけ変更したり)
厳密にやるならビュー内に侵入してくるタイミングだけ多少デリケートにコーディングしないとダメ
でも面倒だからビュー外であろうが境界線の近くなら上記処理に振り分けてしまったほうが楽かも
0171名前は開発中のものです。
2008/07/07(月) 07:50:41ID:Er6IyJrwパスの使い方を教えていただけないでしょうか。5.3です
0172名前は開発中のものです。
2008/07/07(月) 10:31:24ID:Rye0/4Uvまず「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()関数をどぞ
0173名前は開発中のものです。
2008/07/07(月) 13:12:20ID:0oCVVzY6ソースはないけど……
0174名前は開発中のものです。
2008/07/08(火) 15:07:42ID:w93aKpMp遅れましたがありがとうございます。
0175名前は開発中のものです。
2008/07/11(金) 15:45:47ID:3T+5hIa7オブジェクト自体が光っているような表現をしたいのですが
イマイチやりかたが分かりません。
AfeterEffectとかでいうグローみたいな表現がしたいです。
環境はGM7でレジストしてあります。
0176名前は開発中のものです。
2008/07/12(土) 14:05:25ID:03hji2U+既に使われているライセンスってはじかれてしまった…
どうすれば・・・orz
0177名前は開発中のものです。
2008/07/12(土) 16:10:08ID: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 のアンインストール後、
再インストールしてもその状態になるから注意です。
0178名前は開発中のものです。
2008/07/12(土) 16:20:43ID:u3M0JlwI上の文中にもそういうことが書いてありますので、
GM7を購入されたのなら適当にアレンジしてくださいです・・・
0179名前は開発中のものです。
2008/07/17(木) 00:02:23ID:Oo/SM1Ep背景を縮小した画像にし、スコープのアイコンが重なった場所だけ元のサイズに戻す、というのはどうすれば良いでしょう?
そもそも画像を縮小表示出来るのでしょうか?質問ばかりで申し訳ありませんがよろしくお願いします。
0180名前は開発中のものです。
2008/07/17(木) 21:29:15ID:/JbdlJ3v四角い領域でよければ色々と手はあるが、丸くしたいとかだったらサーフェイス一択だな。
> そもそも画像を縮小表示出来るのでしょうか?
とりあえずはバージョンによる。
0181名前は開発中のものです。
2008/07/18(金) 19:31:51ID:WqsSplQ2申し訳ありません、バージョンは6です。
出来れば丸くしたいのですが、難しそうですし四角でも構いません。
背景と同時にその背景にいる敵オブジェクトも縮小、拡大したいのです。
0182名前は開発中のものです。
2008/07/18(金) 21:13:39ID: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])を
スコープに合わせて動かしてやればいい。
0183名前は開発中のものです。
2008/07/23(水) 14:55:27ID:JbMdXvhr以前からこのエラーに悩んでます。
使用しているのはGamemaker6.1Aです。
毎回製作を進めるとこのエラーが起きる人がちらほら出てきます。
自分の環境では起こったことが無く、また自分よりもスペックの高い人でも
このエラーが起こることもあるようで、原因が特定できずに困っています。
0184名前は開発中のものです。
2008/07/23(水) 18:57:15ID:7Xl6aY+A原因不明だからこそUnexpected errorなわけだけれども
経験的に言うと、でかいグラフィックスがあるとかでメモリ不足になっているか
Createイベントなどゲーム開始前のところにエラーがあるかのどっちか。
環境によって出たり出なかったりということだと前者の可能性が高い。
もしそうだったら極力Preload外すとか、外部リソース使うようにしてみたらどうかな。
0185名前は開発中のものです。
2008/07/23(水) 19:03:17ID:JbMdXvhrうーん、でもpreloadは全部外してあるし、
自分のPCのメモリは1.5Gなんですが、
2G超のPCでもエラーが起きているケースもある模様・・・悩。
0186名前は開発中のものです。
2008/07/23(水) 23:25:06ID:6M8uaVJP・変数の値の計算が異様に大きい数値になったりしている
・インスタンスを生成時、同時に破棄の命令もしている
・生成時に衝突イベントでごにょごにょ
とかの時でも原因不明のエラーがよく出るね。
シューティングでホーミングのショットを撃っている時にもなった。
0187名前は開発中のものです。
2008/07/26(土) 18:51:42ID:3aZInE48ドキュメント見る分にはselfにチェック入れればいいみたいなんですが、より良い速度で自分がかっ飛んでいってしまうのです・・・。
ttp://www1.axfc.net/uploader/He/so/123585.zipにアップしてみましたが、画像が選り抜きの流用なので、なので、違反なら削除します。
どうしたものでしょうか・・・
0188名前は開発中のものです。
2008/07/26(土) 19:48:55ID:3aZInE48要はパンチした相手を吹き飛ばしたいのです。
ttp://www1.axfc.net/uploader/He/so/123606.zip
エラーがあったので修正しました。一応説明するとボタン3で腕生成、ボタン1押しっぱなしでチャージした速度で腕が斜めに飛んでいきます。
パスはyoyoです。
0189名前は開発中のものです。
2008/07/27(日) 12:30:50ID:jZNgq52V相手を吹き飛ばすには、自分のスピードを相手に与えてやればいい。
自分側のCollisionイベントでやるなら
other.hspeed = hspeed;
other.vspeed = vspeed;
相手側のCollisionイベントでやる場合は立場が入れ替わる(自分がotherになる)から
hspeed = other.hspeed;
vspeed = other.vspeed;
のようになる。
0190名前は開発中のものです。
2008/07/28(月) 00:21:09ID:qT4QHlYG0191名前は開発中のものです。
2008/07/28(月) 20:06:10ID:Q9pdWDQ9おおーっ!!ありがとうございます!!
オブジェクト別に設定しなければならないのですね。
stepイベントでcheck コリジョンを使ってやってみたら反応なしでした・・・。
0192名前は開発中のものです。
2008/07/28(月) 20:21:36ID:OrZq3/Gb要は、「殴った相手を吹っ飛ばす」とするか「殴られたら自分が吹っ飛ぶ」とするか。
どちらも同じ結果が出る。つまり片方で十分。別に両方やってもいいけど、片方が無駄になるよね。
0193名前は開発中のものです。
2008/07/28(月) 20:23:53ID:OrZq3/Gb0194名前は開発中のものです。
2008/07/28(月) 21:54:47ID:uk2OCtlGGamaMakerで外部のファイルを読み込むにはどうしたらいいのでしょうか?
GameMakerのver7です。日本語版のver6のヘルプを見て、<file_text_open_read(fname)>
を色々いじってみたのですが、できませんでした。
またBulletML4GM.DLLというプラグインを使ったことのある方がいましたら、
BML_LoadBMLFileで行うBulletMLファイルを読み込むという方法を教えてください。
0195名前は開発中のものです。
2008/07/31(木) 00:13:59ID:eckrADRs遅くなりましたがありがとうございます。
View0とView1の設定は出来ました。
ですが(view_xview[1], view_yview[1])と(view_xport[1], view_yport[1])というのをどうすれば良いのか分からないのです。
スコープのオブジェクトに関する何かの座標に入れるのでしょうか?
申し訳ありませんが何方か教えては頂けませんでしょうか
0196名前は開発中のものです。
2008/07/31(木) 00:58:45ID:t+mxlfepとりあえずスコープの座標と同じにして動かしてみて
そうすれば何となく仕組みがわかるから適当に+αして調整する。
基本的に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);
0197195
2008/07/31(木) 01:25:05ID:eckrADRsレスありがとうございます。
もしかして(view_xview[1], view_yview[1])という入力欄があるのでしょうか?;
0198名前は開発中のものです。
2008/07/31(木) 01:48:43ID:t+mxlfepview_xview[1] = x;
view_yview[1] = y;
0199195
2008/07/31(木) 02:14:47ID:eckrADRs此方低脳な物で・・・いまいちどういう事だか理解出来てません;
http://www.uploda.org/uporg1577619.zip
この様になっているのですが座標指定が解らず適当な事をしております
とりあえずオブジェクトのコードで
view_xview[1] = x;
view_yview[1] = y;
を入れてみましたが間違ってるようです
0200名前は開発中のものです。
2008/07/31(木) 22:01:23ID:YwgqYDQL有難うございます。
読み込むファイルは作っているゲームと
同じところに保存しておけばいいんですか?
0201名前は開発中のものです。
2008/07/31(木) 22:13:33ID:t+mxlfep流れてて見えん。
サンプル作ってみたけど座標変換が案外めんどくさい件について
ttp://www1.axfc.net/uploader/File/so/9117
0202名前は開発中のものです。
2008/07/31(木) 23:15:28ID:eckrADRsおお、ありがとうございます。
まさに私が求めていた物です。何度も何度も本当にありがとうございました。
0203名前は開発中のものです。
2008/08/02(土) 21:26:50ID:PyhBkTjg悪魔城ドラキュラのように、しなる鞭を表現するにはどうすれば良いでしょうか。
0204名前は開発中のものです。
2008/08/04(月) 02:57:32ID:vO+Y6NBD特に考えずに7にしちゃっていいでしょうか。
過去の遺産を活用するため、6にしといたほうがいいでしょうか。
0205204
2008/08/04(月) 03:21:04ID:vO+Y6NBDttp://gamemaker.main.jp/modules/articles/article.php?id=19
を作ってみた。
昔のとは言い回しがちょこちょこ違うけど、どれも問題なく発見できるな。
0206194
2008/08/04(月) 17:13:18ID:MNtmNm76(fname)にファイル名を入れたんじゃだめなんですか?
それと読み込むファイルはどこに保存しておけばいいのでしょうか?
0207名前は開発中のものです。
2008/08/04(月) 21:33:43ID:hTqrWaBF文字列は引用符でくくる
× file_text_open_read(test.txt)
○ file_text_open_read("test.txt")
そういう問題でなかったら、何をしてどううまくいかないのか
きちんと説明してくれないと困るよ。
実際に使ったコード貼るなりエラーメッセージ貼るなり。
ファイルの場所は、原理的にはパスちゃんと指定すればどこでも可。
パスって何?というレベルだったら素直にゲームと同じ場所に置いとけばいい。
>>204
5→6でけっこう大きく変わってるけど、6→7はほぼ完全互換。
大きなところでは、6であった精度バグが7では直ってる。
(かわりに再現性低い正体不明のバグがいくつか出てるみたいだけど)
細かいところで色々強化されてるし、総合的には7でいいと思う。
0208206
2008/08/05(火) 14:08:09ID:7PHkksrL引用符でくくってませんでした。
それと説明が下手ですいません。
以後気をつけていきたいと思います。
0209名前は開発中のものです。
2008/08/06(水) 06:59:52ID:e0Lc+IfTほかのオブジェクトやドロゥ、ビューよりも前に表示したいのです。
0210209
2008/08/06(水) 07:00:36ID:e0Lc+IfT0211206
2008/08/06(水) 17:33:23ID:q0Kkjdvgというエラーが出てしまいます。
エラーの原因と解決法がわかる方教えていただけませんか?
http://www1.axfc.net/uploader/File/so/9353
0212名前は開発中のものです。
2008/08/06(水) 21:12:23ID:8PxMb9eXオブジェクトのdepthをうんと小さくする。
depthは負の値にもできるので-999999とかにするとよい。
「ビューよりも前」ってのは意味がわからんけど
複数のビューを使ってるなら、番号の大きいビューが上に重なって描画される。
>>211
よくある要因については>184参照。
ゲーム開始前にエラーが出てるケースなら、
最初のルームの前にダミーのルームを一つ入れてやることで
本当のエラーメッセージを確認できる。
なんかtekiオブジェクトが呼んでるBML_localUPDATEでエラーが出てるから、
初期化の順番の問題ではないかな。
たぶんtekiの初期化(BML_SetBMLCtrl)が
kanriの初期化(BML_Init)より前に呼ばれてるので失敗してる。
0213212
2008/08/06(水) 21:21:49ID:8PxMb9eX・複数のオブジェクトがCreateイベントを持っている場合、
どれが先に実行されるかは不定
・Game StartやRoom StartはCreateより*後*に実行される
ということに注意する必要がある。
今回のケースだと、tekiを最初からルームに配置せず
他のオブジェクトから時間を置いて生成させればいいと思われる。
一般的には、タイトル画面を作っておいて
BML_Initみたいな「他の何よりも先に必要な初期化」は
タイトル画面で済ませてしまうというのが確実。
0214209
2008/08/07(木) 00:10:10ID:JeoCPzcWビューよりも前というのは現在作ってるゲームではビュー0の中にビュー1とビュー2を表示させてます。
ビュー2の方はズームで表示させてるので普通のオブジェクトはそこを通過するとズームされてしまいます。
ですのでそのビュー2よりも前面に、つまりズームの影響を受けないオブジェクトを作りたいのです。
説明が下手で申し訳ありません。
0215名前は開発中のものです。
2008/08/07(木) 02:02:35ID:ED5p3ZS0その状況だと、もう一つビューを作って重ねるしかないんじゃないかな。
ルームを広げて、余った領域をビュー3用の内容として使うとか。
0216209
2008/08/07(木) 09:28:36ID:JeoCPzcW私は>>195さんじゃ無いのですが、勝手に>>201さんのサンプルを弄らせて貰ってるのでいまいちビューの使い方に慣れていません。
ルームの一部分を表示してる様なのでルームの大きさを弄ってみたりしたのですがどうも上手くいかず・・・。
こんな感じなのですがob_2が中央付近の四角内でも拡大されない様にしたいのです。
http://www1.axfc.net/uploader/File/so/9374
0217名前は開発中のものです。
2008/08/07(木) 12:57:56ID:ED5p3ZS0ob_2が見当たりませんぜ旦那
特定のオブジェクトだけ拡大されたくないなら、逆にそいつを縮小描画する手もある。
drawイベントの中で
if (view_current == 2) {
//draw_sprite_extで縮小描画
}
else {
//draw_spriteで普通に描画
}
0218名前は開発中のものです。
2008/08/07(木) 17:21:05ID:JeoCPzcW申し訳ありません、ファイルを間違えてしまいました。
http://www1.axfc.net/uploader/File/so/9388です。
それですとifの時は全体が縮小されてしまうのでは無いでしょうか・・・。
触れてる部分のみを縮小させる事も出来るのでしょうか?
0219名前は開発中のものです。
2008/08/07(木) 21:50:47ID:ED5p3ZS0Drawイベントは各ビューごとに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);
}
ってやってみ。
0220名前は開発中のものです。
2008/08/07(木) 21:57:29ID:ED5p3ZS0両方にまたがって描画されるようにしたい」ってことだろうけど、
ビューごとに座標系が違うからxとyも別々に管理する必要がある。
Drawイベントの頭で
x = window_view_mouse_get_x(view_current);
y = window_view_mouse_get_y(view_current);
と置き換えてやればいけるかな。丸め誤差の関係で微妙にふにゃふにゃするけど。
0221名前は開発中のものです。
2008/08/08(金) 03:41:55ID:t78+5+2+ありがとうございます。
色々と試してみましたが「draw_sprite_ext(sprite_index, image_index, x, y,」で毎回エラーが出て起動出来ないのです。
コードの意味も良く分かってないので直しようが無く・・・
0222名前は開発中のものです。
2008/08/08(金) 12:16:04ID:9r+m0jPtヘルプ見ればわかるけどそれってレジストしてないと使えない関数だから。
エラーメッセージもそう言ってない?
もしレジストしてないんだったら、やっぱりビュー重ねるしかないと思う。
ルーム広げるとおかしくなるって言ってたけど、コードの中で使ってる
room_widthとroom_heightはそのままルームの大きさだから
実際に使いたい領域の大きさに合わせて置き換えてやる必要がある。
あと、背景を指定してると当然下にきたビューが塗り潰されちゃうから
背景はなしにしておいて、別のオブジェクトに必要なビューだけ
draw_background_tiledで背景を描画させるといい。
0223206
2008/08/08(金) 22:55:06ID:Dp8hyxp4有難うございます。
0224名前は開発中のものです。
2008/08/13(水) 16:38:52ID:9U93GJPnありがとうございます。
それにしてもアクション作るのは大変ですね……埋まらず歩くのがいまだに無理です
gamemakerのスプライトエディターが実に便利ですね。痒いところだけ手が届くみたいな。
ものが伸びる動きを考えてみました。
ttp://www1.axfc.net/uploader/He/so/128688.zip
のpliiiです。(キーワード・yoyo)
vmissでは下キーや上キーでロリータがミサイルを打ちますがそれだけです(笑)
生暖かく見守っていただきたくて。ちなみにvmissはproじゃないと動かないと思います。
ところで質問なんですが自分に重なっているオブジェクトの、重なっている範囲だけ透明にする、色を変えるっていうことはできますかね?
ヘンな日本語で申し訳ありません。あ、自分は7のproを使っています。
0225名前は開発中のものです。
2008/08/14(木) 01:58:12ID:OGCepjkd0226名前は開発中のものです。
2008/08/14(木) 22:09:11ID:y+Gl/YHWうわあ・・・・・・・・・・かなり時間無駄にしてたきが・・・うわあ・・・・
0227名前は開発中のものです。
2008/08/14(木) 22:10:41ID:SEYmkdw0どんな感じなのかkwsk
0228名前は開発中のものです。
2008/08/14(木) 23:19:00ID:SyKT2EHYバージョンはどれがいいのでしょうか?
パソコンでゲームを作った事はありません。
やっぱり日本語化できる5,3Aがいいでしょうか?
0229名前は開発中のものです。
2008/08/14(木) 23:59:01ID:fWCjSQKb最新バージョン用の日本語辞書ファイルがこのスレにあがってたよ
0230名前は開発中のものです。
2008/08/15(金) 01:40:43ID:YYg607kjパッチ作成、それまで手書きだったからな
まさかdiffで簡単にできるとは
0231名前は開発中のものです。
2008/08/15(金) 14:49:00ID:05Tah5Ziレスどうもです。
今このスレ全部見てきたんですが・・・
最新バージョンって7,0ですよね?
探しても見つからないです・・・
どこにあるのでしょうか?
0232名前は開発中のものです。
2008/08/15(金) 15:15:52ID:oWA1flsm英語でしか表示出来ず、今まで文字毎のスプライトとオブジェクトを作って表示してたのですが
スプライトとオブジェクトの数が凄い事になってしまいました。
0233名前は開発中のものです。
2008/08/15(金) 21:17:31ID:b4foDt54そんな時こそ非公式情報サイトで配布してる日本語描画スクリプトですよ
0234名前は開発中のものです。
2008/08/16(土) 15:12:50ID:phIiQvcL弾を跳ね返す盾をチュ食っているのですが、
あらかじめグローバル変数を決めて、
instance_positionでぶつかってきたオブジェクトの速度を調べ、グローバル変数に代入して
一定以上ならとび道具として速度を反転させる、というつもりで掻いてるのですがうまく言ってるのかどうかもわかりません。
あと大砲とか撃ったときの反動ってどういう現し方がありますかね?
自分はアラームで速度を半分にして反転させて……というのを繰り返してやってるんですが……あんまりスマートじゃないですよね?
0235名前は開発中のものです。
2008/08/16(土) 17:05:03ID:59E6GChr衝突相手はotherで参照できる(ただしCollisionイベント内のアクションでのみ)
反動の件はイマイチやりたいことが理解できん
撃った反動で射撃方向とは逆方向に砲身が吹っ飛んだ後、ゆっくり元の位置に戻るってことかな
読んだ感じだと反動というより振動って感じだろうか
それと余談だけどゲーム設定などを除いてグローバル変数は極力使わない方がGMっぽいかもよ
もともとのオブジェクト指向的な作り方を徹底した方が色々と管理しやすいと思う
具体的には
×神の視点に立って弾が跳ね返るのを見守る→ぶつかったらボールの方向を変えてやる
○弾オブジェクトに「盾に衝突する」とか「跳ね返る」という振る舞いを教えておく→あとはボールに任せる
○盾オブジェクトに「弾が衝突する」とか「跳ね返す」という振る舞いを教えておく→あとは盾にまかせる
3番目のは他オブジェクトのプロパティを弄ることになるから少し気持ち悪いけど1番目のよりは分かりやすい
HSPとかBasicの経験が長い人なら逆に1番目の方が分かりやすいかもしれん
0236名前は開発中のものです。
2008/08/20(水) 18:29:52ID:iPH66y54RPGの水面みたいな。
0237名前は開発中のものです。
2008/08/20(水) 19:25:06ID:Rn6yFU9D(手動で同じ場所にタイル配置するのが大変なら、
ルーム開始時にコードでコピーする手がある)
・タイルが使っているイメージ自体をbackground_assignで入れ替える
(荒技だしパフォーマンス的にもおすすめできない)
・あきらめてスプライト+オブジェクトを(ry
ざっと思いつくのはこんなところかな。
0238名前は開発中のものです。
2008/08/20(水) 19:43:07ID:iPH66y54アニメーションが20枚もあるんで、やはり最後の方法しかないかな……。
ありがとうございました!
色々試してみます
0239名前は開発中のものです。
2008/08/21(木) 12:45:05ID:G8dr1p1s遅くなりましたがありがとうございます。
こんな便利な物があったのですね
0240名前は開発中のものです。
2008/08/22(金) 01:37:31ID:OJ1IYSd5変数の計算用のオブジェクト
{
global.image_num+=1
if global.image_num>20{global.image_num=0}
}
水面のオブジェクト
{
image_index=global.image_num
image_speed = 0
}
こんな感じで出来そうだけどどうだろう
0241名前は開発中のものです。
2008/08/22(金) 04:20:26ID:mbzREpFoオブジェクトで描画する分には問題ないので……
わざわざありがとうございます
0242名前は開発中のものです。
2008/08/22(金) 18:34:03ID:M3lU0P0b保存したexeを展開したりとかできたりする?
0243名前は開発中のものです。
2008/08/23(土) 03:36:04ID:CfFt4xoCそんな事は止めて下さい
0244名前は開発中のものです。
2008/08/23(土) 20:25:33ID:KXs72kwh基本的に、データを抜き出してどうこうっていうのはご法度。
0245名前は開発中のものです。
2008/08/24(日) 17:57:02ID:MJZApYif各キャラにライフを設定して常に各キャラの下にバーを表示して起きたいのです。
0246名前は開発中のものです。
2008/08/24(日) 19:27:30ID:wkT+Zen90247名前は開発中のものです。
2008/08/24(日) 21:17:25ID:T5dkUX6n自分で答えを言ってる!
オブジェクトごとにライフを設定すれば良いだけよ
まず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が増減した時だけ数秒だけ表示する、とか
0248名前は開発中のものです。
2008/08/24(日) 21:47:18ID:MJZApYifありがとうございます。
GM6なのでコードとかは良く分からないのですが・・・頑張ってみます
0249名前は開発中のものです。
2008/08/24(日) 22:35:27ID:T5dkUX6nもちろんGameMakerはマウスでアクションを選ぶだけでもゲームは作れます
(例えば上のレスの内容はVarableアクションやDraw系アクションを使えば同じことができます)
なので無理に使う必要はありませんが簡単かつ便利なので少しずつ覚えていくと後々役に立ちます
GMLは比較的オーソドックスな言語なので将来他のプログラムで製作する時にも理解の助けになると思います
はじめは教材やサンプルが少なくて泣けてくると思うけど頑張れ!
0250248
2008/08/25(月) 06:32:19ID:bHYCWqjAなんとかHPを表示する事が出来ました。本当にありがとうございます。
二度も申し訳ないのですが敵と当たった時に誰のライフがどらくらい減るか、というのはどうすれば良いのでしょうか?
0251名前は開発中のものです。
2008/08/26(火) 19:09:24ID:8PREyaa3セレクトしたキャラクターのオブジェクトを戦闘用の別ルームに出現させるにはどうすれば良いでしょうか?
キャラクターセレクトのルーム内のオブジェクトをキャラデータ以外消去して
セレクトマップにマップを構成するオブジェクトを直接置いて行く・・・という風なのならなんとか出来たのですが
それだと物凄く面倒で新しく追加するのがとても大変です。
0252名前は開発中のものです。
2008/08/26(火) 20:42:28ID:KqN2Dkl3既に解決してましたらスルーしてください
上の方で書いたオブジェクトに防御力と攻撃力を追加し衝突するとダメージを受けるようにしてみます
まず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タブのアクションだけで作ってますね
0253名前は開発中のものです。
2008/08/26(火) 21:06:11ID:KqN2Dkl3単純にグローバル変数を経由して別ルームに情報を渡すというのはどうでしょう
例えば
自キャラの識別番号は「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でも可能かもしれません
ただし管理の容易さや再利用性などを考えるとルーム管理オブジェクトを別に作った方が便利そうです
0254名前は開発中のものです。
2008/08/26(火) 22:53:57ID:8PREyaa3ありがとうございます。
つまりキャラアイコンをセレクトした時、変数に任意のキャラ識別番号を入れて
他ルームで識別番号によって呼び出すオブジェクトを変えるという感じでしょうか?
難しいですが大体分かるような気がします。
変数はルームを越えても大丈夫なんですね
0255名前は開発中のものです。
2008/08/26(火) 23:05:57ID:3+A0dz+L0256251
2008/08/27(水) 18:07:00ID:JyCTdSQ7コード「global.plyaerID=1」と入れたのですが
他ルームで「if(global.playerID==1){instance_create(20,10,OB_1)}」のようにしたのですが
ルーム移動した瞬間にエラーが出てしまいます。
また、「global.plyaerID」というのもコードの一種なのでしょうか?
「global.plyaerID2」みたいにしてはいけない物なのですか?
0257251
2008/08/27(水) 18:13:46ID:JyCTdSQ70259名前は開発中のものです。
2008/09/04(木) 22:36:49ID:4hJjzvVJ5のサンプルがうまく動かないんですよね……
記述をみるかぎりポリゴン作るのがめちゃくちゃ楽そうなんですけど。
PCのスペック不足は自覚しているので、もし4より格段に便利ならPC買い換えようと思ってるんですけど……
どうでしょうか?
0260名前は開発中のものです。
2008/09/08(月) 07:25:08ID:VEQWn8iAグローバル変数を使うのは悪いこと!
みたいに教育受けてきた者は
グローバル変数にはアレルギーがあるだろう
0261名前は開発中のものです。
2008/09/11(木) 19:18:27ID:px4WAX7ARPG等のセーブにも耐えられるものなのだろうか……
0262名前は開発中のものです。
2008/09/12(金) 14:57:50ID:WTW/QyVX素材などの作成時間は除いたとして
0263名前は開発中のものです。
2008/09/12(金) 16:36:54ID:Es/bcu2J素材の制作を考慮しないのなら、基礎を組むのにはあまり時間かからないと思う。
でも、攻撃のあたり判定や、敵の吹っ飛び方、攻撃の連携など難しい所もいくつか。
0264名前は開発中のものです。
2008/09/13(土) 21:33:52ID:pOLwDEz8回るところまでは出来たのですが
オプションが2つの時は180度あけて、3つの時は120、4つの時は90度
とゆうように自機の周りのオプションの間隔を均等にするには
どうしたらいいのでしょうか?
0265名前は開発中のものです。
2008/09/13(土) 22:17:09ID:y3l90inF0266名前は開発中のものです。
2008/09/14(日) 00:18:40ID:gN9mQ7cXここからがんばれ
0267名前は開発中のものです。
2008/09/14(日) 11:14:40ID:A6sMZm51オプションを4つ作りたい場合は
4種類のオブジェクトを作る必要があるんですか?
それとも1種類のオブジェクトを4つ作るだけでできますか?
0268名前は開発中のものです。
2008/09/14(日) 12:29:14ID:gN9mQ7cX各オプションに自分が何番目のオプションか教えてやる方法もあるけど、
このケースだと配列使って自機に全部管理させた方が楽。
今どうやっているのかわからんからあくまでも一例だけど
/* 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);
}
0269名前は開発中のものです。
2008/09/14(日) 13:21:59ID:y4Lx9aKy1.生成時にinstance_numberで自分が何個目かを記録
2.ついでに現在オプションが何個あるかを把握する
3.上で把握した数を全てのオプションに教えてやる
4.現在のオプション数、自分が何個目か、この2つの情報から位置を修正する
修正のタイミングや必要になる情報は同じだけど
3と4の「全てのオプション」を制御する部分が268氏の方法より面倒
・コード記述欄の右上チェックボックスでObjectを選んで全てのオプションインスタンスに通知する方法
・オプションが増減するタイミングでユーザ定義イベントを発行して全ての(ry
・ヘルプに載ってる方法、つまりinstance_id配列を使って全ての(ry
自機側は全く管理しなくて良い代わりにオプション側が同じかそれ以上に面倒そう
しかもどの方法もオプション自身のアクションとして記述するとややこしくなる
と、色々考えてみたけどやはり268氏のやり方が管理しやすいです
0270267
2008/09/14(日) 16:35:01ID:A6sMZm51オプションの間隔が均等にならずにオプション同士が
くっついてしまいます。均等にするにはどうしたらよいのでしょうか?
http://www1.axfc.net/uploader/File/so/11043.ttf
↑実際のファイルをUPしました。
0271名前は開発中のものです。
2008/09/14(日) 18:31:03ID:gN9mQ7cX0272267
2008/09/14(日) 23:14:48ID:A6sMZm51おかげさまで成功しました。
0273名前は開発中のものです。
2008/09/15(月) 09:18:36ID:+qgjZ47xこれはどういうことでしょうか??
0274名前は開発中のものです。
2008/09/15(月) 10:20:24ID:jDWWXeXPゲームに使われてるフォントのことなら
GM6以降ならレジストしてユーザ製拡張機能を導入しないと日本語表示はできませんぜ
コードエディターに使うフォントということなら
なぜか一部のフォントが使えずにGMデフォルトのArialが選択される
例えばLucidaSansUnicodeは反映されるけど、LucidaConsoleは反映されない
これはレジストしても変わらん
0275273
2008/09/15(月) 10:34:38ID:+qgjZ47xフォントの選択画面でいろいろ試してみてもほとんどの英語フォント
はarialとまったく同じフォントになってしまいます
(wordやexcelではちゃんと使えるフォント)
0276名前は開発中のものです。
2008/09/15(月) 11:41:06ID:jDWWXeXPすまん伝わらなかったかな
レジストするだけじゃ表示できないよ
日本語表示DLLの詳しい導入方法や使い方はwikiを読んでみて
0277名前は開発中のものです。
2008/09/15(月) 12:05:43ID:H1a8iGGWフォントに反映されない(Arialの字体のまま)ってことじゃないの?
上で言ってる「LucidaConsoleは反映されない」というのが
フォントの選択でも起こっていると。
この件で文句言ってる人あまり見ないから、環境によるのかもしれないけど。
たぶんフォント指定する際にCharsetがSHIFTJISあたりになってるから
日本語文字の含まれるフォントしか反映されないと思われる。
GM側の問題だからバグ報告あげて直してもらうか、
自分でスプライト化して表示するしかないんじゃないかな。
上で紹介されてる日本語表示DLLでもできると思うけど。
0278名前は開発中のものです。
2008/09/15(月) 12:10:54ID:+qgjZ47x説明下手でした
自分が描画したいのは日本語ではなく英語です
日本語はすでに非公式サイトからスクリプトを導入しています
例えば自分がDLしたStarcraftフォントをインストールしました。
それはexcelなどではちゃんと使えるのにいざGMで使おうと思うと
Starcraftフォント表示されるのになぜか中身がArialと同じになってしまうのです。
0279名前は開発中のものです。
2008/09/15(月) 12:12:32ID:+qgjZ47xすみません
その通りです
0280名前は開発中のものです。
2008/09/15(月) 12:25:34ID:P1NOywnZオブジェクトが指定した範囲内にあるかどうか判断するにはどうしたらいいですか?
0281名前は開発中のものです。
2008/09/15(月) 12:50:01ID:jDWWXeXPやっと意味が分かった
見当違いのレスすまんです
GM7になっても直ってないということは日本語環境に特有のバグかもしれないね
>>280
if(y < room_height/2)
{
// ルームの上半分にいる時の処理
}
より厳密に判定したいなら↓このあたりを参考に
sprite_height スプライトの縦幅
room_height ルーム全体の縦幅
view_height ビュー全体の縦幅
0282名前は開発中のものです。
2008/09/15(月) 14:15:05ID:Z9WHzemZフォントの問題は、フォントリンク機能(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で配布する分には問題ないと思います。
0283名前は開発中のものです。
2008/09/15(月) 15:26:51ID:tvN7d6yWそれは自分の環境以外でも正常に動作するのでしょうか。
(他人のレジストリを弄らせるわけにはいかない)>>534
0284282
2008/09/15(月) 16:44:01ID:E4MKDW7Wそして、ゲームをソースの状態で配布する場合、
相手側もレジストリを変更しなければ反映されません。
ですが、実行形式で配布する場合は、実行ファイル自体にフォントが埋め込まれるため、
環境を変える必要はありません。
自分の環境で、フォントリンクさせた環境で作った実行ファイルを
フォントリンクを解除した環境で実行しても、フォントが正常表示されたので、
自分の中では、そう結論付けてます。
0285名前は開発中のものです。
2008/09/16(火) 14:10:35ID:JDKv6UBR内容は……
・GM7使用
・出来るアクションは棒人間が左右に移動、Zでジャンプ
・棒人間は停止、移動、ジャンプ上昇、ジャンプ下降のアニメが左右ある
・下に地面がある時に、左右キーを押すと左右歩きアニメ
・下に地面がある時に、左右キーを離すと左右停止アニメ
・vspeed-10(ジャンプの初速)で上昇、vspeed0.5(落下の初速)で下降アニメ
このまま試したら、ジャンプから着地したときに下降アニメのままだったので
地面に触れたら停止アニメに変わるよう設定をしました。
完成した!と思ったら、今度は左右押したまま着地(着地後そのまま横移動)をしたら、
停止アニメのまま移動する問題が発生…
ならば、着地時に左右キーを押しているか押してないかで分岐させればいいのでは?と考え
if an expression keyboard_check(ord'right')is true
↑これを地面との衝突イベントに左右分組んでみたのですが
うまく作動しませんでした…。
何か良い解決策はないでしょうか?
すごく初歩的なことかもしれませんがアドバイスをお願いします。
0286名前は開発中のものです。
2008/09/16(火) 18:38:05ID:2x1IGPqIアクションゲームでは定番の話題だけど方法が色々あるから具体的に答えにくいな
「こうしたら解決」というアドバイスは難しい話題だけど勘で答えてみる
意外と気づきにくいのは衝突イベントの発生タイミング
×ぶつかった瞬間に1回だけ発生する
○触れてる間は常に(毎フレーム)発生する
つまり地面に立ってる時は常に衝突イベントが発生してる
例えば、
衝突イベントに停止アニメを強制するアクションを書いてしまうと
左右への歩行アニメは発生しない
(地面に立ってる=常に衝突イベント発生=常に停止アニメ)
解決策は色々あるけど一例を
地上にいる/空中にいる、などキャラクターの状態を変数で表しておく
1.「空中」から着地したら停止アニメ発動&状態を「地上」にする
2.ジャンプしたら「地上」から「空中」に入れ替える
3.「地上」にいる状態で地面と衝突しても停止アニメは発動しない
何かの参考になれば幸い
0287名前は開発中のものです。
2008/09/16(火) 18:59:33ID:wc/bCpqZ衝突イベント使わずにステップイベント使ったら??
もしy+1に床オブジェクトがあったらvspeedを0にして
もしvspeedが0だったら停止アニメするとか…
0288285
2008/09/16(火) 20:41:11ID:JDKv6UBR>>287様
早速ステップイベントで試してみたところ、ステップごとに常に
足下をチェックするため、地上にいるときは停止アニメのみに
なってしまいました。
>>286様
ステップイベントで足下をチェックして、地面がある時は重力が0になるようにしています。
たぶん、これで衝突イベントの連続発生は回避できていると思います。
地上→垂直ジャンプまたは、ジャンプ後左右キーを離す→着地
この場合は地上で停止アニメになります。
その後左右キーを押せば問題なく移動アニメになります。
地上→ジャンプ→左右キーを押したまま着地して移動
この場合は、着地後に停止アニメのまま左右に移動します。
一度左右キーを離し、再度押すと移動アニメに変化します。
地面衝突よりも左右キーを押した時に移動アニメに変化するのが問題…?
う〜〜ん…変数を使ってもう少し試行錯誤してみます。
0289267
2008/09/17(水) 01:00:40ID:fciLO00k複数あるオブジェクトの中で1つだけを消すことって出来ますか?
option[count] = instance_create(x, y, obj_option);
count += 1;
の逆でcountを1減らして
countが最後のやつを消そうと思ったのですが
他のオブジェクトから他のオブジェクトをCreateできても
廃棄はできないのですか?
ヘルプを見てもそれらしきものは見つかりませんでした。
0290名前は開発中のものです。
2008/09/17(水) 01:28:48ID:+iHp1HAAインスタンスを消すための関数はinstance_destroy()。
ただこいつは「自分自身を消す」関数なので、GMではちょっとトリッキーですが
with文を使って「消したいインスタンスに関数を実行させる」必要があります。
with (option[番号]) { instance_destroy(); }
0291267
2008/09/17(水) 06:27:15ID:fciLO00k早速やってみます。
0292名前は開発中のものです。
2008/09/17(水) 16:50:11ID:3ZsvlK2wこれはどういう意味でしょうか??
0293267
2008/09/17(水) 18:36:14ID:fciLO00k色々と設定を変えながらやってみたのですが
自分ではどうしてもエラーを無くす方法がわかりませんでした
http://www1.axfc.net/uploader/File/so/11187.ttf
現物をupしました。どなたか教えていただけませんか?
0294名前は開発中のものです。
2008/09/17(水) 18:47:37ID:+iHp1HAAそれは != と同じで「等しくない」という演算子。
ちなみに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] です。
0295267
2008/09/17(水) 20:35:59ID:fciLO00kそしてすいませんorのあとを書き忘れてました。
0296292
2008/09/17(水) 21:25:35ID:3ZsvlK2wありがとうございます
そんな演算子があったなんて驚きです
0297名前は開発中のものです。
2008/09/25(木) 18:58:23ID:ePV3MaT70298名前は開発中のものです。
2008/09/25(木) 19:20:38ID:g090BAj9もっとシンプルなものから……と思ってゼルダ風に挑戦中
何か1つ完成させたいな〜…
0299名前は開発中のものです。
2008/09/25(木) 20:51:49ID:dGYbhKuz下らないアイデアでも作ってみようかって気になれる
FLASHゲーのようなシンプルで即効性があって馬鹿っぽいものが作りやすい(モチベ的な意味で)
今作ってるのはダウンタウン熱血行進曲のパクリ
全24人(CPU操作)を同時に出して殴り合いのカオスを眺めてるだけのゲーム?らしきもの
某FPSのBOT戦を眺めてるときに思いついた
無理矢理どこかのジャンルに分類すればライフゲームの一種になるんだろうか
ゲームの目的と遺伝的アルゴリズム的な何かを加えたら少しはゲームになるかもしれない
しかしゲームにしようと思うと自ずと既存の何かに似てくるから困る
0300名前は開発中のものです。
2008/09/25(木) 23:26:48ID:q3MsUpLj課金版欲しいなぁ
0301名前は開発中のものです。
2008/09/26(金) 03:12:23ID:sE3W1GIEやらなくていいと思うよ
いずれGameMakerを離れて自作するときに面倒になる
0302名前は開発中のものです。
2008/09/28(日) 18:10:00ID:LS/ACw4Rview機能によって表示されている画面の左上の座標を返す関数があったとおもうんだけど
誰か覚えてない?
HPゲージの表示場所に使うんだ
0303名前は開発中のものです。
2008/09/28(日) 20:13:19ID:uhIOXa5a5と6以降で名前が違うから気をつけるんだ
0304名前は開発中のものです。
2008/09/28(日) 21:17:06ID:LS/ACw4Rありがとう。すごく助かった
0305名前は開発中のものです。
2008/09/29(月) 18:56:28ID:UJys+BvP接触中は↑キーでy方向に-32移動出来る様にして、接触中のジャンプも可能にしたいです。
操作キャラのジャンプ条件はy方向1にソリッドオブジェクトがある時ですが、
この条件に当てはめなくてもソリッドオブジェクト上にいる時と同じ様にジャンプ出来れば良いです。
よろしくお願いします。
0306名前は開発中のものです。
2008/09/29(月) 21:40:35ID:TA0YzXK0D&D使ってるなら「If thre is an object」アクション、GMLならplace_meetingでチェックできる。
0307名前は開発中のものです。
2008/09/29(月) 23:26:55ID:UJys+BvPありがとうございます。
こんな便利なアクションがあったのですね。
お陰で触れてる間に↑キーで梯子を上る事も出来ました。
ですが上った後に静止する方法が分かりません。キャラに重力を設定してあるので落ちていってしまいます。
重力を設定したキャラを空中で静止させるにはどうすれば良いのでしょうか?
何度も質問すみません。よろしくお願いします。
0308名前は開発中のものです。
2008/09/30(火) 00:47:31ID:YIigZYPbチュートリアルを参考にして作ってるならおそらく
Stepイベントの中に「足下がfreeでなければ重力を0にする」
という処理があるはずなので、そこにも下に梯子があるという
条件を追加すればいいかな。
0309名前は開発中のものです。
2008/09/30(火) 10:28:05ID:gaxEls3Hありがとうございます。
その通りにやったのですが問題がありまして・・・。
歩いて接触し、↑キーで上れば空中で静止する事が可能になったのですが
ジャンプしながら接触したり、落ちながら接触すると止まりません。
http://www1.axfc.net/uploader/He/so/143051.zip&key=gm6
こんな感じです。何処か間違ってましたでしょうか?
0310名前は開発中のものです。
2008/10/01(水) 21:47:12ID:Fc7yZooq触れたら止まるって仕様だと、接触中でもジャンプできるって仕様と
食い合わせが悪い気がするけどな。
0311名前は開発中のものです。
2008/10/01(水) 23:12:59ID:1MeHwIPfありがとうございます。
見事に梯子っぽくなりました。が、やはりジャンプは出来ないようです。
0312名前は開発中のものです。
2008/10/01(水) 23:35:57ID:dOI1qd/B梯子を昇っているかの処理を初めの方にやって、フラグで処理するようにやりなおしてみたら?
毎step時に梯子に接触してるか?
触れている 梯子フラグA = 1(ON)
→ 触れていない 梯子フラグA = 1(ON)
梯子の所で上キーを押した
→ 梯子フラグB=1(ON)
梯子フラグON時 → 重力・vspeed 0 にし、上下ボタンは上下移動(vspeed 10とか)に設定
0313名前は開発中のものです。
2008/10/01(水) 23:39:24ID:dOI1qd/B毎step時に梯子に接触してるか?
触れている → 梯子フラグA = 1(ON)
触れていない → 梯子フラグA = 0(off)、重力(vspeed=元値)ON
・・・伝わったらいいなこの説明。
0314名前は開発中のものです。
2008/10/02(木) 17:09:40ID:JaYkkaptありがとうございます。
フラグを使って色々やってみたのですがジャンプは出来ても空中で静止出来なかったり
空中で静止出来てもジャンプは出来なかったりとどうも完璧にはなりませんでした。
まだ色々試してみますが、もしよろしければ>>309のサンプルに付け加えて頂ければ幸いです。
0315名前は開発中のものです。
2008/10/03(金) 14:39:18ID:ZrsFoNA50316名前は開発中のものです。
2008/10/03(金) 16:46:41ID:uDeRDVYO0317名前は開発中のものです。
2008/10/05(日) 04:52:05ID:H1cq3pc2BGMをつけるとき、楽曲を自分で用意するとしても、何処からか借りてくるとしても、
そのファイル形式について知りたいのです。midiとかmp3とか。
できれば、そのBGMをどう再生しているのかも知りたいです。
midiなら最初から入ってるsound_playで再生できるけど、oggならbGMスクリプトとか使ったり。
0318名前は開発中のものです。
2008/10/05(日) 13:06:42ID:Fn418VgV0319名前は開発中のものです。
2008/10/05(日) 20:02:29ID:4niTijZC0320名前は開発中のものです。
2008/10/08(水) 15:16:57ID:RDU/YXQBありがとうございました。
参考にさせていただきます。
0321名前は開発中のものです。
2008/10/11(土) 18:30:28ID:J25bobba0322名前は開発中のものです。
2008/10/11(土) 22:42:26ID:VYtC5Q29それは画面を完全黒で塗りつぶすということ?
それとも、半透明の黒(変な表現だな)で暗闇を作りたいってこと?
どっちにしろ、レイヤーを変更して一番前に表示するようにしてみたら?
0323名前は開発中のものです。
2008/10/12(日) 19:20:19ID:0LPSWnKh画面を完全に黒で塗りつぶしたいのです
0324名前は開発中のものです。
2008/10/12(日) 20:59:20ID:WCmVlsh40325名前は開発中のものです。
2008/10/12(日) 23:04:23ID:0LPSWnKhなるほど、ありがとうございます。盲点でした・・・。
0326325
2008/10/12(日) 23:27:26ID:0LPSWnKhdraw_rectangle(x1,y1,x2,y2,false)の座標1(x1,y1)はルームの左上(0?)かと思いますが
座標2(x2,y2)はどう指定すれば良いのか悩んでおります。
(0,0,room_heigh,room_width,false)ではどうも違うようなのです。何が間違っているのでしょうか?
0327名前は開発中のものです。
2008/10/13(月) 01:58:15ID:AHWrAmb7本体のバージョンは?
0328名前は開発中のものです。
2008/10/13(月) 01:59:44ID:KOVLXVwd0329名前は開発中のものです。
2008/10/13(月) 03:38:00ID:RgqatT8r>>328の言うとおり、widthは横、heightは縦。
(ついでにいうとheightのtも抜けてるが)
黒い長方形が一切見られないのなら:
1) drawイベントで実行している?
2) depthを一番小さくしてる?
0330名前は開発中のものです。
2008/10/13(月) 10:30:18ID:v588R7se>>329
ありがとうございます。色々とスペルやら間違っていたようですね。
コリジョンイベントで実行していました。
本当にありがとうございます。
0331名前は開発中のものです。
2008/10/17(金) 21:27:46ID:dQ5aX5kq弾オブジェクトの数の上限を自機と各オプションそれぞれに設けたいと
思っているのですが、どうすればいいのかさっぱり見当がつきません。
どうすれば良いのでしょうか?
0332名前は開発中のものです。
2008/10/17(金) 22:05:41ID:0ROIYotH3発上限ならAが3以下の時だけ発射出来るようにするとか。
0333331
2008/10/18(土) 17:21:01ID:QonRt8Q9instance_number()を使うことしか頭に無かったので助かりました。
ありがとうございます。
0334名前は開発中のものです。
2008/10/23(木) 23:03:49ID:URptRMn40335名前は開発中のものです。
2008/10/25(土) 07:24:32ID:YPdYk3/P以前に誰かが作ったサンプルなどありませんでしょうか?
0336名前は開発中のものです。
2008/10/29(水) 07:41:16ID:B8z2rdZkどうすれば良いのでしょう?
普通に戻ってしまうとroom1の最初の状態に戻ってしまいます。
よろしくお願いします。
0337名前は開発中のものです。
2008/10/29(水) 08:29:55ID:vZOkTfmY0338名前は開発中のものです。
2008/10/29(水) 12:12:52ID:SJ76vo7y原因は不明だけど突然GameMaker製のゲームだけ、やたら重くなるという現象が起きました(バージョンは5.3、6で確認)
他のゲームやアプリケーションは何も問題なかったのですが、GameMaker製のゲームにだけ異常が起こります。
60fpsのゲームが常に40fps以下になったり。
再起動で治りました。
0339名前は開発中のものです。
2008/10/29(水) 21:20:06ID:Jov+JTxtShow the origin and &bounding box in the sprite image
&Run games in secure mode, not executing programs
セキュアモードで実行する, プログラムを実行しない
これらの訳を手伝ってほしい
0340名前は開発中のものです。
2008/10/29(水) 23:19:05ID:CygkE/Te翻訳作業されてる方かな
英語を訳すというより実際にどうなるのかを日本語で説明した方が初心者には有り難いかも
もちろん訳し方の好みがあると思うのであくまで私の意見ということで
スクリプト編集の際、エディタ下部に関数/変数の候補を表示する
スプライト編集の際、スプライトの原点と当たり判定を示す矩形を表示する
0341名前は開発中のものです。
2008/10/29(水) 23:23:51ID:CygkE/TeもしかしたらGMそのものを日本語化するのが目的なのかな
そうだったらこんな冗長な文面は適さないですよね
ということで私のレスは忘れて下さい
0342名前は開発中のものです。
2008/10/29(水) 23:29:37ID:/+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(当たり判定が実行される領域) の訳は
全体的に統一した方がよいと思う。
0343名前は開発中のものです。
2008/10/30(木) 20:15:39ID:I528xhb9>>342
ありがとうございます。
言われている通りGMそのものを日本語化しております。
E-WordChanger を使っており、その辞書ファイルに記述しています。
ツールチップは1つ試してみましたが、1度成功したと思っていても
次に表示すると日本語されていませんね。
中にはソフトを使ってもclipできない文章もありますね。
そちらも翻訳表示できません。
うまく表示できている人は居られるのでしょうか?
0344名前は開発中のものです。
2008/10/31(金) 18:19:41ID:YzRs5LJ8キャラとか画像が移動すると、ぶれるようなかすれるような感じでぼやけてしまいます。
移動させてもちゃんと写るようにするにはどうしたらいいですか?
room speedは30です。
0345名前は開発中のものです。
2008/10/31(金) 18:27:01ID:YzRs5LJ80346名前は開発中のものです。
2008/10/31(金) 19:54:07ID:oCQp1Dl8原因は色々ありうるけど同じく色々と試してみたと思うので意外な罠を一つ
俺がハマったのはモニタのリフレッシュレート
うちの環境だと60hzなら普通に動くけど75hzだと掠れる
恐らく環境依存だしGMとは関係ない部分だから気づきにくい
0348名前は開発中のものです。
2008/10/31(金) 22:53:49ID:YzRs5LJ8モニタのリフレッシュレートとGMの設定とroom speedをそれぞれ60にしてみたけど、やっぱりブレれぅ・・・
液晶だからかな・・・
そしてUse synchronization avoid tearingって意味がわかんない?
エキサイト翻訳したら「同期が引き裂くのを避ける使用」って出る。
tearingを単体で調べても引き裂くとか猛烈とかな意味がでる。
同期するのを避ける?
0349名前は開発中のものです。
2008/10/31(金) 23:26:30ID:mSkOAagkさすがに俺も液晶よ
上で書いたケースとは別件かな
もし他の方がGMで作った実行ファイルでも同様の症状が出るなら相性かもしれない
ドライバ、グラボ、モニタ、DiretXのバージョンなどなど
0350名前は開発中のものです。
2008/11/01(土) 00:14:21ID:cP7CN4r/avoid tearingで「破綻することを回避する」
tear=破ける,裂ける,破綻する
Use synchronization avoid tearingで「破綻を回避するための同期(シンクロ)を使用する(使用せよ)」または「同期を使用して破綻を回避する」
例文:
Synchronization - Avoiding Frame Tears=フレーム落ちを回避するための同期
0351名前は開発中のものです。
2008/11/01(土) 00:21:55ID:cP7CN4r/「コマ落ち(フレーム落ち)」させるか「処理落ち」させるか、
フレームレート,リフレッシュレートの同期処理に悩みますよね
0352名前は開発中のものです。
2008/11/01(土) 01:01:45ID:7HKnkTOGティアリングというのは、画像が横に動いているときに
画面の途中でちぎれたように上下がずれて見える現象。
それを避けるためにモニタの信号と同期をとるというのが設定の意味。
画像がぶれるというのとは関係ないと思う。
仮にビューを使っている場合、やりようによっては
更新タイミングの違いでぶれて見えることがあるけど
そういうことはない?
0353名前は開発中のものです。
2008/11/01(土) 22:42:10ID:spXHa3/Oブレるというかぼやけるというか、ブラーが掛かるというかにじむというか・・・
左が普通で、右が動かしたときに見える感じ
http://rainbow2.sakuratan.com/img/rainbow2nd43406.png
0354名前は開発中のものです。
2008/11/01(土) 23:05:00ID:8D1Uiuplなるほど
スクリーンショットを撮って見ると輪郭パリパリで綺麗なのに
実際に動いてるのを肉眼で見てるとボヤけて見えるってことかな
モニタの応答速度が遅いのが原因、に1票
0355名前は開発中のものです。
2008/11/02(日) 00:23:31ID:UAtrgN40どうなんでしょう
0356名前は開発中のものです。
2008/11/02(日) 00:46:03ID:q7EnVYah応答速度なのかな・・・
どこで調べたらわかるんだろ。
0357名前は開発中のものです。
2008/11/02(日) 01:10:29ID:q7EnVYah0358名前は開発中のものです。
2008/11/02(日) 07:11:53ID:Uttx017t1)新しくテスト用のゲームを作ってみる
問題が起こる最低限の環境のゲームを作ってみる。
もし問題が起こらなければ、元のゲームのどこかに問題がある。
元のゲームを放置して新しく作り直すもよし、元のゲームの問題点を探すのもよし。
もし問題がまだ起こるのなら↓
2)他の環境で調べてみる。
テスト用でもいいから作ったゲームを公開して、同じ現象が起こるかチェックしてもらう。
それでも問題が起こるのなら、アルゴリズムに問題がある可能性大。
もし問題が起こらないのなら、PCの環境のどこかに問題がある。(相性とか?)
0359名前は開発中のものです。
2008/11/03(月) 11:05:08ID:0rtuC+vp画面の左右と上にはみでないようにするにはどうすればいいでしょうか。5.3です
0360名前は開発中のものです。
2008/11/03(月) 19:13:01ID:HnYJ+ws5if (y>room_height) instance_destroy
で出来るはず
0361名前は開発中のものです。
2008/11/03(月) 20:24:19ID:SR5b1R59勉強したいんだけど、リンク切ればかりで出来ない英語の勉強するほうが先になりそうな予感
0362名前は開発中のものです。
2008/11/03(月) 21:53:58ID:HnYJ+ws50363名前は開発中のものです。
2008/11/03(月) 22:24:41ID:uwgdwITo日本語の資料はあまり多くないね
サンプルなら質も量も本家フォーラムが一番
ttp://gmc.yoyogames.com/lofiversion/index.php/
GMLなら↑のScripts[GML]
多少英語が読めてGMLを理解してる人なら宝の山だと思う
英語が読めなくてもGMLの理解があれば漁ってみる価値はある
かなり話題がそれるけどFlex&ActionScriptのサンプルも結構面白い
ECMAScript系の言語仕様、イベントドリブン、OOP(的である)、と共通点が多い
出来上がるのがFlashだからASに乗り換えるわけにはいかないけど御参考までに。
0364名前は開発中のものです。
2008/11/03(月) 23:43:47ID:SR5b1R59検索中スルーしてたかもなんで、後で、探してみます。
>>363
本家フォーラム倦厭してたけど、チラ見しただけでも大量の投稿で、まさに宝の山っぽいです。
自分は英語あまり読めませんが(;´Д`)
Action Scriptのほうはちょっと気になってたんですが、そっちも後で見てみることにします。
御二方情報ありがとうです
0365名前は開発中のものです。
2008/11/05(水) 14:09:40ID:lQ1u3lWL途中でこれらを切り替えるにはどうしたらいいのでしょうか?
0366名前は開発中のものです。
2008/11/05(水) 22:26:45ID:XjRGW3LYヘルプ見たら「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;
}
0367名前は開発中のものです。
2008/11/05(水) 22:31:36ID:XjRGW3LY直接backgroundのインデックスを指定すれば良いみたい
if( background_index == 0 )
background_index = 1;
else
background_index = 0;
0368名前は開発中のものです。
2008/11/05(水) 23:58:10ID:lQ1u3lWL0369名前は開発中のものです。
2008/11/06(木) 00:01:14ID:XjRGW3LYただのサンプルだから書く場所にもよるよ
毎フレーム呼び出したらそういう状態になるかも
例えばglobal mouse left pressedあたりに書けば
マウス押すたびに切り替わるはず
0370名前は開発中のものです。
2008/11/06(木) 00:07:30ID:lQ1u3lWL一応初めからマウスがクリックされた時というところでそれをやっているのですが…
0371名前は開発中のものです。
2008/11/06(木) 00:36:35ID:RiMAKIfyGMLではarray[0]とarrayは同じものを指すから、それは単に
background_index[0] に一番最初に作ったbackground(id=0)と
2番目(id=1)を交互に割り当ててるだけ。
>366の方法が正解。
0372名前は開発中のものです。
2008/11/06(木) 01:04:58ID:eaSEHczR「AがBを追い抜いたとき」と「BがAを追い抜いたとき」で別々に音を流したいのですがどうすればいいのでしょう。
上とは同じ内容で違う質問なんですが
試しにA.xがB.xの値の-1になった時〜などという風にIf a variabels has a valueでやってみましたができませんでした。
これではだめなのでしょうか?
0373名前は開発中のものです。
2008/11/06(木) 07:42:34ID:LwQsPuS+単純に
Aのx座標 < Bのx座標の時は音楽Bを流す、
Aのx座標 > Bのx座標の時は音楽Aを流す。
で良いんじゃないかな?
0374名前は開発中のものです。
2008/11/06(木) 09:00:15ID:5MtmmVSK例えば、
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離れたところにいる瞬間に音を鳴らす、という判定がかなりシビアな表現になる。
0375名前は開発中のものです。
2008/11/06(木) 12:01:46ID:5MtmmVSKCreate eventで、prev_difference = 0;とでも書いておけば大丈夫。
これを書いておかないと、Step内でチェックしようとしたときに「prev_differenceって何なんだ?」というエラーを返されるはず。
0376名前は開発中のものです。
2008/11/07(金) 07:12:26ID:pXoTyMbWxpreviousってのはその名の通り、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を追い抜いた瞬間
}
0377名前は開発中のものです。
2008/11/07(金) 07:28:10ID:pXoTyMbWHelpの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フレームの差だけど。
0378名前は開発中のものです。
2008/11/07(金) 17:17:30ID:q2bnCqzi0379名前は開発中のものです。
2008/11/07(金) 22:09:04ID:dk+hUO84非公式サイトから導入した日本語描画スクリプトですがフェード機能をつけるには
どうしたらいいですか?
drawアクションじゃないからalphaも使えないし……
0380名前は開発中のものです。
2008/11/08(土) 00:32:27ID:ralVUMsSこんなので良ければ参考にして下さい
http://www1.axfc.net/uploader/File/so/13426.zip
0381名前は開発中のものです。
2008/11/08(土) 01:05:10ID:YaFy+mMy敵が複数いる場合でも同じ処理で大丈夫何でしょうか?
0382名前は開発中のものです。
2008/11/08(土) 01:17:10ID:tiFPEnIw敵が複数居る場合、固定値ではなく、数値を増やしていって
最後に行動したモンスター(キャラ)が変数を1に戻すとかどうかな?
0383名前は開発中のものです。
2008/11/08(土) 01:24:43ID:YaFy+mMy減ったり増えたりした時の処理が難しそうでどうも…
0384名前は開発中のものです。
2008/11/08(土) 01:29:31ID:tiFPEnIw敵が死ぬ時にglobal変数(A)を減らす。
ある程度の数値になったら敵を追加。
追加されたらglobal変数(A)が増えるようにしておく。
チェックするのはBegin stepでもEnd stepでもお好きな時にどうぞ?
0385名前は開発中のものです。
2008/11/08(土) 08:00:14ID:usFb+U0s0386名前は開発中のものです。
2008/11/08(土) 21:37:31ID:YaFy+mMy遅れましたがありがとう
もう一つ質問したいのですが、「最初にランダムでどこか一方向に動く、動く前にもし行きたい方向に壁があれば残り三つからランダムでどこか一方向に、そこにも壁があれば〜」という判断をさせたいのですがどういったアクションを組めばいいのでしょう?
0387名前は開発中のものです。
2008/11/08(土) 21:38:58ID:HeJ/3Xvwttp://d.hatena.ne.jp/Gemma/20070816
これとか読んでみ。目から鱗な考え方だ
0388名前は開発中のものです。
2008/11/08(土) 21:51:38ID:tiFPEnIwうっは、ブログの方のファイル落とそうとしてgamDEVという事に愕然とした!
誰かファイルもってないかなorz
0389名前は開発中のものです。
2008/11/08(土) 21:56:28ID:tiFPEnIwまず処理したい系統を図式にして処理したい順番を考える。
質問の例だと、
1) 移動方向をランダムにチェック
(壁があるかないか判断)
2) 壁がない?
Y→移動
N→1)に戻って処理しなおし
とするか、
1) 敵Aの周りの壁を総当たりチェック。
2) 移動できそうな場所を記憶。
3) その中からランダムに選択
とするか、が浮かぶ。
もちろん他にも良い手段はあると思う。
0390名前は開発中のものです。
2008/11/08(土) 22:45:40ID:YaFy+mMyやはりそういうのにはGMLが必須なのでしょうか…
0391名前は開発中のものです。
2008/11/08(土) 22:52:26ID:tiFPEnIwそっちのほうが楽ではあるけど、
処理の中に処理ってのは普通配置でもできるからガンバッ!
Control の Other にある、start/End block や else などをうまく組み合わせてみよう。
0392名前は開発中のものです。
2008/11/09(日) 14:58:27ID:XXK2SOj2上の凄いな。考えもしなかった
0393名前は開発中のものです。
2008/11/09(日) 18:30:25ID:iQ0fQqMkexecute piece of code だとエラー吐くのに
同じ内容をscripts に記述すると直るのは嫌らしい仕様だ
0394よこしま
2008/11/09(日) 20:36:08ID:+tEv1BfMレジスト版の場合、以下の方法でフェードインできます。
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の値を代入します。
0395379
2008/11/09(日) 23:09:10ID:37vptB7Qそうか…そこいじれば良かったのか…
ありがとうございます…
あと追加で質問なんですが…
文字を左から順番に出していくのに、いつもはstring_char_atなどを使っていたのですが、
mbtextの場合、文字列関数は使えないのでどうしたら良いでしょうか??
0396名前は開発中のものです。
2008/11/09(日) 23:25:02ID:UpE3UCrsそんな「仕様」はないと思うけど
GM7だと、たまに何の変哲もないコードでエラーが出て
同じコード打ち直すとかコピペすると直るという現象が報告されてます
>>395
2バイト文字ならstring_copyで2文字取り出すとか
string_char_atでもう1文字くっつけるとか
0397名前は開発中のものです。
2008/11/10(月) 00:20:09ID:bX5vjmo9そうなんですか・・・お騒がせしました
debuger が落ちる瞬間にアクセス違反が表示されていて
挿入方法で扱いが変わるみたいなのでそういうものかなと思ったんですけど違うみたいですね
0398名前は開発中のものです。
2008/11/10(月) 01:53:38ID:hROa89TY0399名前は開発中のものです。
2008/11/10(月) 02:40:36ID:l3rRgQmHGM6ならfont_add_sprite(要レジスト)してdraw_set_fontしてdraw_text
コード書けるなら文字列に変換して1文字ずつ切り出してdraw_sprite
0400名前は開発中のものです。
2008/11/10(月) 23:05:15ID:xqr6b0iAまず数を文字列化して
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つのスプライトにサブイメージとして入れておく)
0401名前は開発中のものです。
2008/11/10(月) 23:18:31ID:rXjUYemuヘルスや変数を使うと敵全員共通のものとみなされてしまってどうも…
0402名前は開発中のものです。
2008/11/10(月) 23:23:09ID:PA4xWfUd0403名前は開発中のものです。
2008/11/11(火) 03:25:19ID:j6inckL9例えば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)
0404名前は開発中のものです。
2008/11/11(火) 07:21:02ID:gKnNaknY特に敵のヘルスバーを表示する必要はないのですがその時はdrawの部分を省けばいいのでしょうか
0405名前は開発中のものです。
2008/11/11(火) 08:14:23ID:eY/CDP8zglobalじゃない限り普通の変数はそのオブジェクト内のみだから。
0406名前は開発中のものです。
2008/11/11(火) 22:50:05ID:cbXen0Dw0407名前は開発中のものです。
2008/11/12(水) 07:21:33ID:sHnxhObY0408名前は開発中のものです。
2008/11/12(水) 16:13:15ID:4hbBOuzFそれは書き方にもよるけど……。
主人公が敵に攻撃したときと、敵が主人公の攻撃に当たったとき。
状況は同じだけど、どっちのイベントでHPを減らすようにしているのかで変わる。
0409名前は開発中のものです。
2008/11/14(金) 23:03:32ID:izAxC9WD呼び出したオブジェクトのローカル変数にされるのか・・・
ループ用変数が被りまくり\(^o^)/
0410名前は開発中のものです。
2008/11/14(金) 23:20:13ID:Bs1pE8FJvar i
とかやると、iはスクリプト内でのみ有効になる
0411名前は開発中のものです。
2008/11/14(金) 23:40:22ID:izAxC9WDこの仕様ならargumentって要素があんまり意味ないような気がするんだけどなあ
せめてScriptsに隠蔽要素が欲しかった
0412名前は開発中のものです。
2008/11/15(土) 00:09:50ID:HG68xRSCメーカーに勤めてないとなかなかわかりづらい豆知識
リフレッシュレート
よい子のみなちゃんは、60Hzと設定したら
モニタもそのとおりに60Hzでリフレッシュしていると思っているかもしれないが
否!!!!!!!!!!!!!!!!!!
60Hzで設定していても、モニタ側は59.944Hzや58.989Hzなど、
とにかく中途半端な数値でしかリフレッシュしないものがある。
モニタが粗悪品だったり、グラフィックボード(特にRADEON)が悪さをしていることが多い。
そしてこの場合、滑らかに移動しているように見えず、かなりカクカクして見える。
これを直すには、ビデオBIOSの更新やモニタのファームウェア更新しかないので
相当面倒だ。個人で直すことはまず出来ない。
0413名前は開発中のものです。
2008/11/15(土) 05:12:01ID:gZryKwbH今の仕様でいいと思うんだけどな。
0414名前は開発中のものです。
2008/11/15(土) 12:32:10ID:cZlHfE8C(移動させるキーを押す→キャラクター移動→キーを放してもその場で静止せず、ずっと移動し続ける)
どのように行えばキーを放す際に静止するようにできるのでしょうか?初歩的な質問ですいません;
0415名前は開発中のものです。
2008/11/15(土) 13:05:07ID:cZlHfE8C0416名前は開発中のものです。
2008/11/15(土) 14:24:35ID:PB/Zmvn5「変数Aに数値が加算されたとき」という条件を作るにはどのようにすればいいのでしょうか?
0417名前は開発中のものです。
2008/11/15(土) 15:00:10ID:gZryKwbH→1フレーム前の数値よりも今のフレームの数値が大きくなったとき
(>>374-377と同じ考え方)
もしくは、その数値に加算したときに起こしたいアクションを置く(そのまんま)
(変数Aに加算した直後、起こしたいアクションを行う)
0418名前は開発中のものです。
2008/11/15(土) 15:22:11ID:cZlHfE8Cジャンプをさせようとしてジャンプは出来るようになったのですが、今度はキャラクターが地上にいる状態で動けなくなってしまいました。
(正確にはジャンプは出来るが横移動が全くできない状態)
どの様にすれば解決できるでしょうか?
0419名前は開発中のものです。
2008/11/15(土) 16:40:37ID:PB/Zmvn5>>374〜的なやり方で行くと
stepに
difference=LEVEL
difference<prev_differenceのときやりたい処理を行う
End stepに
prev_difference=difference
とこんな風でいいのでしょうか?
0420名前は開発中のものです。
2008/11/15(土) 18:04:15ID:gZryKwbHパニくっているときは、とりあえず適当にいろいろ放り込んでしまいがち。
でも、それは全然解決にならない。詰まったときこそ落ち着こう。
「行き詰ったら原点に返れ」
詰まったらまず、何をしたいのかを明確にする。それから、したいことを分析しよう。
見たところ、レベルが上がったときに何かをしたいようだね。
まぁそれでできなくはないんだけど。……一つ問題を除けば。
この場合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 // 「前のレベル」を今のレベルに更新する。
0421名前は開発中のものです。
2008/11/15(土) 18:04:49ID:gZryKwbH地上にいる間ずっと、地面との接触が起きているのかもしれない。
でも>>414のことも考えると、歩かせるアクションの方にも問題があるのかもしれない。
どこかで「止める」アクションを使っていてそれが影響しているとか。
サンプルが非公式情報サイトかどこかになかったかな……。
サンプルを探してみるのもいいし、GMにexampleとして最初から入っているものがあったらそれを見てみるのもいい。
0422名前は開発中のものです。
2008/11/15(土) 18:08:02ID:PB/Zmvn5なるほど…丁寧にありがとうございます
0423名前は開発中のものです。
2008/11/15(土) 18:39:46ID:cZlHfE8C了解しました。
返答ありがとうございます
0424名前は開発中のものです。
2008/11/16(日) 10:34:59ID:aHkifR23百の位と十の位と一の位を獲得するにはどのようにしたらいいのでしょう。
0425名前は開発中のものです。
2008/11/16(日) 12:24:09ID:uIhvcRmv>400あたり参照
計算で出したいなら、一の位は10で割った余り、すなわち number mod 10
十の位は10で割ってから一の位をとればいいから (number div 10) mod 10
同じ考えで百の位は (number div 100) mod 10
0426名前は開発中のものです。
2008/11/16(日) 14:19:08ID:aHkifR23簡単に作ることができました!ありがとうございます
0427名前は開発中のものです。
2008/11/16(日) 17:29:30ID:HhlndW4Rその敵Aを数体設置してテストプレイを始め一体を倒したところちょっと経ってから「UNKNOWN variable hp」のようなエラーが出てしまうようになりました。
変数操作も消滅もモンスター内でselfで行っているのですが何か間違っているのでしょうか…
0428名前は開発中のものです。
2008/11/16(日) 18:48:04ID:l0hPwkQ6エラーメッセージでどのオブジェクトのどのイベントの
どのアクションってところまで教えてくれるんだから、まずはそこを見るべし。
そのエラーになる要因はいくつも考えられるけど、それだけの情報じゃ絞りこめん。
> 一体を倒したところちょっと経ってから
その倒したところで何をしてるの? 例えば他のオブジェクトにchangeしたりしてない?
0429名前は開発中のものです。
2008/11/16(日) 18:56:22ID:HhlndW4Rステップで「hpが0以下になったら消滅(死亡)」と言うのを設定しているんですがそれが変数を見失ってるみたいです。
倒したあとは自分がその辺を動き回っているだけでオブジェクト変更などは行っていないはずです
0430名前は開発中のものです。
2008/11/16(日) 19:27:32ID:OWHuy+Yr0431名前は開発中のものです。
2008/11/17(月) 02:32:01ID:TD8Ccrf3イベント自体実行されていないことが考えられる。よくある例としては
・Parentのイベントで変数を定義してるけど、子オブジェクトで継承イベントを呼んでない
・change the instanceでインスタンスを変更するときにイベントを実行していない
また、instance.variable のようにドット付きで変数を参照している場合には
instanceの方が存在してないという可能性もある。
削除されたインスタンスを参照していたり、deactivateされていたりなど。
ただ、話を聞くかぎりではどちらにも当てはまらないみたいだから
原因は他のところにあると思う。
やっぱり実際のオブジェクト情報を見ないと特定は難しいかな。
0432名前は開発中のものです。
2008/11/17(月) 05:45:22ID:GSdqregNそれらのインスタンスで「共有」してる形になっているので
ある一体が消えると変数も消えてしまってる
ってとこじゃないの
インスタンスABCDEで一つの変数を見ていて
インスタンスAが消えたと同時に変数も消え
BCDEが参照できなくなっていると
0433名前は開発中のものです。
2008/11/17(月) 10:24:12ID:JkLZj++k>ステップで「hpが0以下になったら消滅(死亡)」
この辺の実行される順番に問題があると予想してみる。
もしそうだったら、「hpが0以下になったら消滅(死亡)」を、ステップじゃなくコリジョンイベントで実行したら直る、……かもしれない。
0434名前は開発中のものです。
2008/11/17(月) 16:16:23ID:7QGWWpc1stepでマウスの座標に移動させてしまうと、
そのオブジェクトがマウス以外の要因(敵との接触など)で移動した場合も、すぐにマウスの座標に戻ってしまいます。
説明が下手ですみませんが、よろしくお願いします。
0435名前は開発中のものです。
2008/11/17(月) 18:01:40ID:JkLZj++kこれがやりたいことなら、
>そのオブジェクトがマウス以外の要因(敵との接触など)で移動した場合も、すぐにマウスの座標に戻る
これは正しい動作ってことになるよね。マウスの動きに合わせて動いてるんだから。
どういうときにどういう動作をさせたいのか。
やりたいことをもう少し詳しく具体的に考えて。
0436名前は開発中のものです。
2008/11/17(月) 20:03:59ID:qkRbLFEUつまり一定速度でマウスに向かわせたいってこと??
もしそうならpoint_directionを使うといいと思う
0437名前は開発中のものです。
2008/11/17(月) 21:34:27ID:7QGWWpc1>>435,>>436
そうです、それが正しい動作なのです。
ですが私が目指しているのは「マウスの座標に移動する」のではなく「マウスの動きにあわせる」なのです。
例えばマウスを右に動かしたらオブジェクトも右に、マウスの移動量だけ動く。という事がしたいのです。
0438名前は開発中のものです。
2008/11/17(月) 22:07:33ID:PQNNdjbn移動する前にマウス座標と移動したあとのマウス座標を比較するとかで対応とか無理ですか?
0439名前は開発中のものです。
2008/11/17(月) 22:08:05ID:PQNNdjbn0440名前は開発中のものです。
2008/11/17(月) 22:38:22ID:7QGWWpc1ありがとうございます。
何となくやり方は分かりましたがそれをコードで表すにはどうすべきか迷っております。
ちなみにGM6です。
0441名前は開発中のものです。
2008/11/17(月) 23:26:43ID:qkRbLFEUつまり初めはマウスと同じ位置にインスタンスがあって、で何かによってズラされると
マウスに平行して動くってこと??
もしそうなら例えば
ステップイベントでx、y、をマウス座標+global.pos_x,global.pos_yてして
変数の値をコントロールするとか…
0442名前は開発中のものです。
2008/11/17(月) 23:39:43ID:PQNNdjbn>>441
のように、マウス座標取得してウンヌン。
>>420あたりの感じでできますか?
自分もいまいち理解しきれてませんが、
マウスを転がすところがした方向にインスタンスを移動させたいって事だと思います。
この場合、マウスポインタが画面外に出た場合や
さらに移動させようとしてマウスを元に戻した場合など変になりませんか?
純粋にマウスが移動したピクセス値だけを取得する関数ってありましたっけ?
0443名前は開発中のものです。
2008/11/17(月) 23:46:34ID:TD8Ccrf3毎回mouse_x, mouse_yの値を覚えといて
x += mouse_x - (前回の値) とかすればよろし
0444名前は開発中のものです。
2008/11/18(火) 00:19:10ID:0wQt7vmy高度な、「以前の値から勝手に加減して現在位置を割り出す」なんてことはできない。
たいていが
まずマウスの位置をプログラマが取得
更にマウスの位置をプログラマで取得、
その差を自分ではじき出して移動量とする
そんな感じで書かないといけない
一個の関数でポンってできるようなものはあまりない。
0445440
2008/11/18(火) 06:04:44ID:MofBkydOありがとうございます。前回の値を覚えさせておく事で何とか私の思っている通りに出来ました。
マウス座標 - 前回のマウス座標 + 前回のオブジェクト座標 に移動させる事で出来ました。
本当にありがとうございました。
0446名前は開発中のものです。
2008/11/19(水) 15:26:02ID:DeAHgIn+見当たらんのだけど
0447名前は開発中のものです。
2008/11/19(水) 18:07:19ID:4za16kRKターン制に関してはぎこちないながらも何とか完成したのですが、
毎回周囲のマスが開いているか確認→空いているところにランダムに移動だと挙動不審というか妙な動きになってしまいます。
主人公が近くにいるときは追って動く、一本道では後戻りせずなるべくまっすぐ進む、といった動きをさせたいのですが
どのようにアクションを組めばいいのでしょうか。
0448名前は開発中のものです。
2008/11/19(水) 18:19:51ID:ratnEFy2設定項目?
GMのヘルプの
The Game Maker Language (GML)
→User Interaction
→The Joystick
にあるやつじゃなくて?
キーコンフィグしたいってことなら、
グローバル変数でも作ってjoystick_check_buttonを使うといいと思う。
>>447
ターン制の動きができた、と。
んで、状況に応じて動きを制限してやりたい、と?
>主人公が近くにいるときは追って動く
>一本道では後戻りせずなるべくまっすぐ進む
やりたいことちゃんとわかってるじゃないか。
>主人公が近くにいるときは
>>追って動く
>一本道では
>>後戻りせずなるべくまっすぐ進む
こう分けて、もう少し考えてみ?
0449名前は開発中のものです。
2008/11/19(水) 18:31:18ID:ratnEFy2後戻りってのは、前回いたマスに行くことだよね?
0450名前は開発中のものです。
2008/11/19(水) 19:05:35ID:9SobK3CIジョイスティックイベントを探してるんだったら、Mouseの中にある。
0451名前は開発中のものです。
2008/11/20(木) 02:15:20ID:oldAvKXc例えば
top
right
の順だと斜め入力にならない
0452名前は開発中のものです。
2008/11/20(木) 02:43:38ID:JLC+2EzTrightで x += 4 とすれば結果的に斜めに動くことになるけど。
speedとdirection使ってるとか、斜めの時だけ移動量変えたいとかだったら
joystick系の関数を使って判定するコードを書く必要がある。
0453名前は開発中のものです。
2008/11/20(木) 14:33:23ID:xqi/6PvR0454名前は開発中のものです。
2008/11/20(木) 15:13:08ID:gtPmWcjx0455名前は開発中のものです。
2008/11/20(木) 18:09:38ID:/1Y7KoVd0456名前は開発中のものです。
2008/11/20(木) 18:19:17ID:fSCzA9A70457名前は開発中のものです。
2008/11/20(木) 19:40:56ID:xqi/6PvR移動できません
>>455
ありがとうございます。
それも考えたのですが記述が長くなりそうで・・・
「その範囲以外」という指定は出来ないのでしょうか?
0458名前は開発中のものです。
2008/11/20(木) 20:57:48ID:JLC+2EzT「その範囲外」というのなら、黒く塗り潰したサーフェイスの
真ん中をくり抜いてかぶせるという方法があるけど、
どう見ても>454-455の方が簡単だわな。
「移動できません」って意味がわからないけど、
画面の2倍サイズのスプライトの真ん中に穴あけて
穴がちょうどいい位置にくるように動かせばいい。
そんな大きいスプライト、リソースがもったいないというならその通りだが。
「記述が長くなりそう」ってのも、たった4行だべ?
四隅の座標を計算して変数に入れとけば何てことない。
0459名前は開発中のものです。
2008/11/20(木) 21:35:24ID:xqi/6PvRありがとうございます。
確かに見たところ>>455のが最も楽そうですので四つ四角形を作ってみます。
続けて質問で申し訳ありません。
sleepを使うと全てが停止してしまうのですが一つのオブジェクトのみを停止させるにはどうすれば良いのでしょうか?
0460名前は開発中のものです。
2008/11/21(金) 06:23:48ID:8FHkjqBp→backgroundsタブ
にある、Draw background colorのチェックボックスをオンにして、
その下の Color: のボックスをクリックして黒を選択する。
こうすれば、背景色が黒になる。
チェックボックスをオフにすると黒く見えるが、
それは黒ではなく何も塗られていないという状態なので、
上のやり方でいいから一度でも何か色で塗っておくべき。
一つのオブジェクトのみを停止となると、
with (object)
{
}
を使うといい。
移動を停止させたいとなると、
{}の間にspeed = 0;を入れればいいかな。
もしその後でまた動きを再開させたいのだったら、
deactiveやactiveを使うとか、その辺のアルゴリズムはまた考えなきゃいけない。
0461459
2008/11/21(金) 06:58:26ID:sjxyegPfありがとうございます。
その方法は便利ですね。ですが>>459で言う停止、というのはそのオブジェクト自体の働きの事です。
Createで1120ms停止してから移動開始、等です
0462名前は開発中のものです。
2008/11/21(金) 09:04:25ID: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時))にアクションをするようになる。
原理が分かれば応用もできるはず。
0463名前は開発中のものです。
2008/11/21(金) 14:36:04ID:sjxyegPfありがとうございます。
なるほど、それは応用性が高くて便利ですね。助かりました。
0464名前は開発中のものです。
2008/11/21(金) 20:07:21ID:Aa2c/Y3P普通にアラームを使えばいいんじゃ…?
0465名前は開発中のものです。
2008/11/21(金) 22:09:17ID:sjxyegPfアラームってms単位なのでしょうか?
使ってみた所なんかちょっと違うような・・・
0466名前は開発中のものです。
2008/11/21(金) 22:25:03ID:Aa2c/Y3Pアラームは指定のステップ数が来たらイベントを行うのでms単位ではなく
ステップ単位です
何かmsにしなきゃいけない理由でもあったら別だけど基本的な時間をコントロールしたいなら
アラームが一番簡単で分かりやすい方法だから…
0467名前は開発中のものです。
2008/11/22(土) 05:30:20ID:ih+yuernどうしても秒を使いたいのなら、
最初に一度current_timeを使って現在の時刻を取得しておいて、
毎回current_timeを使って、最初に取得しておいた時間から何ミリ秒経過したかを調べる方法がある。
秒単位に拘るのなら↑のやり方があるけど、どう考えてもアラームの方が楽。
0468465
2008/11/22(土) 14:23:55ID:Lvyzb+s5ありがとうございます。
説明しにくいのですがどうしても秒単位じゃないとダメなのです。
>>467
ありがとうございます。
試しに使ってみます。
0469名前は開発中のものです。
2008/11/22(土) 19:42:07ID:q+lYsPmJ(1120msなら 1.12*room_speed)
どちらにしても1ステップ未満の分解能は得られないけどね。
それとも、ゲームが処理落ちしてても実時間に
同期させて動かしたいってことなのかな?
0470名前は開発中のものです。
2008/11/22(土) 21:30:13ID:clFoYfTe本人ではないけど恐らく後者じゃないかな
あえて実時間でフレーム非同期処理っていうとネットワーク関連かも
何れにせよ解決したっぽいので何よりだ
0471名前は開発中のものです。
2008/11/22(土) 21:53:58ID:lm1qIDqX(イメージとしては見下ろし視点での戦車の砲台)
やり方がわからないです。6.0のサンプルはあったのですが
低スペックなのでGameMaker6.0以降は起動できませんでした・・・。
なのでバージョンは5.3Aです。GMLはサンプルなどを参考にして使う程度で
多少は理解できるのですが書けません。
どなたかご教授お願いします。
お手数でなければ5.3AのサンプルをUPしていただきたいです。
よろしくお願いします
0472名前は開発中のものです。
2008/11/22(土) 22:10:27ID:lm1qIDqX自己解決しました 失礼しました
0473名前は開発中のものです。
2008/11/24(月) 13:04:13ID:xHi4CDCdよろしくお願いします。
0474名前は開発中のものです。
2008/11/24(月) 15:27:27ID:oGsKQE880475名前は開発中のものです。
2008/11/24(月) 21:01:38ID:xHi4CDCd0476名前は開発中のものです。
2008/11/26(水) 22:59:16ID:8dk2lxXHコリジョンで特定のオブジェクトでなく「何かに当たった時」という設定はできますか?
今は敵一つ一つに「飛び道具に当たった時アクション」の設定をしているですがどうにも敵の種類が多いので…
0477名前は開発中のものです。
2008/11/27(木) 00:33:24ID:N2ZEFTBaまさにそういう用途のためにあるのがParentと継承のシステム。
適当なオブジェクトを作ってobj_enemyとでも名付ける。
すべての敵オブジェクトでParentをobj_enemyに設定する。
(たしかAdvanced Modeを有効にしないとParentが出てこないので注意)
後はobj_enemyとのCollisionイベントを作れば終わり。
0478名前は開発中のものです。
2008/11/27(木) 06:17:21ID:98IVXa5Q例えばマ○オに出てくる亀。
緑の亀はひたすら歩く。崖で落ちる。
赤の亀は崖で引き返す。
羽の亀は飛び跳ねる。
全ての亀において、踏みつけると甲羅になる
という共通点を持つ。このように何か共通点がある場合、parentが非常に役に立つ。
noko_green
├ noko_red
└ noko_pata
↑のようにparent設定をして、(noko_redでparentをnoko_green、noko_pataでparentをnoko_greenに設定する)
noko_redで崖判別を、noko_pataで飛び跳ねるように設定すればいい。
共通点の「踏みつけると甲羅になる」というアクションを親オブジェクトのnoko_greenから引き継がせることができるため、何度も同じ記述をする必要がなくなる。
0479名前は開発中のものです。
2008/11/27(木) 06:18:17ID:98IVXa5Qnoko_dummy(踏みつけると甲羅になる ゲーム内では使わない)
├ noko_green(移動:遅)
├ noko_red(移動:速 崖で引き返す)
└ noko_pata(跳ねる)
このとき、踏みつけると甲羅になるアクションは、noko_green、noko_red、noko_pataの全てに引き継がせることができる。
このように、共通な部分は全てダミーに置いておき、それぞれのオブジェクトで何が違うのかということだけを考えていけばいい。
0480名前は開発中のものです。
2008/11/27(木) 06:19:32ID:98IVXa5Qこれを使って、
enemy
├ kuri
├ noko_dummy
│ ├ noko_green
│ ├ noko_red
│ └ noko_pata
└ bros_dummy
├ bros_hammer
├ bros_boomerang
└ bros_fire
として、enemyとのCollisionイベントを作ることで、
いちいち緑亀にぶつかったとき、赤亀にぶつかったとき……等と何度も同じ事を繰り返す必要がなくなり、
「敵に接触したとき」とまとめることができる。
0481名前は開発中のものです。
2008/11/27(木) 06:26:01ID:98IVXa5Q次スレ以降のテンプレにでも入れておくと便利かと思って。修正改変等あればどうぞ。
0482名前は開発中のものです。
2008/11/27(木) 07:58:38ID:YVwu6GrPありがとうございました!
0483名前は開発中のものです。
2008/11/27(木) 08:16:46ID:98IVXa5Q「敵が飛び道具に当たったとき」ではなく「飛び道具が壁以外の何かに当たったとき」らしいので
この場合は>>477で書かれている通り、飛び道具のコリジョン相手を「敵」に一纏めにするだけで済む。
以下は「敵が飛び道具に当たったとき」の考え方。よければ参考に。
飛び道具が数種類(ブーメラン、矢、ナイフ)あるとして、敵も数種類あるとする。
このとき、>>480の考え方を2回使う。
enemy
├ enemy1
├ enemy2
└ enemy3
として全ての敵を一纏めにして、さらに
weapon
├ boomerang
├ arrow
└ knife
として、全ての飛び道具を一纏めにする。
enemyもweaponも、中身は空っぽのオブジェクトで構わない。
そしてオブジェクトenemyで、オブジェクトweaponとのCollisionイベントを作ればいい。
こうすることで、「全ての敵において、何か飛び道具に当たったとき」とすることができる。
基本的に、似たものは一纏めにすると便利&効率的&構造上スマート。
0484名前は開発中のものです。
2008/11/27(木) 21:51:29ID:IFIhMc/y例えば本体のステップで
with (obj_boss1_part)
{
direction = other.direction;
image_angle = direction;
}
などとするのですが、曲がるときにパーツの方がプルプルと震えるようになってしまいます。
多分角度がプラスマイナスしてるからだと思いますが何か解決策ありませんか?
0485484
2008/11/27(木) 22:01:43ID:IFIhMc/y本当失礼しました…
0486名前は開発中のものです。
2008/11/28(金) 11:52:47ID:PgkhIyzBやってみて気付いたけど親と子で同じアクション入れると無視されるんだね
例えば、親:クリエイト時に変数aに1を代入、子:クリエイト時にbに2を代入とすると
aが存在しないってエラーになる。
0487名前は開発中のものです。
2008/11/28(金) 13:37:01ID:rNzKqzWh親クラスのアクションを丸ごと使いまわす場合でも明示的なオーバーライドが必要だったはず
GMの場合はCallInheritedEventとかそんな名前のアクション(正式名称はヘルプで確認)
何も意識せずオブジェクト指向っぽくなるのがGMLの巧い所だけど
徹底してOOPL的な書き方しようとすると逆に分かりにくかったりしますね
0488名前は開発中のものです。
2008/11/28(金) 17:05:23ID:23J9ij0MZキーを押している間、変数「jmp」に1ずつ足していき・・・といった感じでやってみたのですが
ジャンプする条件に地面の上にいる事が入っていて、ジャンプはZキーを押した瞬間に行われるので意味がありません。
0489名前は開発中のものです。
2008/11/28(金) 21:07:21ID:bzoft8au押す(pressKeyDown)とパワーを貯めて(経過時間で数値を増加)
離す(pressKeyUp)とジャンプ処理
でどうですか?
0490名前は開発中のものです。
2008/11/28(金) 22:28:28ID:8vGbtbAkスープーメイリオブロ(英語は発音大事)みたいにしたいなら、
単純に押してる間だけスプライトを移動させていけばいいだろ
0491名前は開発中のものです。
2008/11/28(金) 22:38:55ID:Ib5prIDh親のイベントにあって子のイベントに無い物は、自動で子に引き継がれる。
子と同じイベントにある親のアクションを引き継がせる場合、
その起こしたいイベントの中でCall Parent Eventアクション(GML: event_inherited())を使う。
というわけで、>>486の例だと子のクリエイトのbに2を代入した前でも後でもいいから
親のイベントを呼んでやると、子もa=1を持つようになる。
>>488
ボタンを押した時にジャンプの高さを全て決めるのではなく、
ボタンを押してジャンプさせ、ボタンを離した時に、押してからの長さによって「ジャンプの上昇を止めて落下させる」という考え方がどっかで使われていたと思う。
0492名前は開発中のものです。
2008/11/28(金) 22:56:55ID:23J9ij0Mありがとうございます。
その方法は考えてませんでした。物凄く助かります。
0493名前は開発中のものです。
2008/11/28(金) 23:26:08ID:x//721CNfor(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
が出てきます……。根本的に書き方が違うのでしょうか?
0494名前は開発中のものです。
2008/11/28(金) 23:45:40ID:GUH2YmoSwith (all) { // すべてのインスタンスをループ
if (collision_circle(other.x, other.y-120, 120, self, true, true) { // もし範囲内にいたら
// 何かする
}
}
with文の中ではselfとotherの役割が入れ替わることに注意。
0495名前は開発中のものです。
2008/11/28(金) 23:51:13ID:GUH2YmoSということで2行目は
if (collision_circle(other.x, other.y-120, 120, id, true, false)) {
という感じで。
よく考えたら distance_to_point(other.x, other.y-120)<120 とかでも済むわけだけど。
0496名前は開発中のものです。
2008/11/29(土) 00:21:19ID:IHR7UfyXうっほおおお!!!!!
ありがとうございます!!かれこれ一週間ぐらい悩んでたのでスッキリしました!
こんな簡単にいくものだとは……。悔しいですね……;ω;
0497名前は開発中のものです。
2008/11/29(土) 00:23:52ID:cPQXEOUAGMのヘルプ
>The Game Maker Language (GML)
>GML Language Overview
>With constructions
の一番下にある例がまさにそれだな。
with (all)
{
if (distance_to_object(other) < 50) instance_destroy();
}
0498名前は開発中のものです。
2008/11/29(土) 01:08:40ID:IHR7UfyX0499名前は開発中のものです。
2008/11/30(日) 11:51:36ID:oUNmDB7aこのiの値を取るにはどうしたらよいでしょうか?
0500名前は開発中のものです。
2008/11/30(日) 17:50:24ID:8ZPTNF4x例)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の値を取る」の意味が分からん
上の例で言うと、どういうケースでどの値を取得したいんだろう
配列の基本的な使い方が分からないのか
それとも要素からインデックス値を取得する方法かな
0501名前は開発中のものです。
2008/11/30(日) 20:57:30ID:ICPzjhiz単に i を使えばいいだけ。 i に代入されれば、i が取得したい値そのものなんだから
何も難しいことない
0502名前は開発中のものです。
2008/11/30(日) 21:02:36ID:ICPzjhizi さんは、関数の中に入れば自分の持ってる値を提出するしかないからだ。
例えば i さんが 5 の値を持っていて
printf(%d, i);
のような仕事(関数)に従事したとする
なら、printfによって 5 という値が勝手に取り出されるだけ
特に今何を持っているのかを教えてもらう必要はない。
0503名前は開発中のものです。
2008/11/30(日) 21:38:09ID:q/jrPCNZi=5だとするならば、hogeという配列の6番目という事をしめしている。
この書き方がされるまえには必ず、i には何らかの数値が代入されている。
よって、上記の氏たちのような返答でしか答えることができない。
というかjavaでもVBでもCでも何でいいので、プログラムのサイト調べておいで。
0504499
2008/11/30(日) 23:24:15ID: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の値を取りたいのです
長々と失礼しました。
0505名前は開発中のものです。
2008/11/30(日) 23:54:17ID:UwyYLNW70506名前は開発中のものです。
2008/12/01(月) 00:08:59ID:RRq5dBO9の意味が分からん。どういうつもりでそれを書いているのか。
それだと、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文を使うとスマートに書ける。
0507名前は開発中のものです。
2008/12/01(月) 00:21:52ID:LiWv5v7dこれだとすべてインスタンスじゃなくてオブジェクト(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の考え方を使えばすっきりまとまるはず。
0508名前は開発中のものです。
2008/12/01(月) 00:25:03ID:QQgG8mIq4まで数えるので、
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要素全部に右手を代入していることになっている
0509名前は開発中のものです。
2008/12/01(月) 02:36:53ID:dWziD4by辺に端折らずに、それぞれ別個の変数で管理するほうが楽なんじゃない?
基本オブジェクト(胴体)の位置からそれぞれの位置を割り出して
HPなどの共有する値は共有するようにglobalすれば良いだろうし。
0510名前は開発中のものです。
2008/12/01(月) 04:46:27ID:Ekx4hYibfor(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な。
0511名前は開発中のものです。
2008/12/01(月) 05:08:55ID:Ekx4hYibパーツのステップで、obj_partsが作られたときに代入したinst.parts[i]のiの値を使って位置を決めたい。
(と解釈した)
……ってことは、それぞれのパーツから見て、iって変わらないよね?
つまり、右手はいつも右手ってこと。
だったら、作ったときにそのiの値をそのパーツに持たせればいい。
というわけで、パーツが作られたとき、そのときのiの値をnumberという名前の変数としてパーツに持たせてみたのが>>510。
これで、パーツのステップでnumberを使って位置を決めることで、「iを使って位置を決める」というのと同じ動作ができる。
……ところで、base.parts[i]て何。inst.parts[i]ならまだ分かるが。
0512名前は開発中のものです。
2008/12/01(月) 11:26:32ID:Ekx4hYibしかも、よく読んでなかったのにnumberって変数の名前まで一致(意図してません)。
もう少し読もうな、俺。('A`)
0513499
2008/12/01(月) 13:30:41ID:WFVB4NOyではやっぱり配列の[]内の値をとるシンプルな関数などはないんですね…
やっぱり509氏の言うようにそれぞれ個別の変数を持たせた方がよさそうですね
皆さんいろいろな意見ありがとうございました
0514名前は開発中のものです。
2008/12/01(月) 21:04:50ID:LiWv5v7dやりたいことはわかったけど、「配列の[]内の値をとる」なんて自分用語は
やっぱり誰にも通じないぞ。「配列の要素から添字を調べる」とか
もっと簡単に「検索する」とか言うんだ。
配列の検索自体は難しいことじゃない(ループして調べるだけ)。
そういうスクリプトは簡単に書けるし、ds_listなら関数一発でできる。
ただ、君のやりたいこと実現するのに検索なんて必要ない、
もっと簡単に済む方法がいくらでもあるってだけのこと。
0515名前は開発中のものです。
2008/12/01(月) 21:39:31ID:hPo6+q3F0516503
2008/12/01(月) 22:44:50ID:dWziD4byだーかーらー
i を使ってるのはfor文の中でしょ?
でfor文は繰り返す処理する処理で{}の中身を通して処理し、
最後に i++ で i に「+1」するんだ。
for(i=0;i<4;i+=1){中身} は、i の値が4になるまで繰り返す文 なんだ。
ここまではOK?
なので、 i の値はその処理内の実行回数の値である。
i は、そのときの値である。
i にどの数値が代入されてるか調べるには、単に i を見ればいい。
ということだから、プログラムの基本中の基本であり、どっかの解説サイトを見てこいと言ったんだ!!
0517名前は開発中のものです。
2008/12/01(月) 23:04:58ID:VAhzR6SYおちつけwfor文がどうとかではなくて
定数定義とか列挙子みたいなことをやりたいんでしょ。たぶん
GMLで使えないけど
0518名前は開発中のものです。
2008/12/02(火) 02:15:33ID:cOR4nM2XHello world レベルだから
実際、Hello world で使ってる関数の中身を数文字変えるだけ。
だから、そんなことで悩む事自体がおかしいのだ。
おかしいので、「そんなこと悩むわけがない、別のことを言いたいのではないか」
と思うし、実際文そのままの意味で取れば「そんなもん、幼稚園児でも出来るぞ」になるわけだ
言い回しがおかしいと答えも出ない
0519名前は開発中のものです。
2008/12/02(火) 02:21:18ID:cOR4nM2Xなんつうのかな
箱にオモチャを入れました
箱の中身を知る方法ないですか
と聞かれたようなものだ。
開けて見りゃいいじゃねえかよ
箱(変数) を関数に渡す、関数で使うようにプログラムすれば
関数は勝手に箱開けて中身を使う。
それで知ることができる
非常に単純なことだから、悩むなんて誰も思わない。
Cだったら、printfなどの、数字や文字を画面に表示する関数で使って、「見る」だけでいいからだ。
0520名前は開発中のものです。
2008/12/02(火) 10:40:55ID:xezqMnLOとりあえず思いついた方法2つ。どちらもGMを使う。
1)全音停止
sound_stop_all()
↑を使えば全部止めることが出来る。
全部止めれば、「今鳴っているサウンド」を停止することができる。
2)確認→停止
sound_isplaying(index)
↑を使って、再生されているかどうかの確認が出来る。
これを使って戻り値がtrueならsound_stop(index)で止める、という方法。
チェックしたいサウンド分だけループさせることで、「今鳴っているサウンド」をピンポイントで停止させる。
0522名前は開発中のものです。
2008/12/02(火) 14:41:52ID:xRaNmqQGffdshowなどの、1デバイス1デコーダーのデコーダーで見るとわかるが、
音楽鳴るたびにデコーダが増える。
20曲鳴らせば20個のデコーダが用意され、デバイスを閉じても消えないことすらある。
0523名前は開発中のものです。
2008/12/02(火) 17:06:18ID:We5UmkXJお金表示やお金を作ることってできるんですか?(ゼルダで言うルピーみたいな
0524名前は開発中のものです。
2008/12/02(火) 17:25:34ID:Ujq+dWEgグラディウスみたいなのを想像してもらえればわかりやすいと思うけど、
自機の移動がうまくいかない。
上下左右それぞれ押したときにその方向に一定の速度を与え、
離したときにその方向の速度を0にしているんだが、
たまに引っかかったように動かなくなることがある。
急に逆方向のボタン(上と下、右と左)を押すとなることが多い。
ちなみに座標を移動させる場合も同じように引っかかる。
どうやったらもっとスムーズに動くんだろう?
0525名前は開発中のものです。
2008/12/02(火) 20:58:31ID:taOqiXBl変数使えば簡単にできるけど
初心者だったらscoreを流用するのがお手軽でおすすめ。
>>524
GMについてくるサンプルか公式のチュートリアルに
1945っていうシューティングがあるから、見て真似してみれば?
キーを下げた時(key press)と上げた時(key release)で制御してると
複数のキーの上げと下げが干渉してそんな不具合が起きやすい。
単に押している間(keyboard)だけ座標を増減させるようにすればすっきりする。
0526名前は開発中のものです。
2008/12/02(火) 20:59:02ID:UFWpQr+3できます。
お金とか敵とかリンクとかはすべて「オブジェクト」という個体表示で考えます。
敵に当たるとダメージの部分を、
お金に触れると(お金が画面から消え)お金単位が増える。
と置き換えます。
どの言語を使っても考え方は同じになります。
0528名前は開発中のものです。
2008/12/02(火) 22:23:17ID:uu7fmr/mxprevious と ypreviousは >>377の
>・(now all instances are set to their new positions)
これ以降じゃないと値が保障されないのか。ぬかったわ
0529名前は開発中のものです。
2008/12/02(火) 22:42:03ID:ATORRfCZ範囲の求め方が分かりません。
自分のやり方だと先ず、プレイヤーを選択すると
移動範囲が出るようにはしたのですが、
この出し方がinstance_create(x,y,object)
で出しているのですがこの方法だと
どうすれば障害物の処理が出来るのかが分かりません;
もう一回一から作ったほうがいいのでしょうか・・・
説明が下手で申し訳ありません;
0530名前は開発中のものです。
2008/12/02(火) 23:10:09ID:uu7fmr/mゲームにもよるけど障害物の処理ってのは避けて通るとかそういうことかな
具体的な状況がよく分からないかも
どこまで移動できるかだけでいいなら
プレイヤーに移動力のような値を持たせて
平地なら-1 砂地なら-2とかやって移動力がゼロ以上なら指定した場所までいけるとかできるけど
0531名前は開発中のものです。
2008/12/02(火) 23:15:43ID:ATORRfCZ仰るとおりです。
障害物をよけて通れるようにしたいのです。
ネットとかで調べるとそのようなやり方を良く見かけるのですが、
如何せんどう組み込めばいいのか分からず;
もう少しヒントを頂けると嬉しいです。
厚かましくてすみません;
0532名前は開発中のものです。
2008/12/02(火) 23:21:00ID:uu7fmr/mたとえばFEやタクティクスのようにターン制なのか
ポピュラスのようにリアルタイムな感じなのか
マップの構造によっても変わってくるし
ていうかシュミレーション・・・これは恥ずかしい誤字だった///
0533名前は開発中のものです。
2008/12/02(火) 23:24:40ID:ATORRfCZもう少し粘ってみます。
0534名前は開発中のものです。
2008/12/03(水) 00:07:38ID:5ByG7lYo5
1 6
4☆2 7 (星の位置がキャラクターだとして)
3
☆を起点として1、2、3、4を調べ、座標とかかるコストを配列に保存する。
1に起点を移し周囲4マスを調べ、座標とそれまでにかかったコストを保存する。
すでに調べた座標は基本的に記録しないが
1→6 と 2→6のような経路が被る場合、移動コストが軽いほうを保存する。
移動コストが10より小さいものがなくなるまでこの作業を繰り返して
終わったら配列に保存された座標のところを移動範囲として表示すればいいような気がする
FEだったらこんな感じかな
0535名前は開発中のものです。
2008/12/03(水) 02:03:59ID:r0U2/w9u通れないマップチップは、「通れまへんフラグ」を設定しておく
自分と敵との最短経路を弾き出し、その間に「通れまへん」があれば分岐
0537名前は開発中のものです。
2008/12/04(木) 19:42:54ID:COm9ODRQ0538名前は開発中のものです。
2008/12/04(木) 19:51:06ID:wis04ySwゼルダでアイテム画面とかに移動する。というのはRPGのフィールドの位置保存
を使えばできると思ったんだけど、装備した元の位置の主人公のオブジェクト変更
ってできるんですか?
0539名前は開発中のものです。
2008/12/04(木) 20:23:54ID:BFQV7gOy「元の位置の」ってのが何指してるのかどうしたいのかわからないけど
主人公の表示アイテムを変える方法としては、
1)アイテムに固有IDを割り振っておく
2)装備してるアイテムIDの画像を表示する
で、いけるんじゃないかな。
もともと表示するのはIDのアイテムで、アイテムが変わったら画像もチェンジする
アイテムごとに画像を用意しなくちゃいけないのは、そもそも当然のことだしね。
0540名前は開発中のものです。
2008/12/04(木) 20:32:17ID:hYQrGj00GM初級者です。
早速質問ですが、
複数のインスタンスから
一番別のオブジェクトに近いインスタンスを取得したいのですが、
どうすればいいでしょうか。
0541名前は開発中のものです。
2008/12/04(木) 21:33:34ID:BvmV+/Fo質問がややこしくて読み間違えてるかもしれんが
恐らく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);
こんな感じで求められる
詳しい説明や似たような関数はヘルプ参照
0542540
2008/12/04(木) 22:08:30ID:hYQrGj00それです!
ありがとうございました。
0543名前は開発中のものです。
2008/12/05(金) 17:53:46ID:X+fPv7FO助かりました。
ありがとうございます!
0544名前は開発中のものです。
2008/12/06(土) 17:02:27ID:DxqncoX6何度も何度もすみません。
敵が全滅したり
味方が全滅したりすると
変数の参照先がなくなり
エラーになります。
解決策はないでしょうか?
0545名前は開発中のものです。
2008/12/06(土) 17:49:42ID:6jDgYk9y存在するなら参照する。しなかったら何もしなくていい。
instance_exists(obj)を使えば存在するかどうかが、
instance_number(obj)を使えば個数がわかる。
0546544
2008/12/06(土) 18:50:41ID:DxqncoX60547名前は開発中のものです。
2008/12/06(土) 19:09:11ID: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になるごとに変動してしまうので初めから固定で番号を与えることはできません。
長文かつ分かりにくい文章だと思いますがどうすればよいか分かる方ご教授願います…
0548名前は開発中のものです。
2008/12/06(土) 21:06:12ID:eG4vVrw21. 主人公とすべての敵のインスタンス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に戻す
とすればいい。
0549名前は開発中のものです。
2008/12/06(土) 21:34:34ID:uswEIGEyちょっと難しそうですが頑張ってみます。
0550名前は開発中のものです。
2008/12/06(土) 21:44:15ID:Gr9J9Ja2あえて別の方法を挙げると
ターン情報をグローバル変数ではなく各ユニットに持たせるようなやり方
ユニットは配列に格納しておきそれぞれにターン値を設定する
unitList[0].turn = 15; // ターン値の初期値
unitList[0].speed = 7; // 素早さ
毎ターンごとに全ユニットのturnプロパティに素早さパラメータを加算
unitList[0].turn = 15 + unitList[0].speed;
turnの値が100以上になったユニットがいれば彼のアクティブターン
いなければ素早さ加算を繰り返す
魔法や呪文で素早さやターン順が変わるゲームではこの方法も分かりやすいかもしれない
0551名前は開発中のものです。
2008/12/06(土) 22:33:58ID:uswEIGEystepの部分を入れてみたところ色々なところが構文エラーになってしまったのがどうしてでしょうか…
obj.enemyなどの部分はちゃんとオブジェクト名に直しました(そこは関係なかったみたいですが)。
0552名前は開発中のものです。
2008/12/07(日) 01:43:46ID:Hva4nw+k>>548の場合私が設定したglobal.aやbなどは無くても大丈夫なのでしょうか?
0553名前は開発中のものです。
2008/12/07(日) 15:34:40ID:BlF8unb/自分のオブジェクトと敵のオブジェクトの間に
壁オブジェクトがあったら弾を打たず、
無かったら撃つという風にしたいのですが・・・
回答はしたいときで構いません。
よろしくお願いします。
0554名前は開発中のものです。
2008/12/07(日) 16:47:56ID:iNdKCD5tヘルプでcollision_line関数を調べてみましょう・・・
0555553
2008/12/07(日) 18:01:29ID:BlF8unb/0556名前は開発中のものです。
2008/12/10(水) 20:08:22ID:Pwqi4CyR今こんなゲームを作っています
クリックしたとこに緑のやつが移動
近くに赤いやつがいたら勝手に撃つ
左上はレーダー
ですが、
なぜか赤いやつの処理だけが遅いのです。
緑のほうが、数も処理数も多いはずです。
赤が一匹だけでもかくかくになってしまいます。
見ていただけたらうれしいです。
0557名前は開発中のものです。
2008/12/10(水) 20:09:11ID:Pwqi4CyRパスは fedora8 です
0558名前は開発中のものです。
2008/12/10(水) 20:27:44ID:edz1Bxdlもし赤い奴がなければこれ以降が無視されるので軽い
衝突判定だとか索敵を毎ステップやると当然重くなるよ
あと他の人に見てもらうならコメントか何かはつけるべし
0559名前は開発中のものです。
2008/12/10(水) 20:56:57ID:nqQ/Z5/R0560名前は開発中のものです。
2008/12/10(水) 22:32:55ID:eRvJFMy9image_speed アニメーションの速度
image_index アニメーションの何コマ目を表示しようとしてるか
image_number アニメーションの長さ(総コマ数)
ヘルプの同じページに3つとも例文付きで載ってます
徐々にアニメーションを早くしたり、特定のコマで停止したり
状況に応じて動的にアニメーション速度を変更できます
0561名前は開発中のものです。
2008/12/11(木) 08:01:09ID:0wlARFf+ルームのfpsを高くするだけで効果はあるのでしょうか?
0562名前は開発中のものです。
2008/12/11(木) 08:47:48ID:BGyF9xSSステップの処理速度を早くしたい、というのは、
動作が重いのを何とかしたい、ということだろうか。
基本的に、効率が悪いと重くなる。
処理速度を上げたいのなら、効率を上げるのが一番いい方法。
例えばマ○オで、そのステージ全体の処理を全て実行するのは無駄が多すぎるのがわかるだろうか。
見えない部分、画面からあまりにも離れた場所の処理を省くことで、効率も処理速度も大きく変わる。
同じ要領で、毎ステップ実行しなきゃいけないことなのかどうかを考えながら、
無駄な部分を出来る限り省いてみるといいと思う。
0563561
2008/12/11(木) 09:52:59ID:uFLRyYUDキャラAが行動し終わったらすぐキャラBが行動し、Bが行動し終わったらキャラCがすぐ行動し…
という動作をあくまでも順番通りに、かつほぼ瞬時に行いたいのですがどうも若干遅延したり最初に動くキャラと最後に動くキャラで行動終了に差が出来たりしてしまうのです。
これはfpsを高くすることで若干でも解消できるのでしょうか。
0564名前は開発中のものです。
2008/12/11(木) 14:11:51ID:BGyF9xSSそれに、解消できるかどうかは、試してみればわかるようなことだと思うが……。
理論的には目立たなくなるだろうけど、でも「目立たなくすること」が最終目的じゃないはず。
「あくまでも順番通りに、かつほぼ瞬時に行いたい」
本来なら、これをどうやったら実行できるかと考えるべき。
うまくいかないのなら、何故ズレが生じるのかと原因を考えるべき。
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を処理して……と。
順番を扱うときには配列等を使うのもあり。
0565名前は開発中のものです。
2008/12/11(木) 16:37:49ID:nF6qn38V1フレーム毎にオブジェクトが全部更新されるから、何の差か知らないけれど
ある経過時間での差は変わらないよ
キャラA、B、Cが別々に動いてそれぞれの行動開始までの時間がばらつくというのなら
最初のフレームで行動決定処理(AI部分)をやって次のフレームで行動開始ってすれば
揃っているように見えるけど・・・ゲームによりけりかもね
0566名前は開発中のものです。
2008/12/11(木) 18:43:18ID:0wlARFf+一応>>548を参考にして形だけは出来たのですが先述の通り遅延が生じたり
敵の数が多くなると処理が遅くなって(主人公の動ける順番が回ってくるのが遅くなって)
一歩動くと次動くまでに若干待たされ動作が快適とは言えないような状態になってしまうのです
解消する方法は無いでしょうか…
0567名前は開発中のものです。
2008/12/11(木) 19:45:07ID:nF6qn38Vスペックにもよるけどインスタンス5〜600体ぐらいなら
上記のキュー設計で処理落ちすることはあんまりないと思うんだけどなあ
主人公サイドはキューに詰め込まなくてもいいとか細かいことはあるけど
0568名前は開発中のものです。
2008/12/11(木) 20:57:24ID:0wlARFf+敵の数が多ければ多いほど番号が最後に割り振られてる敵?の動きがかなり遅れています。
0569名前は開発中のものです。
2008/12/11(木) 20:59:36ID:5W34XGsl1)情報を小出しにしない。
2)仕様はなるべく提示
3)表現したい目的を言う
0570名前は開発中のものです。
2008/12/11(木) 21:22:53ID:YYSIE6Pp「順番に動く」と「一斉に動く」は両立しないんだけど、結局どうしたいの?
>566で言ってる主人公が待たされるのを解消したいと言うのなら
行動完了するまで待たないで、行動開始してから数ステップ経過したら
次のキャラに行動を始めさせるという手がある。
キャラ数に応じて間隔を変えるようにすれば>568の問題もばっちり。
もちろん、複数のキャラがある程度並行して動けるように設計しとかないといけない。
0571名前は開発中のものです。
2008/12/11(木) 22:19:17ID:0wlARFf+今は>>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に代入
だと視覚的でなく実際に「主人公と敵全員が一斉に動いた」のですが
これでは順番に動くというのが全く無視されるため廃止しました。
自分の希望としては
・(視覚的にでもいいので)全員が同時に動く。
・順番に攻撃したりするために(内部処理の面だけでもいいので)順番に行動しているようにする。
の二つが同時に満たされるといいのですがいい方法は無いでしょうか。
何度も申し訳ありません
0572名前は開発中のものです。
2008/12/11(木) 22:41:52ID:YYSIE6Ppと書こうとしたけど、でも全員が歩き終わるのを待ったりはしないよな?と思ったのでちょっと考えてみた。
シレンなり何なり君が参考にしてるゲームで自分と敵の動きをじっくり観察すればわかるはずだけど、
その手のゲームでは1ターンが実際には複数のフェーズから成り立っている。
(1) 自分が行動する(歩く、攻撃する、道具を使うなど)
(2) 敵が歩く(全員同時に)
(3) 敵が攻撃する(一体ずつ順番に)
自分が歩いた時には(1)と(2)が同時に起こるけど、それ以外の行動をとると(1)が終わってから(2)が起こる。
誰も攻撃行動をとらなければ、主人公は立ち止まることなくスムーズに歩き続けられるわけだ。
この辺を踏まえて、歩くのとその他の行動を分けて別々に実行させるようにしたらどうかな。
ただ、敵はあくまで1ターンに「歩く」と「攻撃する」のどちらか片方しかしないと思うので、
どちらの行動をとるかは(2)より前(ひいては主人公が歩き始める時)に決めておく必要がある。
まとめるとこんな感じかな。
・主人公が行動決定したら、その他のキャラ全員がどう行動するか決定。変数にでも覚えておく
・主人公の攻撃行動、終わるまで待つ(攻撃しない場合はすぐ次に進む)
・歩く予定のキャラ全員を同時に歩かせる。全員の行動が終わるまで待つ
・攻撃予定のキャラに、キューを使って順番に攻撃行動を行わせる
・全員行動し終わったら最初に戻る
0573名前は開発中のものです。
2008/12/12(金) 00:41:26ID:YwPJgrfp行動前に決定するのはちょっと自分の技能じゃ辛いかなぁと…
主人公が行動する→敵:主人公の行動と同時に、攻撃範囲内に主人公がいなければ移動や特殊行動、いる場合は一旦待機
→移動するべき敵が全員移動し終わったら攻撃準備している敵のフェイズに入る→キューを使って順番に攻撃処理→主人公が動ける状態に戻す
として
変数aを用意→a=1の時主人公行動可能状態→主人公行動時にa=2→a=2になったら敵の行動開始(a=2になった際敵の数をbに記録)→
・攻撃範囲内に主人公がいない敵:移動や特殊行動をし、b-=1
・攻撃範囲内に主人公がいる敵:キューを利用して順番に攻撃。何らかの変数等をON状態にしてその敵だけキューに対応させる?>攻撃したらb-=1
b=0になったらa=1に戻して再び主人公行動可能状態に
とこんな感じでいいのでしょうか?
攻撃をする敵に関するキューをどう組めばいいやらよく分からないのですが…
0574名前は開発中のものです。
2008/12/12(金) 01:37:09ID:AbV0Ta9Oフェーズが変わったら一個取り出してと処理していけば問題ないんじゃないか
根本的に a が 0,1,2,4 とかビットフラグで管理したいのかもしれないけど
慣れていないならきちんと名前をつけて真偽値でやるべき
フェーズ管理についても同様。変数の状態で管理するのではなく
主人公行動、敵の行動、敵の攻撃 etc とそれぞれフラグ管理するべき
bの意味が果てしなくないように見える
0575名前は開発中のものです。
2008/12/12(金) 14:22:36ID:UTYwgiXi0576名前は開発中のものです。
2008/12/12(金) 19:19:55ID:b5nKeRJCマスクはmask_indexに再代入すればできるはず
0577名前は開発中のものです。
2008/12/12(金) 21:00:29ID:6TlHc+FTgmkはgmdに変換できないでしょうか
0578名前は開発中のものです。
2008/12/12(金) 22:10:49ID:Vplk2GsRobject_set_parentで親を変えることはできるが、インスタンスではなく
オブジェクト自体(設計図)に作用するから期待するような結果にはならない。
親を変えたいって質問はたまに見るけど、そういう時はたいてい設計が間違ってるべ。
>>577
LGMでGM7→6に変換できるらしいけど、使ったことないから本当かどうかはわからん。
ttp://www.ismavatar.com/lgm/
って、gmdってことはさらに6→5に落とさないといけないのか。
互換性ない機能も多いからほとんど無理じゃないかな?
0579名前は開発中のものです。
2008/12/12(金) 22:16:46ID:agcPaJTz0580名前は開発中のものです。
2008/12/12(金) 22:59:50ID:AbV0Ta9Oもしデバッグでサイドボタン押したときのmouse_buttonの値が0〜3以外だったら
その値を割り当てればいいし、キーコンフィグっぽくするなら
global.mb_side_one |= mouse_bottun
とかすればできそうではあるけど対応していないような気もする
0581名前は開発中のものです。
2008/12/12(金) 23:36:54ID:agcPaJTzレスありがとう
デバッグでGM5.3とLGMで確認したところ無反応でした
0583582
2008/12/13(土) 14:58:29ID:K75p9U8Ghttp://www2.uploda.org/uporg1852115.gm6.html
PASSは GT
このobject3の変数 "near"がおかしいです
クリックでobject0を近づけると
ちゃんとスクリプトやCreateイベントで定義してあるのに
Unknown variable near で
エラーになります
バグでしょうか?
0584名前は開発中のものです。
2008/12/13(土) 16:00:12ID:682sG2h4with (ebul){
move_towards_point((near).x,(near).y,2)
}
with文内の変数は呼び出し元(この場合object3)の変数の意味にならないよ。
ちゃんと other. をつけてやらんと。(詳しくはヘルプ参照)
以下のように修正したらエラーは出なくなったぞ。仕様かどうか分からんが。
move_towards_point((other.near).x,(other.near).y,2)
つーか、こんなことでツール側のバグとか疑うなよ・・・。自分のバグじゃないかw
0586名前は開発中のものです。
2008/12/14(日) 22:59:58ID:VLzMeB5w>wwww
とか
>バグでしょうか?
言い出す前に、テメーの無能を疑えよな
0587名前は開発中のものです。
2008/12/15(月) 14:09:14ID:VQe5+xHLなんとなく高圧的な人増えたな。嫌味っぽく言ってもなんもならんのに
0588名前は開発中のものです。
2008/12/15(月) 18:09:05ID:6p1v9SNR0589名前は開発中のものです。
2008/12/16(火) 11:54:03ID:Pj6nrR98カーソルが合わさっているとき使用するとそのアイテムの効果が現れたりするにはどうすればいいのでしょうか。
アイテム自体は全部完成しており、アイテム名のスプライトやシステム上の番号等は割り振ってあります。5.3です
0590名前は開発中のものです。
2008/12/16(火) 12:21:24ID:KxWOE/yV取得したアイテム番号を代入していく感じにすればイイのでは?
get_item[0] = 取得したアイテム番号
[]内は取得するに従い数値を上げていけばよい。
配列の長さを調べる術はないので、自分で管理しないといけない。
もしくは、データ構造で map が使えるなら、それを使ってもよい。
たとえば、キーネームをアイテム名、値に所持数とやると管理しやすい。
ただし、mapはキーネームでソートされてしまうんで、取得順となると工夫しないといけないね。
アイテムメニューのシステムは面倒だが地道にやるしかないのでは。
カーソルの操作処理とかも、いちいちオブジェクトを用意してやらないといけない。
アイテム効果を発動させるには、
メニュー欄に表示されるアイテムオブジェクトに、
使用するときのキー入力イベント(mouseクリックボタン等)を持たせて、
そのイベント内で、
・アイテム効果発動
・アイテム消費
の処理を記述していく感じかな。
概念的なことしか書いてないが、参考になれば。
0591名前は開発中のものです。
2008/12/17(水) 08:18:19ID:BlN9VESDアイテムを使用した時はグローバル変数から1マイナスする。
ってな感じでどうかな?
0592名前は開発中のものです。
2008/12/18(木) 00:08:00ID:A6CnLTdhこれ自体キューになってるんだね。そりゃそうか
0593濱田
2008/12/18(木) 18:33:59ID:5x5AGIoLまたファイナルファンタジータクティクスのようなクォータビューのSRPGは製作可能でしょうか?
0594名前は開発中のものです。
2008/12/18(木) 18:49:28ID:zjRT977K課金版なら可能。それと理論上はどんなゲームでも作れる。
0595名前は開発中のものです。
2008/12/18(木) 19:00:44ID:AtKHrczpERROR in .....posution 1:UnKnown variable {変数名}
ってでるんですけど原因わかる人いたら教えてください
0596名前は開発中のものです。
2008/12/18(木) 19:06:15ID:uRYQk5PQ初期値定義してないんじゃね?
0597名前は開発中のものです。
2008/12/18(木) 20:00:57ID:AtKHrczpゲーム作り初心者ですみません・・・
初期値定義ってなんですか?
0598名前は開発中のものです。
2008/12/18(木) 20:23:37ID:9UDCWn2j0599名前は開発中のものです。
2008/12/18(木) 20:34:28ID:AtKHrczpありがとうございます。
何とかできました。
0600名前は開発中のものです。
2008/12/18(木) 22:15:12ID:BD5z/Zcu非レジスト(Lite)版でも商用利用可だよ。EULA見た限りでは、商用不可のはβ版だけ。
レジストしてないと「GameMakerで作りました」ってロコが出るからカッコ悪いことになるけど。
>>595
その「.....」の中にも割と重要な手がかり(イベント名とか)が含まれてることがあるので
今後はなるべく省略なしで頼む。
0601名前は開発中のものです。
2008/12/18(木) 23:23:16ID:gWEUu2RB・長文でもいいから情報を小出しにするな
・現在どうなってるのか提示
・目的を明確に
この3つそろそろテンプレに入れた方がいいんじゃないか?
0602名前は開発中のものです。
2008/12/18(木) 23:35:13ID:9UDCWn2jもう解決したからいいんじゃない
0603名前は開発中のものです。
2008/12/19(金) 00:51:49ID:AK9HTeCg0604名前は開発中のものです。
2008/12/19(金) 01:06:57ID:QZODxzKfあれをアニメ(gif)にしたり複数用意した画像の中からランダムで一枚を表示、などということは可能でしょうか?
0605名前は開発中のものです。
2008/12/19(金) 11:57:53ID:OJi6EA5S使えるかどうかわからないけど
ポーズのスクリプト書いてみた。
初期値 global.move=0 のあと
このスクリプト読めばば動くはず。
カウントや時間を使ってる、またオブジェクトの生成、消去の部分は別途、
if (global.move =0)
{
〜〜〜〜〜
}
でくくってあげればいいはず。
0606605
2008/12/19(金) 12:03:25ID:OJi6EA5S0607名前は開発中のものです。
2008/12/19(金) 20:40:28ID:7ZgwG0BVありがたく貰おうと思ったらもう404…
0608濱田
2008/12/19(金) 21:11:16ID:sOxi3S7i0609名前は開発中のものです。
2008/12/19(金) 21:12:39ID:7ZgwG0BV0610名前は開発中のものです。
2008/12/20(土) 10:28:38ID:rZvj3mwDその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;
}
}
0611名前は開発中のものです。
2008/12/20(土) 10:29:35ID:rZvj3mwDelse
{
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つに分けたけどこれだけ
0612名前は開発中のものです。
2008/12/20(土) 21:00:05ID:4d+YUfVIポーズ状態をループさせるほうがいいと思うんだけどなあ
各インスタンスの変数を一括処理するのは思わぬバグが出るときがあるから
できるだけ避けたほうがいいよ
現にアラーム処理が抜けているような
0613名前は開発中のものです。
2008/12/21(日) 11:14:37ID:PzRsHlBPあと、>>31にルーム移動を使ったポーズがある。
0614濱田
2008/12/21(日) 13:39:17ID:OMCEofD9初めてGMでゲーム作成する者ですがバージョン5,3A. 6. 7 .どれを使えばいいでしょうか?
0615名前は開発中のものです。
2008/12/21(日) 14:13:03ID:susUXEb/重なっているBだけが消えるようにしたいのですがどのようにアクションを組めばいいのでしょうか
0616名前は開発中のものです。
2008/12/21(日) 15:46:08ID:xad+zz/Aするとしたらできるだけ軽減する方法はありますか?
0617名前は開発中のものです。
2008/12/21(日) 16:03:49ID:J97WFZEvアクションの中にIf there is an objectみたいなのがある。
BのEnterキーアクションの中でそれを使って、Aと重なっていたら自分を消せばいい。
>>614
>1の非公式情報サイトへGo
っていうか、その質問だとすでに7使うこと前提じゃないの?
とりあえずバージョンごとの違いとか、今まで聞いてきたことも
このスレ内にちゃんと情報があるのでまずは頭から読んできて。
0618名前は開発中のものです。
2008/12/22(月) 01:31:06ID:FUN2QKHC変数を用意していない状態などで
relative用いて変数増やそうとしたり、分母0の割り算とかすると、
エラーメッセージが出て、プレイが中断されますよね?
テストプレイ中、エラーメッセージが出ずに、OS巻き込んで
フリーズしたり電源落ちたりしてしまうことの原因で
考えられることって何があるでしょうか…。
0619名前は開発中のものです。
2008/12/22(月) 02:11:18ID:UfdezWih0620名前は開発中のものです。
2008/12/22(月) 13:45:56ID:VIUd8eyrCPU:pen4 3Ghz
Memory:2G
GM7 pro
処理落ちなどはなく、いきなりフリーズもしくは電源落ちします。
状況…なんですが、これが分からないんですよ。
1度起きた状況を再度再現しようとしたら、何回やっても全然問題なく動いたりするし。
2Dアクションゲームで、ボス敵が岩を投げるんですが、そのときその岩に対し
主人公キャラがジャンプ斬りをあてた時(その時ボスは防御していました)
フリーズしました。
岩は「敵の攻撃」を親オブジェクトに持っていますが、
それまで何百回と出てきた「敵の攻撃」に対して同じ攻撃を当てた時はそのようなことはなかったです。
何らかの変数がオーバーフロウした時、似たようなことになった気もしますが、
そういうコードもなさそうです。
フリーズしてしまう原因として挙げられる要因(例えばオーバーフロウ等)、
どなたかご存知の方おられないでしょうか…。。
0621名前は開発中のものです。
2008/12/22(月) 21:09:57ID:Ff2Oxw5oその処理の中でオブジェクトの生成・削除・変更などしているとしたら
イベントの無限呼び出し(Createイベントの中で同じオブジェクトをCreateするとか)
が原因でスタックオーバーフローすることはあり得る。
あるいはコード的な無限ループとか。それで電源落ちるとまでは考えにくいけどね。
何らかのエフェクトを生成しているとしたら、ビデオドライバとの相性かもしれない。
0622620
2008/12/24(水) 13:52:00ID:j2sRIJLR無限呼び出しもないと思います。
そうですよね、、コード無限ループの場合、ゲームアプリのみが
シャットダウンするに留まる程度だったような記憶があります。
未だ解決されていないのですが、起こる確率がかなり
低い様子ではあるので、この問題は一旦置いておくことにします。
ありがとうございました。
0623名前は開発中のものです。
2008/12/24(水) 19:15:30ID:Je0ZC97P変数の初期値定義のやり方がわからないんですけど、教えてください。
0624名前は開発中のものです。
2008/12/24(水) 19:27:04ID:Xm8ZsJDZ0625名前は開発中のものです。
2008/12/25(木) 00:32:19ID:lTYGyE3i0626名前は開発中のものです。
2008/12/25(木) 01:47:33ID:LZR7eQesカラの入れ物を前もって用意しておかなきゃいけない
初期値定義なんて難しく(?)いうと混乱するかもしれないけど、
要は使いたい変数があるなら数値代入とかする前に数値0で変数を用意しておけ、ってこと。
オブジェクト「箱」の変数Aに+2とかしたいんだったら
「箱」のクリエイトイベントかどこかに「変数Aを0として用意」しておかないとAが見当たらないなんてことになってエラーが起きる。
0627名前は開発中のものです。
2008/12/25(木) 19:40:35ID:wKjFbyzV前は何故かGM5から7に変えたらできるようになったから
解決と思ってました・・
>>626
オブジェクトが作られたときに発生するイベントに変数のアクションで
変数を0にして入れたら
解決しました。 教えてくれて助かりました。
ありがとうございます。
0628名前は開発中のものです。
2008/12/25(木) 23:16:41ID:FQPSIRUG0629名前は開発中のものです。
2008/12/25(木) 23:56:07ID:lTYGyE3i0630名前は開発中のものです。
2008/12/26(金) 15:57:01ID:PhPwcMiaそれと他のソフトとリンクしたりできる??
そういうのを後々やっていきたいんだけど
0631RMT-WM
2008/12/26(金) 16:33:47ID:K4aSBGcm0632名前は開発中のものです。
2008/12/26(金) 19:46:25ID:KU6Gan+Kやっぱそれぐらいしかないすか
0633名前は開発中のものです。
2008/12/26(金) 21:37:08ID:L5Xtp1pRGameMaker だけでは、Windows APIやプログラミング言語用のライブラリを直接使うようなプログラムは無理。
あくまでゲーム製作用ツールだからね。
ほかのソフトというか、ほかの言語(C++とか)で作ったDLLを呼び出すことは可能なので、
自作プログラムや、自作DLLで制御可能な他のソフトとの連携は可能。
なもんで、WindowsAPI とリンクさせることももちろん可能で、
例えばダイアログボックスをつくって、
そこからGameMakerでつくった自作ゲームに制御を加えるなんてことも出来る。
もちろん、Windowsプログラミングの知識がそれなりに必要。
流行の(?) .NET との連携は難しそうだね。
0634名前は開発中のものです。
2008/12/26(金) 21:38:56ID:L5Xtp1pR0635名前は開発中のものです。
2008/12/26(金) 22:56:29ID:SuoE1taaMPを10消費して飛び道具が撃てるという設定を作りました。
その結果、何故か描写されているMPゲージが10以下にならず(もちろん内部も)、打ち放題になってしまう現象が起きました。
これのほかにはMPは以下にならない程度しかMPに関連する変数を弄っていないのですが何がいけないのでしょうか。
0636名前は開発中のものです。
2008/12/26(金) 23:11:14ID:SxF5ePcK普通そういうのは実際のソース見なけりゃ答えられん。が、もし
If MPが10以上なら
MPを10減らす
飛び道具を撃つ
みたいに組んでるなら
If MPが10以上なら
▲<Start of block>
MPを10減らす
飛び道具を撃つ
▼<End of block>
こう囲め。
0637名前は開発中のものです。
2008/12/27(土) 00:34:43ID:zgTmgbXHああではなく後ろの色が映るいわゆる半透明にしたいのですが可能でしょうか
0638名前は開発中のものです。
2008/12/27(土) 01:12:00ID:Glw8dwT3単純に画像全体を半透明にしたいならどのverでもOK(未レジストでも)
スプライトのalphaプロパティを弄れば良い
ピクセルごと透明度が異なるような表現(例えば輪郭にアンチエイリアス)がしたいなら
ver6以降のレジスト版か、あるいは外部DLLを使えばver6以前のGMでも可能かも
ついでに確かver7レジスト版から32bitPNGが扱えたはず
0639名前は開発中のものです。
2008/12/27(土) 15:43:46ID:bMiIzurrフォーラムなどを参考にしてジャンプして地面に着地などはできるようになったのですが、
ジャンプ中やダッシュ中に障害物に当たると(毎回起こるわけではないのですが)コリジョンの設定が悪さをしているのか遥か上空に吹っ飛んだりあらぬところにワープしてしまいます。
障害物は上に乗れるので親を地面と同じにしています。
横移動やジャンプ中の接触(上や横)に対するコリジョンはどう設定すればいいのでしょうか。バージョンは5.3です
0640名前は開発中のものです。
2008/12/27(土) 19:56:55ID:zgTmgbXHできました、ありがとう
ついでにもう一つ質問です
キーボードを押しっぱなしの時にアクションを起こしているのですが
特定状況下で「プレイヤーはキーを押しっぱなしだけど内部ではそのキーは押されていない」と言う処理を行いたいのです。
これは可能でしょうか。
0641名前は開発中のものです。
2008/12/27(土) 21:54:29ID:mqdpfh1Kソース見なきゃわからん
0642名前は開発中のものです。
2008/12/27(土) 21:58:58ID:mqdpfh1K理解力が無いから俺の想像だけど
例えば変数1の時はAキーを押すとアクションが発生するけど、変数が2の時はAキーを押しても発生しないって事で良いかな?
もしそうならキーを押すイベントでIf an exprssion is trueを使えば良いと思う
0643名前は開発中のものです。
2008/12/28(日) 01:10:46ID:lQUrTnBKhttp://www.famitsu.com/blog/tkool/2008/09/post_52.html
アクションゲーム制作の決定版!Multimedia Fusion2 国内販売推進委員会
http://www7a.biglobe.ne.jp/~bp-827z/mmf2/
http://hp.vector.co.jp/authors/VA036419/game.html
0644名前は開発中のものです。
2008/12/28(日) 05:48:32ID:1w+FYaO/管理と編集が楽になるよね?
0645名前は開発中のものです。
2008/12/28(日) 15:22:43ID:cZXYtdqtコードがかけなくても作れるってのを謳い文句にしてるけど
制約の中アイコン記述を覚えてもしょうがないんだよな
0646名前は開発中のものです。
2008/12/28(日) 17:21:40ID:LlMEzWDN0647名前は開発中のものです。
2008/12/28(日) 19:00:32ID:fT956MDj坂道などでは段差でカクカクしたりしてしまいます。
なめらかに動かすには当たり判定や動きをどう設定すればいいでしょう。
0648名前は開発中のものです。
2008/12/28(日) 20:37:31ID:cZXYtdqtScriptsは呼び出し自体が重いから差が顕著に出るけど
piece of code だとほとんど変わらないような気がする
>>647
ピクセル単位で当たり判定を取っていたりしないかな
矩形や簡易図形で当たり判定を取るようにすればよくなるんじゃないかと
少し上にもあったけど、当たり判定処理がうまくいかないとかは
○○のエラーがでますというのと違って、プログラムは良くも悪くも書いた通りにしか動かないから
周辺の情報を出さないと条件式を見直せぐらいしか答えようがなくなってくるよ
0649名前は開発中のものです。
2008/12/28(日) 21:00:33ID:fT956MDj足場も同様ですが斜めの床を作る際斜めにすると三角でマスクしても微妙なドットのせいでかくかくしてしまうのです。
0650646
2008/12/28(日) 23:34:43ID:LlMEzWDN昔、timeGetTime()を呼び出すDLLを作って実験してみたことがあったんだ。
今また試しにやってみたところ、変数の代入なら varアイコンを使うより piece of code の方が早かった。
が、instance_create() の呼び出しは、アイコンの方が早かった。
即効作ったソース。
ttp://www3.uploda.org/uporg1890827.zip.html
0652名前は開発中のものです。
2008/12/29(月) 01:21:50ID:PIejyGZB今の段階だと床に当たった時に起きるアクションと空中にある床に頭から接触したとき、
壁に横から接触したときのアクションが同じになってしまいます。
コリジョンを方向によってわける方法を教えてください
0653名前は開発中のものです。
2008/12/29(月) 03:11:36ID:p4VZEUacってんでどうかな
これは上からね
0654645
2008/12/29(月) 13:44:03ID:T1r41zQH404・・・自分でも確かめられることなのでやってみた
repeat loop 20000 回でinstance_create()をGMのcurrent_timeで比較してみた
確かにアイコンの方が早いみたいですね。平均20msぐらい差が出ました
一応環境
XP SP3
Celeron M 1.3 GHz
GMのcurrent_timeの精度もあるので相対比較という感じです
0655濱田
2008/12/29(月) 20:51:48ID:hLjua+tb0656名前は開発中のものです。
2008/12/29(月) 21:44:28ID:quafeWvWPROだとエフェクト楽しいのかな
0657名前は開発中のものです。
2008/12/30(火) 02:43:25ID:Q8ag+4iF俺も課金しようか悩んでる
0658名前は開発中のものです。
2008/12/30(火) 13:00:28ID:u3BsZPuH0659名前は開発中のものです。
2008/12/30(火) 14:57:33ID:Q8ag+4iF0660名前は開発中のものです。
2008/12/30(火) 19:05:51ID:21if5Swa0661名前は開発中のものです。
2008/12/30(火) 20:10:04ID:8yR978O15.3のレジストは6よりやれることが少ないんですね。
日本語パッチがあるからこっちで作り始めてしまったのですが・・・
0662名前は開発中のものです。
2009/01/01(木) 09:23:17ID:jS882HBIvistaには対応してないのかな…
0663名前は開発中のものです。
2009/01/01(木) 10:46:03ID:Pq+98cZJ0664名前は開発中のものです。
2009/01/01(木) 11:38:55ID:5u1JBYki0665名前は開発中のものです。
2009/01/01(木) 12:39:45ID:V+gx/at8上の方じゃないけど
5.3→6: 言語仕様や名前が一部変更になった
6→7: 機能が追加されただけで関数・プロパティの名称は同じ
なので、7を使うにしてもver6の日本語ヘルプを見ることが多い
ver7の英語ヘルプを読むのは新しく追加された機能を使う時くらい
ちなみに今でも5.3が使われる理由は
・特定の環境では6以降より動作が軽い
・未レジストでも日本語が表示できる
0666名前は開発中のものです。
2009/01/01(木) 13:32:58ID:jS882HBI0667名前は開発中のものです。
2009/01/01(木) 13:55:53ID:Pq+98cZJ>>665が全部説明してくれた、thx
Scriptsは製作中は便利だから使うとして
最終的にはpiece of codeにするのがいいのか
0668名前は開発中のものです。
2009/01/01(木) 17:20:51ID:KI4xLbpe最後にScripts部分をpiece of code に置き換えるとかは
GMでマクロが使えないからバグが増えるのでやっちゃらめぇ
Scriptsのように実態を伴わないで関数だけ使いたいならObjectをクラスのように扱って
event_perform_object()で目的のイベント関数だけ動かせば
管理しにくいけどScriptsよりは早くなる
0669名前は開発中のものです。
2009/01/03(土) 05:35:49ID:DeK5ZSwj同一のinstance_create使うときってどうしてますか?
例えばSTGで各自機からの固有の情報を参照する弾を生成する場合
1プレイヤーのみならglobalや、インスタンス参照したりしてできるのですが
複数プレイヤー同時となると、どうすれば良い方法になるのかわからないです
{
nnn = instance_create(100,100,ball);
nnn.speed = 8;
}
これも上手くいかなかったのでプレイヤー1とプレイヤー2でglobal変数を1個ずつ用意して
弾側でそれを参照してif文でわけています
何か良い方法があればご教授お願いします
0670名前は開発中のものです。
2009/01/03(土) 11:35:14ID:oLIty3o+0671名前は開発中のものです。
2009/01/03(土) 13:09:48ID:3LsZl9GNよくわからんけど、自機が発した弾が発射元の自機の情報を得たいってこと?
自機弾の発射するイベントで、instance_create()が返す弾のインスタンスIDが使えるから、
{
bullet = instance_create(x,y,objBullet);
bullet.status1 = status1; // bulletインスタンスにstatus1変数を用意し、値に自機の情報である status1 を代入。
bullet.status2 = status2;
...
}
とやって、自機インスタンスのステータスを弾のインスタンスに設定したりするのもいいし、
上記と同様の箇所で
{
bullet = instance_create(x,y,objBullet);
bullet.myShipID = id; // id は自機のインスタンスID
}
とやって、自機インスタンスのIDを、弾側のインスタンスの変数に教えてあげるもの手。
弾側で自機のインスタンスIDが分かってれば、ステータスを参照するのが可能になる。
ただし、上記のいずれの方法も、弾側の生成イベントが終わってから変数が設定されるので、
弾側の生成イベント中でこれらの値を利用しようとするとエラーになる。
これを解決するには、弾の自機情報を元に行う初期化をユーザーイベント(下記例では0番)に記述し、
変数設定後にユーザーイベントを呼び出す方法がある。
{
bullet = instance_create(x,y,objBullet);
...(bulletインスタンスの変数に発射もとの自機の情報を設定する)
with(bullet) {
event_user(0); // 生成した弾に、ユーザーイベント0番を呼び出す
}
}
実装サンプル : ttp://www.mediafire.com/download.php?jhyy1yju1mt
0672名前は開発中のものです。
2009/01/03(土) 14:38:31ID:ycNKPUB6ロードしたら、どうもリスト構造は保持されない?みたいなんですが
これ、どうにかする方法ってないでしょうか。。
セーブ時別個にリストファイル作って
ロード時呼び出させないとダメなのかな?
0673669
2009/01/03(土) 14:55:46ID:DeK5ZSwj丁寧な解説にサンプルまで用意して下さってありがとうございます
>ただし、上記のいずれの方法も、弾側の生成イベントが終わってから変数が設定されるので、
>弾側の生成イベント中でこれらの値を利用しようとするとエラーになる。
まさにこれで、解決方法がわからなかったので助かりました
これですっきりして進めそう&今後がかなり楽になりそうです
本当にありがとうございました
0674名前は開発中のものです。
2009/01/03(土) 18:33:34ID:zGDz8aqygame_saveの説明に詳しく書いてあるけど、Data structureやパーティクルの設定、
動的に作成したリソースなどはセーブされないので個別に保存する必要がある。
安直な方法としては、配列は保存されるから
セーブ前に配列にコピーしといてロード時に戻すとか。
ただ、たしかロードすると次のステップの先頭から開始されるので、
game_loadの後にコードを書いても実行されないという問題があった気がする。
だからgame_saveの前に何か変数を設定しておいて、saveの直後にクリアする。
で、ステップの先頭でその変数が設定されたままだったらloadされたと判断する、
みたいな小細工が必要だったかも。
0675名前は開発中のものです。
2009/01/03(土) 19:40:26ID:PewRp2L1いまいちfile_bin系の使用方法が分からないんだけど・・・
0676名前は開発中のものです。
2009/01/03(土) 20:37:48ID:0rv8QzLZGMでは、変数の型は数値か文字列かの2種類。
数値は倍精度実数型(52bitまでなら普通の整数として扱える)、文字は文字列型。
DLL に渡すときには、C言語で言うと、数値はdouble型、文字列型はchar配列の先頭ポインタとなる。
一方、file_bin系の読み書きは 1バイトずつしか出来ない。
2バイト、4バイトの数値を扱うなら、それなりのGMLコードを記述しないといけない。
特に書き込み時は、数値の下位8bit(1バイト)しか書き込まれないので注意が必要。
バイナリファイルに数値変数であるvalueの2バイト分を書き込むサンプル(リトルエンディアン方式)。
{
fileid = file_bin_open(filename, 1);// 1 は書き込みモード
file_bin_write_byte(fileid, value);
value = value >> 8;
file_bin_write_byte(fileid, value);
file_bin_close(fileid);
}
0677名前は開発中のものです。
2009/01/03(土) 21:56:58ID:PewRp2L1double オンリーでしたかどうもです
データを1バイト分で扱う必要がない以上
この辺の関数は自作したものを使ったほうがよさげですね
file mode も定数定義じゃなかったりこの辺は使うなってことなんだろうか・・・
0678672
2009/01/03(土) 23:20:24ID:ycNKPUB6詳しい解説有難うございます。
配列で作り直そうとしていたので、凄く助かりました。
その方法で作ってみることにします。
0679672
2009/01/04(日) 02:27:45ID:dtYqEfVG改めて助言ありがとうございました。。
以前どなたかが言われていましたが、
配列サイズ取得できないのってかなり面倒ですねこれ。
0680名前は開発中のものです。
2009/01/04(日) 11:43:45ID:UuaWwAF/配列サイズなんて問題にならないけどなあ
GMの配列サイズに気を使わなくてもいいようで
実はちゃんと気にしないと駄目な仕様が面倒な気がする
0681名前は開発中のものです。
2009/01/07(水) 23:44:20ID:2vM9o/wg子ヌコだ 子ヌコだ モフいヌコ
モフろうか モフろうよ
ヌコさん ぴいぷう ふにゃふにゃり
0682名前は開発中のものです。
2009/01/07(水) 23:55:02ID:2vM9o/wg特に家庭用
0683名前は開発中のものです。
2009/01/08(木) 17:07:55ID:L4Sbt73mランダムが偏るんですけど
どうにかなりゃせんですか。
俺たちがランダムだ!とキメさせたいのに
起動一発目が
ほぼそれなので
ランダムのランダムが活きないの
ですが。
0684名前は開発中のものです。
2009/01/08(木) 17:54:17ID:+zF/ao/Y0685名前は開発中のものです。
2009/01/08(木) 23:31:34ID:xiNZbAtmそう考えるとやっぱりGMは分かり易いんだろうか
0686名前は開発中のものです。
2009/01/08(木) 23:38:20ID:/gQ2mjV10687名前は開発中のものです。
2009/01/09(金) 07:42:45ID:JJE/kv3A0688名前は開発中のものです。
2009/01/09(金) 20:28:00ID:uRUtQIex使う関数や変な数が違うだけだ
0689名前は開発中のものです。
2009/01/09(金) 22:43:32ID:t/SSlAFW普通にスプライトを開いてオブジェクトに貼っても動かないんだけど(画像が
0690名前は開発中のものです。
2009/01/09(金) 23:08:55ID:XLTa+ag6アニメーションスピードを設定していないとかgif規格があってないとか
その辺じゃないかな
普通にやって動くものを、普通にやったら動きませんというのは
禅問答みたいで答えに困るな
0691名前は開発中のものです。
2009/01/10(土) 01:02:04ID:N7iHXgzTどの状態が「普通」なんだ
と流れるのがお約束
車もそうだ
普通って何だ
世の中がトラックだらけになったらトラックサイズが普通・一般的になるわけだ
じゃあ法的に「普通」になるのかってーと
そうでもない
じゃあ普通ってなんだ
って無限ループし、頭のスタックを使い果たして考えるのをやめてしまう
これがクラッシュである
0692名前は開発中のものです。
2009/01/16(金) 01:08:09ID:/Ycxfhniもう一つ、スプライトを半透明にするにはどこを弄ればいいのでしょうか。
5.3で、レジスト済です。
0693名前は開発中のものです。
2009/01/16(金) 01:39:44ID:55t9b+oA論理演算を学びましょう。
・「Aが10か20のとき」
Aが10のとき:A==10
Aが20のとき:A==20
ですので、この二つの条件を「または(OR)」で結べばよいのです。
この、「または」を表す記号は ||(←¥キーをシフトを押しながら入力すると出る文字を二つ)です。
したがって、
if ((A==10) || (A==20)) {
...
}
となります。
・「5〜15」のとき
これは、Aが5以上で「かつ(AND)」、Aが15以下である、と考えます。
この、「かつ」で結ぶ記号は、&& です。
したがって、
if ((A >= 5) && (A <= 15)) {
...
}
となります。この、AND(&&)とOR(||)は基本ですのでよく覚えておきましょう。
オブジェクトに設定したスプライトを半透明にしたければ、
ローカル変数 image_alpha を設定しましょう。
0.0(完全透過)〜1.0(透過無し)の間で指定します。
0694名前は開発中のものです。
2009/01/16(金) 07:13:19ID:/Ycxfhni0695名前は開発中のものです。
2009/01/16(金) 12:22:33ID:GAxnBPVg任意の方向、例えば315度に向かせる場合に
近い回転方向で徐々にそちらの方へ向くといった動作をさせたいんですが
どの用に書けばうまくいくのでしょうか?
0696名前は開発中のものです。
2009/01/16(金) 18:15:06ID:UMDE1LJgの条件式で時計回り、反時計回りを考えればいいんじゃないか
0697名前は開発中のものです。
2009/01/16(金) 20:01:52ID:P13I2TEiまず差を求めて、-180〜180の間になるよう変換してから符号で判定すればいい。
diff = 相手の向き - 自分の向き;
while (diff < -180) diff += 360;
while (diff > 180) diff -= 360; // この2行は diff=(diff+360+180)mod 360-180 でも可
if (diff < 0) 右に回る else 左に回る;
あと、回転速度が一定だと相手の方を向いた時に
ブルブル震えるって問題が起きがちだから、
目標との差が十分小さい時には回転角度を制限した方がいいかも。
image_angle += sign(diff) * min(abs(diff), 10); みたいに。
0698695
2009/01/16(金) 23:34:55ID:vJfRZqe6レスどうもです。
うまくいきました!
使う場面が結構多くなりそうなので助かりました。
ありがとうございました。
0699名前は開発中のものです。
2009/01/17(土) 06:20:17ID:6ZGpZB49アイテムメニュー云々がよく分からないから実際にどう組んでるかを見てみたい
0700名前は開発中のものです。
2009/01/17(土) 23:50:29ID:lm1Ycmz0・オーバーレイヤー
・スイッチ
のどれか。
前者は現在の画面に、更にレイヤーのようにアイテムサーフェイスを乗せてしまう。
後者は現在の画面から、アイテム面として別に作った面にジャンプさせ、選び終わったら戻す。
もちろん誰がどこに居たのかはちゃんと記録して読み込まないといけない
0701名前は開発中のものです。
2009/01/18(日) 06:27:40ID:cXdSGLfe0702名前は開発中のものです。
2009/01/18(日) 13:08:37ID:kBURO4x7デフォルトのバーのイメージファイルはどこにあるのでしょうか?
0703名前は開発中のものです。
2009/01/19(月) 00:05:56ID:+kjGHGVsPro版じゃないと使えないが、Mapsを使うといいと思う。
keyがアイテムの種類でvalueがその所持数。
Help
>The Game Maker Language (GML)
>Data Structures
>Maps
を参照。
>>702
Global Game Settings
>Loadingタブ
>Own loading progress bar
0704名前は開発中のものです。
2009/01/19(月) 00:54:48ID:vVWIhOkWメインは5.3レジストでやってるんですけどそっちでもできますかね。
0705689
2009/01/19(月) 16:35:57ID:FHt5Z4iN「普通」という言葉に説明が足りませんでしたね
普通と言うのは
「新規スプライト作成
↓
画像を開く
↓
オブジェクトでスプライトを開く
」
の手順でやりました。ということです
0706名前は開発中のものです。
2009/01/19(月) 16:53:14ID:XSLHBAAv0
とやったなら1000を足したとき
1000
となるようにしたいのですが
0
に1000を足すと
1000
みたいな感じになってしまうのです。
後ろに単位を表示したりするときめり込んだりしてとても困るので…
0707名前は開発中のものです。
2009/01/19(月) 17:06:57ID:7PwOXwXxSet Font のalign をright指定とか
draw_set_halign()で一時的に変更後、元に戻すとか
0708名前は開発中のものです。
2009/01/19(月) 17:11:47ID:XSLHBAAv素早い返答ありがとうございました
0709702
2009/01/19(月) 19:39:47ID:/FjgEPbDえーとその自作のロードバーをデフォルトの赤を青に変えただけのものにしたいのですが
デフォルトのバーから新しく作ろうと思うのですがそのデフォルトのバーのイメージファイルが見つからないので、
その場所を知りたいのです。それとも、もともとGMに組み込まれててファイルを取り出すのは無理なのでしょうか?
0710名前は開発中のものです。
2009/01/19(月) 19:47:57ID:VXCpWCmLあんたがどっちの質問者かわからないけど、とりあえずヘルプの該当箇所を
読んでどう思った?
>>705
アニメーションGIFだったら、スプライトの設定画面で画像を読み込んだ時に
フレームが複数できているはず。できていなかったら画像ファイルがおかしい。
できているなら「オブジェクトでスプライトを開く」とやらのやり方がおかしいか
あるいは見間違いだが、具体的に何をしたか示してくれないとそれ以上はわからん。
0711名前は開発中のものです。
2009/01/19(月) 20:33:03ID:ubuZMdKO無理です、自分で作りましょう
0712名前は開発中のものです。
2009/01/20(火) 02:02:00ID:415MQrfK組み込みの画像をパクるのはライセンスに抵触するかもしれんから
手持ちのバージョンのLICENSEちゃんと確認してな
あと、バーの部分だけならただのグラデかけた棒だから自作しても大したことないぞ
0713名前は開発中のものです。
2009/01/20(火) 17:17:01ID:PwgW2MP10714名前は開発中のものです。
2009/01/21(水) 23:50:15ID:9Ec60CXHGMだとどういう感じになるか試しに簡単に作ってみたけど
未レジストでもアイテムの装飾(+1強化するとか、あとから個別に属性付加とか)しなければ
Object単位の管理で割といけるっぽい。
アイテム装飾をやるならどうしてもインスタンスか、ばらけた配列を使わなければならないので
レジストして構造体を使ったほうがよさげだと思う
アイテムメニューと関係ないどRoomのPersistentを切り替えると
切り替え時のステップだけたまに動作が不安定になるね
0715名前は開発中のものです。
2009/01/22(木) 00:25:09ID:bughZtr5とりあえずターン制の戦闘システムから始めようかとおもっておりますが、
そもそもターンというのはどうやって表せばよいのでしょうか?
またhpを削ったり増やしたりする方法を教えてください。
初歩的なことで申し訳ないです。参考になるサイトとかあればご教授願います。
0716名前は開発中のものです。
2009/01/22(木) 00:43:59ID:egdmvXcF0717名前は開発中のものです。
2009/01/22(木) 01:21:53ID:6+qogCmD差し支えなければそのサンプルを提供してもらえないでしょうか…
レジストはしてあるので構造体についても教えて下さるとありがたいです
0718名前は開発中のものです。
2009/01/22(木) 01:30:11ID:v3lR0sWo>またhpを削ったり増やしたりする方法を教えてください
これはGMのコードの書き方が分かれば苦もないのでwikiでもhelpでも見るべし
全然プログラムの書き方が分からないというなら、C++やjavaだとかの入門書やサイトを見たほうがいいよ
ターン制というか戦闘システムとかは、作るゲームの設計図を自分でかけないと難しいと思うよ
例えばドラクエっぽいのを考えるとして、
画面上にキャラクターのHPとかMPとかを表示したいから
メニューを描画するオブジェクトはキャラクターステータスを管理するオブジェクトにアクセスできないといけないとか
この辺が面倒ならRPGツクールを使ったほうがいいんじゃないかと
0719名前は開発中のものです。
2009/01/22(木) 01:34:07ID:bughZtr50720名前は開発中のものです。
2009/01/22(木) 01:50:30ID:bughZtr5返信ありがとうございます。ツクールはとりあえず考えてません。
難しそうですがまあ今日インストールしたとこなので色々試してみようかと思います。
0721名前は開発中のものです。
2009/01/22(木) 02:42:37ID:v3lR0sWo>>717
構造体の発言はなったことにorz
あるものとばかり思ってたら今確認したらなかった・・・dll側で対処のも今一ですからね
ソースは7.0の未レジスト版でもよければ明日内役っぽいのを書いてうpします
0722名前は開発中のものです。
2009/01/22(木) 02:45:15ID:v3lR0sWo○内訳
なんだよ内役ってorz
0723名前は開発中のものです。
2009/01/22(木) 18:46:49ID:egdmvXcFリスト構造ってのがよくわからない
0724名前は開発中のものです。
2009/01/22(木) 21:31:41ID:5F5IMtdtそれぐらいカスれググ
さてここからは独り言
たぶん単純な双方向連結リスト(リンクリスト)だと思う
最近の言語だと配列として実装されてたりするのであまり耳にしないのかも
大まかな構造は配列と同じ
ただし隣り合った要素同士が互いにポインタを持ってるから
(末尾以外の要素の)削除や挿入にかかるコストが配列よりずっと低い
詳しくはwikipediaやデータ構造の本を読むをどうぞ
ついでにキューやスタックも似たような概念だからついでにどうぞ
以上の独り言は単なる独り言であって別にあんたのためじゃないんだからね
0725名前は開発中のものです。
2009/01/22(木) 23:06:37ID:egdmvXcF結婚してください
なるほどなー
配列でいいやと思ってたが改めます
RPGなどの所持品管理に良いんだろうか?
0726名前は開発中のものです。
2009/01/23(金) 00:56:04ID:YF0WjU+Dとりあえずうpっておきました
ttp://www.dotup.org/uploda/www.dotup.org24218.zip.html
要素の挿入削除がなければ(FFのような最後の一個を使ったとき空白ができるようなタイプ)
配列タイプのほうがいいし
その都度詰めて表示するやつ(不思議なダンジョンのトルネコのようなタイプ)はリストが向いていると思う
どちらがいいということもないような
0727名前は開発中のものです。
2009/01/23(金) 03:21:07ID:JG56DCPd俺とも結婚してください
0728名前は開発中のものです。
2009/01/23(金) 13:39:03ID:er9V4Ijxありがとうございます。
色々試行錯誤してみます
0729名前は開発中のものです。
2009/01/23(金) 14:10:29ID:XrOlLLRqGMLバリバリ使う人はそのままプログラム出来ちゃう気が。
0730名前は開発中のものです。
2009/01/23(金) 21:48:14ID:er9V4Ijxええと、
・現在の画面上にメニューを出せるようにしたい(後ろにプレイ画面が出るような)
・説明してくれている「詰めて表示するリストタイプ」にしたい
・アイテムごとに内部で定めた番号順に自動ソートできるようにしたい
(内部番号が4,2,8のアイテムをその順で拾ったらアイテム画面を開いたとき2,4,8の順で整理されている)
としたいのですがどのようにすればいいのでしょうか?
0731名前は開発中のものです。
2009/01/23(金) 23:49:09ID:YF0WjU+D・現在の画面上
メニュー表示がRoom切り替え方だったらbackground_create_from_screen()で
元の状態を複製。使えないって言われたから要レジストらしい
切り替えないタイプだったらそのまま画面上にメニューを描画。
アイテム関連はリストでアイテム種類ごとのインスタンスを保持すれば楽かも
other イベントかScriptsでソート関数をつくる。その例だと番号を比較すればおk
アイテム番号をキーに検索して、拾ったアイテムがリスト中にあって同一の状態ならアイテム個数を増やす
そうでなければ、インスタンスを新たに作り適切なリストの場所に挿入
とかかな
0732名前は開発中のものです。
2009/01/24(土) 15:39:35ID:RSxQwKZ0これは5.3ではできないんですね・・・
6yら7でやる必要があるんでしょうか。
0733名前は開発中のものです。
2009/01/24(土) 19:40:57ID:SbF+au3X5.3ではfont_alignという変数になってる。こういうこともあるから最初にバージョンを(ry
ちなみに文字列の幅を測る関数(string_width)もあるから
自分で計算すれば「できない」ってことはない。
0734名前は開発中のものです。
2009/01/25(日) 22:39:01ID:Ihe3tos+0735名前は開発中のものです。
2009/01/26(月) 00:55:11ID:rypvl5e0これは自分の場合だけど、たとえばシューティングゲームで、敵に攻撃パターンをランダムで選択させるときなどに使ってみてる。
ユーザーイベント側で攻撃パターンを記述したスクリプトを用意しておいて、
if (isAttackBegin) {
pattern = floor(random(5)); // 攻撃開始時にパターンを決める(userイベント0〜4のどれかを選択)
}
...
event_user(pattern);
等とすることで、攻撃パターンを選択させることが出来る。
自作スクリプトを使って、switch - case で分岐させても同様のことが出来るけど、
ユーザ定義イベントの方法は、それに比べてオブジェクト内で完結出来る点が有利、かな。
(自作スクリプトは、どのオブジェクトからも呼び出せてしまうため)
・・・うーん、もっといい例があるような気もするんで、参考にならないかもなぁ。
0736名前は開発中のものです。
2009/01/26(月) 01:14:42ID:RHbshgiW例えば、敵が何種類かいるとして、敵Aを倒すとお金を落とす、
敵Bは分裂して別の敵になる、敵Cは自爆して反撃を受ける……など
倒した時に敵の種類ごとに違った出来事が起こるとする。
こうした出来事をそれぞれの敵のユーザ定義イベント0番に書いておき、
敵を倒した時には一律でそいつのイベント0を呼び出すようにする。
言ってみれば「敵を倒したイベント」を新しく定義するということ。
こうするとすっきりした作りになるし、後から敵の種類を増やすのも簡単になる。
ある系統の敵はすべて同じ反応をする、というのも継承で自然に表現できるしね。
0737名前は開発中のものです。
2009/01/27(火) 16:56:40ID:pQHnQheZ配列だとメモリの確保が膨大になりませんか。
たとえば600コあるうちの1つが今求められているのに
配列全部のメモリが必要になりゃしませんか。
0738名前は開発中のものです。
2009/01/27(火) 17:42:16ID:7ENg20mLなりゃしませんぜ
何となく誤解や勘違いがありそう
アイテムを管理するのに配列を使うということ
アイテム自体はオブジェクトとして実装するのが普通だと思う
それにGMは元から画像関連でメモリを大量に使うから
たった600程度の配列を節約しても大して変わらないと思う
要素に入れるのはアイテムのID、性能、所持フラグ程度でしょう
これを配列やリスト無しで管理するとなると方法が思いつかない
0739名前は開発中のものです。
2009/01/27(火) 18:19:56ID:sD1xAdJPまず、アイテムの所持リストってのは、最低限、種類(ID)とその所持数が分かればいい。
で、アイテムの種類(ID)から、アイテムの名前や性能とかを『別途に』取得する。
そういうわけで、所持リストなら一次元配列でも十分管理できる。
アイテムの所持数を管理するのに必要な要素は、種類と所持数の2つ。
種類をインデックス、所持数を値とすればいい。
名前は? 性能は? それは「詳細リスト」から取得すればいい
itembag[0] += 1;
// アイテムID 0 を1個拾った!!
// アイテムID 0って何だ? アイテム詳細リストを見てみる。
// ↓
itemlist[0, 0] = "ポーション"; // 0: 名称
itemlist[0, 1] = "HPを30回復"; // 1: 説明(アイテムを選択してるときとか、店で購入するときとか)
itemlist[0, 2] = 30; // 2: 性能(ゲーム内で実際に計算とかに使われる数値)
// ↓
// 拾っただけだから、いちいち説明はいらん。名前さえわかりゃいい。
// っつーわけで、itemlist[*,0]の値を取得する
// ↓
// ポーション を1個拾った!!
と、ざっと書いてみたがこんなもんだろうか。
レジスト版なら、配列ではなく>>703にあるMapとか使うのもあり。
0740名前は開発中のものです。
2009/01/27(火) 18:29:16ID:sD1xAdJP拾ったアイテムのIDって言いたかったんだ。
// っつーわけで、itemlist[アイテムID ,0]の値を取得する
// itemlist[0, 0] を拾った!!
// ポーション を拾った!!
0741名前は開発中のものです。
2009/01/27(火) 18:48:52ID:vXU/UZvg0742名前は開発中のものです。
2009/01/27(火) 20:09:36ID:pQHnQheZっていうか、配列とは
一度にサイズぶんだけ一気に確保し、
それから参照していくものだと思っていたので
多次元配列だと100MB以上も食ってしまいかねない、
と危惧しました!
事情により、アイテムどころか様々な技など含めて5000コ、それを最悪でも16MBに収めたいので
0743名前は開発中のものです。
2009/01/27(火) 20:38:48ID:7ENg20mL配列に回すリソースが16MB以下ってことなら余裕で収まると思うよ
ざっと計算して1個あたり3000バイトかな
よほど長いアイテム名でもない限り100バイトもあれば十分
もしゲーム全体で16MBってことになると厳しいな
処理系で喰うメモリよりスプライトや効果音を減らす努力をした方が良いかも
>一度にサイズぶんだけ一気に確保しそれから参照していくもの
いや、まさにそうだよ
データとメモリ(サイズ)の関係について認識がおかしい気がする
多次元配列だからメモリを喰うなんてことはないし・・・
ってか自分でテストして確かめるのが良いと思う
適当に巨大な配列を作ってタスクマネージャで比較するだけでも大雑把なテストにはなるでしょ
0744名前は開発中のものです。
2009/01/28(水) 01:16:03ID:MXEjvXvx一次元配列でも管理できるといっておきながら
itembagも合わせたら三次元分も使ってるじゃないかwというつっこみは置いておいて
構造的にも役割的にもリストじゃないのに変数名になんとかlistを使わない方がよさげ
0745名前は開発中のものです。
2009/01/28(水) 04:15:12ID:DtItU4Jsその場でいい表現が思いつかなかったからlistって書いたけど、他に何かあるかな。
itemtable? itemdetail? itemdata? まぁ製作者自身が分かればいーんだ。
「所持リストなら」一次元配列でも十分管理できるって書いたつもりだったんだ。
「名称、説明、性能、所持数」を全て一つで管理するより、
不変のデータ「名称、説明、性能」を一つにまとめて、
所持数は別途に管理する方が構造上いいのではと思
そうか、使用するメモリの話か。
0746名前は開発中のものです。
2009/01/28(水) 05:02:50ID:oP92b7pR3000 * 3000 * 3000
0747名前は開発中のものです。
2009/01/28(水) 10:26:16ID:LWUNhc76変数名の後ろに[]をつけ加え、その間に添字(インデックス)を1個(1次元配列)
または、カンマ,で区切って2個(2次元配列)入れてください。
この添字を指定すると配列が自動的に作成されます。
配列の先頭番号は0です。大きい配列を使うとメモリを消費してしまうので気をつけてください。
添字にマイナスの値を使用してはいけません。
各配列で32,000個までのインデックスを使用でき、全体で1,000,000サイズの配列を管理できます。
0748名前は開発中のものです。
2009/01/29(木) 01:42:29ID:9p/g/bvgitem[]っていう配列に[個数][名称][説明][性能]の順で格納して
アイテムID*4 + a (a = 0 〜 3)で参照すればできるけど・・・
問題はメモリじゃなくて設計上よろしくない。
アイテムの内容をそのまま配列に記述して、さらに直接アイテムIDで参照していると
アイテムの種類を増減させたときそのアイテム以降のデータを全て直さなければならなくなるっていう
アイテムIDを個別に振るタイプでは同じ問題をはらんでいるけど
このやり方だと連番になっているので修正量が半端じゃない
0749名前は開発中のものです。
2009/01/30(金) 09:46:51ID:Dxz4sk1v名称とか性能とか全部含めて。
……何でそれを三乗するんだろ?
0750名前は開発中のものです。
2009/01/31(土) 01:05:21ID:/v1G/0Es1次元にアイテムに求められるもの全部入るとは限らない。
「表」なら、一次元で完結することはあまりない。
たいてい2次元必要だろ
名前だけが必要なら1次元で済むかもしれないが、
誰が何を持っているか、というような個人の情報を格納するとなると1次元では足りない。
複数次元なら、そのぶんかかるのは自明。
n次元 n乗
0751名前は開発中のものです。
2009/01/31(土) 02:25:37ID:rlXWUIoUアイテムの話なら、
必要な配列の要素の総数 = アイテムの個数 x アイテムのステータス
で済む話だし。
0752名前は開発中のものです。
2009/01/31(土) 04:49:01ID:Fymynsm1つまり、アイテム5000個の名称、説明、性能の表を記述するのに、
5000*3じゃなくて、5000の2乗だけ必要、ということ?
5000*4997が空白になるんだが、そういうことなのか?
0753名前は開発中のものです。
2009/01/31(土) 18:11:05ID:zdMDroAqアイテムと装備でわけるとかさ
GMの配列はサイズ宣言しなくていいんだし>>752みたいに考えなくていいだろ
>>747ってヘルプのやつだよな
これみると2次元までしか使えないんじゃないだろうか
0754名前は開発中のものです。
2009/01/31(土) 20:52:47ID:dFEgAXD40755名前は開発中のものです。
2009/01/31(土) 23:16:19ID:+Qm7r/E2このカクカク具合は嫌だな
0756名前は開発中のものです。
2009/02/01(日) 02:09:16ID:VioXBIy7次元で分けるとか、次元という言葉に拘っているみたいだけど、
そもそも次元というものを正確に理解していないんじゃなかろうか。
例えば>>739がitembagとitemlistを合わせたら三次元だという発言があったが、あれはどう見ても二次元だ。
アイテム0 アイテム1 アイテム2 ……
名称
説明
性能
個数
↑の表の最下段、個数の行を切り離して個数の行をitembag、残りの表をitemlistと呼んでいるだけ。
このときの表の軸は(アイテムID、ステータスの種類)の2本。だから二次元。
切り離した行を見ると、軸は(アイテムID)の1本。これは一次元。
この二つをあわせたとしても、同じ軸が一本あるために、単純に数字の上での計算「一次元+二次元=三次元」の様にはならない。
「要素が増えた→次元が増えた」ではない。
もし仮に三次元になるのなら、>>744の発言からみて(アイテムID、ステータスの種類、個数)という表現になるな。
それがどういう意味か、わかるだろうか。例えば、同じアイテムIDなのに違う個数を持つ等。
ちなみに、本来アイテムのデータを管理するのに、↑にあるような表を書くと思うのだが。
次元で分けたがっているようだが、試しに好きなアイテムを5つくらい、
どう管理するかを一度excelか何かで表を作ってみたらどうか。
0757名前は開発中のものです。
2009/02/01(日) 02:16:41ID:VioXBIy7もしそうだとしても、そうするよりは表を作るほうがいいかと。
その方が共通の項目(名称、説明など)で管理できる。
0758名前は開発中のものです。
2009/02/01(日) 10:46:25ID:KYsF1WeA各変数を設定できるデータを100個ほど常時保持させ、装備入手に伴い空いている(数値が0である)データにその装備が持つ値を代入、
あとは増減をその内部で行い、装備が破壊や破棄された際に数値を0に戻す
などという方法でできるのでしょうか。
もっと簡単な方法があればご享受賜りたいです。
0759名前は開発中のものです。
2009/02/01(日) 12:39:25ID:0y6Ohlui同一人物でないんでない?
配列の中の配列を多次元配列と同一に扱ってるだけじゃないかな
これはグラフィクハンドル格納して使ったり便利だけど
アイテムなら素直にデータ構造でいいと思う
0760名前は開発中のものです。
2009/02/01(日) 17:38:16ID:lUYLBl6P>各変数を設定できるデータを100個ほど常時保持
データがインスタンスidで、100個保持っていうのがidを保持する配列100要素分だというのなら
できると思うよ
レベルや耐久値とかをもったオブジェクトのpersistent属性インスタンスを
アイテム種類ごとに生成するのが一番楽
0761名前は開発中のものです。
2009/02/02(月) 09:06:58ID:JsXKtbu0とりあえず言えることは
ゲームに限らず、配列をマスターできない奴はダメだということ。
必然的にポインタもわからないことになるからな
物理で言う、質量とエネルギーの関係に似ている。
[見え方が違うから別物]として捉えていたら永遠に理解できない
0762名前は開発中のものです。
2009/02/02(月) 23:39:28ID:X4zxDIqi重ねる順番を思い通りにすることってできないでしょうかね?
0763名前は開発中のものです。
2009/02/03(火) 00:11:12ID:H3sg+kjOもしくは思い通りの順番にインスタンスを生成していく
0764名前は開発中のものです。
2009/02/03(火) 22:36:47ID:vsV0s/4nどのタイミングで起こるかご存知の方おられますか?
0765名前は開発中のものです。
2009/02/03(火) 23:02:40ID:b4FG0ycnとか言うとお前がやれと言われそうなのでやってみたら
Begin stepとStepの間だった
Timeline内で描画したいとかいう質問だったら追加料金いただく
0766名前は開発中のものです。
2009/02/03(火) 23:27:42ID:KjRNw6lQもっと正確に言えば、
Begin step イベント→ timeline の呼び出し → alarm イベント→...→ Normal step イベント ...
って感じみたいだ。
0767764
2009/02/04(水) 00:41:01ID:28umjKE8ありがとうございます。むしろ自分こそ自分でやれよと
いう感じですね、、アホな質問すいません…。
>618 >620あたりでこのスレにカキコしたんですが
なんでゲーム中でハングアップするのかわからないまま2ヶ月が過ぎました…
原因の最有力候補たるオブジェクト
(このオブジェクトがある時必ずエラーがおきる)を1から
作り直したのに、また同じようにハングアップしてしまいます。。
そろそろ個人で作るのが限界かもしれません…
自分がメッセアド晒したら連絡して原因を一緒に究明してやるぜ、、という
素敵なお方とかいませんか…。。
0768764
2009/02/04(水) 00:43:25ID:28umjKE8メッセでgmkファイル送るので、ということです。
0769名前は開発中のものです。
2009/02/04(水) 02:38:04ID:WYUwJI4p0770名前は開発中のものです。
2009/02/08(日) 08:03:23ID:stZQzW20ただただ問題投下するだけだと……。
例えば、数レス前で話してたことに関してまた質問が来るとかって阿呆みたいだろ?
質問するなとは絶対言わん。けど、とりあえずスレ内を読むとかはして欲しいよね。
で、何が言いたいのかというとだな。
>>116や>>188、>>211とかで、ファイルへのURLを載せて『こんなのを作っているけどこんなエラーが出る。どうしたものか』系な発言があるよね。
つまり、スレ内を読んでいれば、『メッセアドを晒して……』なんてことをせずに、
『アップローダーを使って作ってるゲームを公開し、助言を貰う』っていう選択肢が見つかるはずなんだ。
Q&Aが殆どのこのスレだが、そのQ&Aから得るものもある。
他にも、このスレ内で紹介されたダンジョン自動生成のアルゴリズムとかは凄く興味深かった。
今作ってるゲームとは一切関係がないのが残念だが、SRPGを作るときがあったら参考にするかもしれない。
自分には関係ないと思わずに、とりあえず読んでみようよ。な?
0771名前は開発中のものです。
2009/02/08(日) 09:24:36ID:VSHKfWuSサイトで募るとか手はあるはず、2chで開発仲間募集しても閑古鳥
0772名前は開発中のものです。
2009/02/08(日) 21:01:44ID:aA7Dywq5ボタンを押したときに「剣を振る」といったアクションをさせたい時は
どうすればいいのでしょうか?
オブジェクトを変更させるともとのオブジェクトと違う場所から
新しいオブジェクトが発生して、永遠にアニメーションを繰り返してしまいます。
(5.3Aでプログラムは分かりません)
0773764
2009/02/08(日) 21:40:37ID:10++XKjl確かに具体的にどこがどう、というのを考えるには
うpろだに晒して中身を見てもらうのが一番いいとは思います。
ただ、若干規模・容量が大きめなせいで
知人に直でオブジェクトの関係などを説明しても
未だ全て把握しきれていないくらいなので、ただうpして
「さぁ問題解決してみてください」
「質問は受け付けます」
という形でバグ探しを要求しても投げっぱなしみたいで
逆に不親切かなぁ、と思ったりもしました。
また、>>771さんの言うとおり、確かに
秘匿・びっちり組み合って〜なら
他所で誰かを募るほうがいいですね。
スレ汚し失礼しました。
0774名前は開発中のものです。
2009/02/08(日) 22:51:59ID:bDfrOQQnオブジェクトではなくスプライトだけを変更すればよろし
そのスプライトのアニメーションが終わったら元の状態に戻るようにすれば良い
0775名前は開発中のものです。
2009/02/08(日) 23:29:57ID:aA7Dywq5素早い回答ありがとうございます。
他のスプライト変更のようにうまくいかないのですが、
何か原因があるのでしょうか?
ぷるぷるします
http://down11.ddo.jp/uploader/download/1234103282/attach/hya_090208out.gmd
DLpass:1234
0776名前は開発中のものです。
2009/02/09(月) 11:56:14ID:glL4u7ly>>774
ありがとうございます
0777名前は開発中のものです。
2009/02/13(金) 20:46:15ID:2BdHArDo0778名前は開発中のものです。
2009/02/15(日) 06:26:36ID:9tua18qR0779名前は開発中のものです。
2009/02/15(日) 06:41:58ID:04uArqny>>264くらいから読んどけ
0780名前は開発中のものです。
2009/02/15(日) 16:16:36ID:fXtXHYNbGM初心者です。
自機移動の場合、オプションは自機過去の軌跡を追う
自機静止の場合、オプションも静止状態にする
そんなオプションの作り方は?
0781名前は開発中のものです。
2009/02/15(日) 18:05:30ID:THPaUHHy0782名前は開発中のものです。
2009/02/15(日) 19:38:41ID:WsRH8hUTスプライトで作ってもいいのですが若干容量がかさんでしまうので…
0783名前は開発中のものです。
2009/02/15(日) 20:07:47ID:oFgirjliもし極値に近いところほどゆっくりにしたいとかなら
三角関数を使って座標を決めればいいかと
0784名前は開発中のものです。
2009/02/15(日) 20:54:16ID:KuC38cSs重力加速度的に動かせばいいと思うよ。
create eventにて初速をdirection 270 もしくは90に
速度2か3くらい設定しておいて、
更にcreate時のx,y座標をx_start,y_startという変数に覚えさせておく。
あとは数フレームごとに
gravity_directionを
point_diection(x,y,x_start,y_start)とすれば、ふんわり
初期位置に向かって動くと思う。
gravityの値は0.1か0.2くらい?
0785名前は開発中のものです。
2009/02/15(日) 23:18:47ID:WsRH8hUT>gravity_directionを
>point_diection(x,y,x_start,y_start)とすれば、
これはどうやればいいのでしょう?
set the gravityのdirectionに入れるだけだとやっぱり駄目なのでやり方をお願いします。
0786名前は開発中のものです。
2009/02/16(月) 17:25:30ID:ILNE3Tn0784じゃないけどステップイベントに「Execute a piece of code」アクションをおいて
gravity_direction = point_diection(x,y,x_start,y_start);
とかいてやればいいんでね?
0787名前は開発中のものです。
2009/02/16(月) 22:38:37ID:bdIz0Orhたぶんどこか他のところミスってるべ。
というか、そのやり方だとスタート地点から離れられないし
素直に>783でよくないかい?
三角関数といっても別段難しく考える必要なくて
/* Createイベント */
a = 0;
/* Stepイベント */
a += 0.1;
y += sin(a) * 0.5;
これだけでそれらしく動く。後は数字を色々変えてみて調整すればいい
0788名前は開発中のものです。
2009/02/26(木) 17:16:38ID:V4sqiU4fコリジョンで設定すると上にある足場にぶつかったときや壁にぶつかった時も音が出てしまいます。
下方向に着地した時だけの設定を作りたいのですがどう設定すればいいのでしょうか
0789名前は開発中のものです。
2009/02/26(木) 20:12:16ID:NIFAUqfl>>420から抜粋
「行き詰ったら原点に返れ」
詰まったらまず、何をしたいのかを明確にする。それから、したいことを分析しよう。
何をしたいのかは明確。『地面に着いたとき着地音を出したい』
んで、ここからしたいことを分析するわけだ。
>コリジョンで設定すると上にある足場にぶつかったときや壁にぶつかった時も音が出てしまいます。
そりゃそうなるよな。コリジョンってのは単に接触したときのイベントなんだから、
『足場のオブジェクトと接触したとき』に音が鳴るわけだ。
プログラム的にはおかしくない。けど、やりたいのはこれじゃない。
さて、ここでGMやらプログラムやらは横に置いといて、理論的に考えてみよう。
『地面に着いたとき』ってのはどういうときだ?
「前まで空中にいて、今足場に触れた」ってのは?
いや、それだとジャンプ中に壁にぶつかったときにも音が鳴ってしまう。
ついでに、上にある足場にぶつかったときも鳴るな。
「降下中に足場に触れた」なら?
これも、降下中に壁にぶつかったときに音が鳴ってしまうことになる。
『地面に着いたとき』という状況を別の言葉で言い換えるとどうなるんだろう?
……と考えていくのも分析の一つ。勿論別のアプローチもある。例えば、似た状況を探すとか。
着地音を出したいってことなら、『ジャンプ後、足場に乗ったときに降下が止まる』というのは実現できてるのが前提だよな?
それは『地面に着いたとき』という状況のはず。そこから何かヒントが見つからないかな?
また、その降下を止めたときに音を鳴らすという考え方もある。
生憎これから用事があるので、考えられるだけ並べてみた。
何かヒントになれば幸い。これ抜きで解決法が見つかればさらに幸い。
0790名前は開発中のものです。
2009/02/26(木) 20:36:54ID:lirPt0Cs0791名前は開発中のものです。
2009/02/27(金) 12:58:14ID:7UDXTjXQ5の時にA、20の時にA〜と一つずつやるのでなく5、20、40の時にA〜など複数を一括で設定するのはどうやればいいのでしょう。
0792名前は開発中のものです。
2009/02/27(金) 17:03:38ID:QoamVV9Dステップ内で
a+=1;
if (a == 5 || a == 20 || a == 40) event_user(0);
等と書いておき、起こしたいアクションをUser 0イベントの中に入れる。
ユーザ定義イベントの場所は
Add Event
>Other
>User defined
>User 0
ユーザ定義が何かわからなければ>>734辺りやヘルプを参照。
0793名前は開発中のものです。
2009/02/27(金) 17:30:52ID:QoamVV9Dだったら、Execute Codeの中に
event_user(0);
とだけ書いたもの(Aと呼ぶ)を
〔VAR〕 If a is equal to 5
A
〔VAR〕 If a is equal to 20
A
〔VAR〕 If a is equal to 40
A
と置いて、起こしたいアクションをUser 0イベントの中に入れとけ。
0794名前は開発中のものです。
2009/02/28(土) 17:47:00ID:gTDyAg6K各主人公オブジェクトの親に「主人公カメラ」を設定しました。
ビューが「主人公カメラ」を追うようにしたのですがキャラクターが切り替わる際に
カメラがしっかり付いていかず画面ががくっとなります。
どうも切り替わる際に一瞬だけ「主人公カメラ」を見失っているようです。
動いているものがその場で別のオブジェクトになってもビューがスムーズにそれを追ってくれる方法はありますか?
0795名前は開発中のものです。
2009/03/01(日) 01:28:59ID:FK5vDD5Wそれで自分でビューが追うべきインスタンスをカメラ側で設定すればいいと思う
0796名前は開発中のものです。
2009/03/01(日) 03:20:11ID:n7LRNs7y「save game」
で保存されるものの詳細って
何処かに記載されているでしょうか?
>保存されるデータは基本的な情報しかないことに注意してください。
>再生中の音楽や、音楽再生中の正確な位置などは、保存されません。
>また、変更されたリソースも保存されません。
>データ構造のデータや、パーティクル、マルチプレイヤの設定なども保存されません。
とは書いてあるのですが、具体的に何が保存されて
何が保存されないのかが気になりまして。
0797名前は開発中のものです。
2009/03/01(日) 18:36:17ID:KiSfn/LGそのヘルプのが一番詳しい説明なんだけれど。
そこに書いてあるもの以外は全部保存されると思っておけばいい。
そいつら除いたら残るのはグローバル変数(組み込みとユーザ定義含めて)、
ルーム内のインスタンス、それぞれのローカル変数、
あとはpersistentなルームの状態くらいかな。
0798名前は開発中のものです。
2009/03/01(日) 19:20:12ID:n7LRNs7yありがとうございます。
保存したい情報が、まんまだと保存されていなければ
一時的にグローバル変数に保持しておくように
してみます。
逆に保存したくない情報がロードによって復帰してしまう場合は
ロード直後に初期化してしまうとかですかね?
セーブしたい内容、したくない内容
セーブ/ロードのタイミング等、複雑になりそうであれば
自前で作るのも検討します。
0799名前は開発中のものです。
2009/03/01(日) 19:45:16ID:U/3M/kF8gravityを使おうとすると実行時にgravityを使ったオブジェクトとその行とVariable name expectedというエラーが出ます。
用はそんな変数ねえよ。ってことなんでしょうが、
Draw a textで
'加速度 ' + string(bear.gravity )
'加速度方向 ' + string(bear.gravity_direction )
(bearはオブジェクト名です。)
とすると上はエラーになりますが下はエラーが出ず表示されます。
ヘルプを見てもgravityとgravity_directionで引数の数が違ったり書き込み禁止の違いがあったりするわけではないので、
変数の呼び出し方は間違ってはいないとと思うのですが、何が間違っているのでしょうか?
バージョンは5.3aです。
オブジェクトで生成時にオブジェクト名をいれずに、gravity=0としたり、ボタンが押されたときgravity=0としても同様のエラーが出ます。
bear.grまで入力して入力補正でbear.gravityと入力することも試したのでスペルミスもないと思います。
0800名前は開発中のものです。
2009/03/01(日) 20:04:57ID:KiSfn/LGつまりgravityは何か別のもの、例えばオブジェクトだとか
スプライトだとかの名前なんだよ!
といった理屈で、変数名とリソース名がかぶってるとそのエラーになります。
そういうことを避けるために、スプライト名にはspr_とかオブジェクト名には
obj_とかプレフィクスを付けて区別することが推奨されてるわけで。
0801名前は開発中のものです。
2009/03/01(日) 20:28:59ID:U/3M/kF8名前をそれぞれspr_bearとobj_bearに変えて、下の二つをそれぞれ試してもやはり上だけエラーになります。
'加速度 ' + string(obj_bear.gravity)
'加速度方向 ' + string(obj_bear.gravity_direction)
エラー内容も同じですし、他にbearというリソースはないです。
よろしければもう一度ご指摘をお願いします。
0802名前は開発中のものです。
2009/03/01(日) 20:30:28ID:Y4TCiCmT後は普通にするというのはできないでしょうか?
0803名前は開発中のものです。
2009/03/01(日) 20:32:52ID:KiSfn/LGコードエディタで「gravity」って単語が青じゃなくて紫になったら100%それ。
0804名前は開発中のものです。
2009/03/01(日) 20:40:00ID:ab64wVb2パーティクルを使ったことがないので実際どうなるかわからんが、ヘルプによると、
>Normally particles are blended with the background in the same way as sprites.
>But it is also possible to use additive blending.
>This gives in particular a great effect for explosion.
>
>part_type_blend(ind,additive)
>Sets whether to use additive blending (1) or normal blending (0) for the particle type.
(訳)
通常、パーティクルはスプライトと同じように描画されます。
しかし、加算合成を使うことも可能です。
(次の一文必要なさそうなので略)
part_type_blend(ind,additive)
additive
1:加算合成
0:通常
ということで、part_type_blend(ind,additive)を使ってみては?
0805名前は開発中のものです。
2009/03/01(日) 20:40:55ID:U/3M/kF8gravityというスクリプトを作ってたのでそれの名前を変えたら実行できるようになりました。
本当にありがとうございます。
0806名前は開発中のものです。
2009/03/01(日) 20:42:08ID:Y4TCiCmTありがとうございます。
早速やってみます。
0807名前は開発中のものです。
2009/03/02(月) 09:51:07ID:uDCLfBnjもしくはオブジェクトをビューのyと基点を合わせながら横に加速させる方法があれば教えてください
0808名前は開発中のものです。
2009/03/02(月) 22:47:21ID:UrY5j/m3後半は意味がよくわからんが、何かを加速させたいならスピードを一定量ずつ増やせばいい。
0809名前は開発中のものです。
2009/03/03(火) 19:46:03ID:4PMDwMZy0810名前は開発中のものです。
2009/03/03(火) 22:47:02ID:CEgL9EGt公式のフォーラム行ったらチュートリアルから中身見れるのまで色々あるよ。
日本人が作ったのは閉鎖的な国民性から察するにどこにもなさそうだけど。
0811名前は開発中のものです。
2009/03/04(水) 00:48:18ID:q7VrZUsHうpロダごと消失して、資産が無くなった。
一部は手元にあるが、補完していいものなのだろうか・・・。
0812名前は開発中のものです。
2009/03/04(水) 00:48:53ID:q7VrZUsH0813名前は開発中のものです。
2009/03/04(水) 20:14:05ID:TCZrRgAQ英語苦手なんだけど探してみます
0814名前は開発中のものです。
2009/03/05(木) 01:32:36ID:UPJSPUseまいったなぁ・・・
0815名前は開発中のものです。
2009/03/06(金) 01:25:31ID:fiR1q+Tb壁に当たった時垂直なら少しずらすようにする、あるいはある程度ランダムに跳ね返るようにしたいのですがどうすればいいでしょう?
0816名前は開発中のものです。
2009/03/06(金) 09:57:33ID:LhdGRRlvローカル変数の speed と direction (もしくは、hspeed と vspeed)をいじって、
自分の思うような跳ね返り制御を作るべし。
ランダムは、GML関数 random() を使用するとよい。
0817名前は開発中のものです。
2009/03/07(土) 00:49:14ID:0T7+yypjこの基準となる座標はどこでしょうか?
スプライトの中心点でよろしいのでしょうか?
0818名前は開発中のものです。
2009/03/07(土) 01:07:42ID:JJRbXmJTアドバンスドモードでスプライトプロパティーを開いたら
Originってのがみれると思う。
これがそのスプライトの基準座標になる(原点)
デフォルトは(0.0)で一番左上の位置、Centerボタンを押すと
自動的にど真ん中に原点が設定される。
アドバンスドモード切替は
「File」メニューにある「Advanced mode」にチェックを入れると切り替わります。
0819名前は開発中のものです。
2009/03/07(土) 21:49:17ID:0T7+yypjありがとうございます
0820名前は開発中のものです。
2009/03/07(土) 22:55:52ID:3TWKzE700821名前は開発中のものです。
2009/03/08(日) 15:09:06ID:eu0flUmZ同じ絵を何個も登録することでしかアニメーションの長さを調整するしかないのでしょうか
0822名前は開発中のものです。
2009/03/08(日) 17:21:43ID:yExqEGdE透過設定した背景画像を重ねてスクロールさせるってのはだめ?
roomの設定で8枚まで背景画像を設定できる。
また、アドバンスドモードでタイルを使用するとか。
この場合は、自力でGMLで制御する必要があるが。
>>821
ローカル変数 image_speed で、1ステップあたりの送りコマ数を設定できる。
デフォルトは1なので、1ステップで1コマ進む。
image_speedを 1/2にすると2ステップで1コマ進むようになる。
また、マイナスにすると逆送りになる。
0823名前は開発中のものです。
2009/03/08(日) 17:22:44ID:Bfb+aHVHっimage_speed
image_speed = 1; // 1フレーム1コマ
image_speed = 2; // 1フレーム2コマ
image_speed = 0.5; // 2フレーム1コマ
0824名前は開発中のものです。
2009/03/08(日) 17:23:43ID:Bfb+aHVH0825名前は開発中のものです。
2009/03/08(日) 17:37:26ID:yeeZk4Xb1コマ当りの表示時間を秒単位で設定したい場合、room_speedと合わせて
使用することで可能になる。room_speedは1秒間で何ステップ処理するかを
設定する変数で、俗にいうfps設定。(ルームプロパティのsettingsタブのspeedの数値がそれにあたる)
で、obj_aというオブジェクトの1コマ当りの表示時間を0.5秒で設定したい場合,GMLだと
obj_a.image_speed = 1/(room_speed*0.5);
と書いてやる。
0826名前は開発中のものです。
2009/03/08(日) 17:42:43ID:GCOCuTiZ透過設定した背景画像を何枚重ねても一緒にスクロールしてしまう。
強制スクロールなら出来るんだけど。
0827名前は開発中のものです。
2009/03/08(日) 18:04:49ID:yeeZk4Xbルームプロパティーのbackgroundsタブのhor.speed(横スクロール量)ないしはvert.speed(縦スクロール量)
をバックグランド各々に違う値を設定してやればいい
0828名前は開発中のものです。
2009/03/08(日) 18:06:08ID:yExqEGdE一緒に動いてしまう、ってことは、ビューを使っているのかな?
もしそれなら一緒に動くのはあたりまえ。
ビューの動きに応じて背景画像位置の補正をしてあげないと。
グローバル変数の
background_x[0..7]
background_y[0..7]
とかをいじるなり、なんなり。
0829名前は開発中のものです。
2009/03/08(日) 18:08:45ID:yExqEGdE>>825様
補足ありがとうございます。
そして、>>824様と同様、リロードすればヨカタ..(ノ∀`)
0830名前は開発中のものです。
2009/03/08(日) 18:36:46ID:eu0flUmZありがとうございます。
ある画像は2フレーム、ある画像は3フレームみたいな風にアニメーションを作りたかったのですが
少し大変そうですね
0831名前は開発中のものです。
2009/03/08(日) 18:48:53ID:yeeZk4Xbいやいや「設定した秒数のあいだだけ同じコマ」としたい場合は>>825になるだけで
フレーム数で指定するだけならimage_speedの値は単に
1/(表示したいフレーム数)
になるということです。そんなに難しく考えなくていいよ
0832名前は開発中のものです。
2009/03/08(日) 19:14:46ID:yeeZk4Xbサブイメージの関係が若干違うのに気がついた。
0833832
2009/03/08(日) 19:49:01ID:yeeZk4Xb一応思ったことは書いておく。
>>4のヘルプファイルの「Game Maker スクリプト言語 (GML)について」→「グラフィック」→「スプライトと画像」の項
参照願います。
image_speedとは別にimage_indexという変数があって、これは今表示されているサブイメージ番号を保持している
変数であるが、その説明の中に
>値は小数点以下も有効です。表示されるサブイメージは、小数点以下を四捨五入して整数化した値となります
と説明がある。
表示されるサブイメージ番号はimage_index変数で制御されていてステップ毎にimage_speedの値が足しこまれて
いってると考えると1/(フレーム数)だと四捨五入で小数点以下が0.5以上だと次のコマが表示されることになる。
だからループでサブイメージを再生する場合はいいけど1回再生の時は最初と最後のフレームだけ半分になるように
おもう。
なんかひとりよがりなレスしてごめんね
0834名前は開発中のものです。
2009/03/08(日) 20:18:01ID:VURSMlHxみたいにサブイメージごとに長さをバラバラにしたいんじゃないの?
だとしたらコマ増やして調整するか、配列でも使って自分でimage_indexを
コントロールするしかないね。
>>833
原文では「rounded down」つまり切り捨てと言ってるから、四捨五入ってのは
訳し間違いだと思う。ただ実際には微妙に仕様の不一致があって、
Drawイベントに何も置かないデフォルトの描画だと切り捨てされるけど
draw_spriteなどの関数で描画すると四捨五入されるよ。
0835名前は開発中のものです。
2009/03/08(日) 20:30:11ID:eu0flUmZまさに>>834さんの言うとおりです。
やはりコマ数そのもので調整するしかないようですね。
0836名前は開発中のものです。
2009/03/08(日) 21:02:45ID:Bfb+aHVHそれより
├─1枚目─┼2枚目┼3┼─4枚目─┤
と、フレーム数を数えながら、フレーム数の範囲で画像を指定してやる方がいいかと。
<例>
<Create>
image_count = 0;
<Step>
image_count += 1;
if (image_count >= 120) image_count -= 120;
if (image_count < 20) image_index = 0; // 0〜19フレーム
else if (image_count < 50) image_index = 1; // 20〜49
else if (image_count < 80) image_index = 2; // 50〜79
else image_index = 3; // 80〜(120)
考え方。
ステップ数を数える。(image_count)
そのステップ数がここからここまでのときはこの画像、ここからここまではこの画像と個別に定めてやる。
0837名前は開発中のものです。
2009/03/11(水) 23:13:52ID:Qnpz25orttp://www.yoyogames.com/make/tutorials
809の人とは別人ですが、アクションのサンプルを探してます。
0838名前は開発中のものです。
2009/03/12(木) 00:18:26ID:+06GIEDbそこのTutorial:Platform Gamesはサンプルで作成例が段階ごとに見られるようになってるから
同時に2つ起動して片方はそれを表示しながらもう片方で試行錯誤すると覚えが早いよ
これと日本語ヘルプで当面はなんとかなる
0839名前は開発中のものです。
2009/03/13(金) 19:15:24ID:+YfOrsIA・Purchase Reference Number 1-(14桁の番号)
これがパスですよね?うーむ…
0840名前は開発中のものです。
2009/03/13(金) 19:19:18ID:B1p0cXJF0841837
2009/03/13(金) 23:50:19ID:y2i0vPyS色々むさぼって見ます。
0842名前は開発中のものです。
2009/03/14(土) 19:45:29ID:tIr9eZosステップごとに↓のように適応させていくしかないのでしょうか?
{
botan = joystick_direction(1)
keyboard_key_press(botan)
keyboard_key_release(botan)
if joystick_check_button(1,2) = 1
{
keyboard_key_press(ord('X'))
}
else
{
keyboard_key_release(ord('X'))
}
}
0843名前は開発中のものです。
2009/03/14(土) 20:34:54ID:yMyACmE5両方のイベントで同じコードを呼び出せばよかろう。
(ちなみにジョイスティックのイベントはMouseの中にある)
俺はジョイスティックとキーボード判定するスクリプト作ってStepイベントから呼んでる。
xx = joystick_xpos(1) + keyboard_check(vk_right) - keyboard_check(vk_left);
yy = joystick_ypos(1) + keyboard_check(vk_down) - keyboard_check(vk_up);
button = joystick_check_button(1, 1) || keyboard_check(ord('Z'));
基本こんな感じで。(実際には同時押し対策とか組み込む必要あるけど)
0844名前は開発中のものです。
2009/03/15(日) 10:29:34ID:GfuU1PKsゲームの入力キーフラグをセットするような専用のオブジェクトを作ってる。
十字キーとジョイパッドの十字入力の両方で上下左右にさせたかったら、
それぞれの入力イベントで上下左右のフラグを立てる。
で、キーに反応するオブジェクトがステップイベントなどで
上下左右フラグを参照すれば、
同じ動作を複数キーに対応することが出来る。
Step Beginイベントで入力フラグの更新処理をしておくのを忘れずに。
0845名前は開発中のものです。
2009/03/16(月) 07:41:32ID:HfmZHnccいろいろやり方はあるようですが、ステップイベントから呼び出すのは同じみたいですね
0846名前は開発中のものです。
2009/03/17(火) 05:01:13ID:EJdwTMCN入力見て関数予測とかしてるせいかもしれんが異様に重い、入力文字が飛ぶんだけど
0847名前は開発中のものです。
2009/03/17(火) 08:25:59ID:CaGz4CkZコード自体が長いときは、貼り付けた後しばらく止まるけど。
0848名前は開発中のものです。
2009/03/17(火) 20:45:46ID:YSPxjodUFile > Preferences > Scripts and Code >
Show Help on function and variable names
↑このチェックを外して補完を切れば多少は変わるかも
でもまぁ他のコード編集環境を使った方が快適かもしれない
たしか候補が分かるだけで入力補完まではしてくれないんだよね
0849名前は開発中のものです。
2009/03/17(火) 21:02:29ID:EJdwTMCNんで、>>848の通りに補完もどきの設定OFFにしたらスイスイになりました
>>847-848の方ありがd
0850名前は開発中のものです。
2009/03/17(火) 23:06:13ID:8EeLcLHSまあ、反映するにはセーブしてエディタを閉じないといけないから
貼り付けとどっちが楽かは微妙だけど。
>848 補完はCtrl+Pでできるよ。(ヘルプのAdvanced Use>Scripts参照)
0851名前は開発中のものです。
2009/03/21(土) 00:05:09ID:FvUF+tit0852名前は開発中のものです。
2009/03/21(土) 00:27:06ID:cQFO1gC4・・・というか、ヘルプと格闘しながら、
アクションをGMLで自分で書く、というのが一番のGMLの勉強になると思うんだが。
遠回りかもしれないが、がんばってみてはどうか。
0853名前は開発中のものです。
2009/03/21(土) 00:27:10ID:kRQxhdofHelp
>The Game Maker Language (GML)
2) 一部が日本語でここにある
ttp://gamemaker.main.jp/modules/articles/index.php?cat_id=3
最初から1を見るもよし。
2を見て、見つからなければ1を見るのもよし。
0854名前は開発中のものです。
2009/03/21(土) 00:39:57ID:kRQxhdof0855名前は開発中のものです。
2009/03/21(土) 00:54:51ID:FvUF+tit例えばDestroy Instanseのアイコンでが何をしてるか調べようとしても、Destroyで調べてもキーワードでも検索でもそれらしいのが出てこないからインスタンスで調べたら
instance_destroy()
現在のインスタンスを破棄します。
っていうそれらしいのを見つけたけど現在のインスタンスって何のことよ?Destroy InstanseアイコンのSelfの事か?
じゃあDestroy Instanseアイコンのother,objectってどのメソッドを使ってるんだよ。ってなるんだよね。
あとアイコンのDraw_textだと文字が表示されるけど、draw_text(x,y,string)使っても何も表示されねーじゃん。これって別物なのか?
って思っても調べようがないんだよね。
何かいい方法はないもんですかね。
0856名前は開発中のものです。
2009/03/21(土) 01:00:44ID:kRQxhdof例えばobjというオブジェクトを破棄したい場合、
with (obj)
{
instance_destroy();
}
とする。
draw_textの場合、
1) ちゃんとDrawイベントで実行しているか
2) VisibleはONになっているか
3) そもそもそのオブジェクトはROOM内にあるか
この辺をチェックしとけ。
0857名前は開発中のものです。
2009/03/21(土) 01:14:45ID:kRQxhdofinstance_destroy()はご想像通り、Destroy InstanceのSelfと同じことをする。
なら、Self以外のものを破棄したい場合にはどうしたらいいか。
GMLではここでwith文を使う。
with文は、指定した全てのインスタンスで実行するという便利なもの。
with (obj)
{
instance_destroy();
}
ってのは、
オブジェクトがobjである全てのインスタンスにおいて、
{
Destroy InstanceのSelfを実行する
}
と言った感じになる。
>>494, >>497辺りもwith文について書いてある。参考までに。
0858名前は開発中のものです。
2009/03/21(土) 01:29:29ID:kRQxhdof文字列は「"」で括る必要がある。
draw_text (x, y, "moji");
とすると、mojiと表示される。
また、
string = "moji";
draw_text (x, y, string);
としても、mojiと表示される。
Help
>The Game Maker Language (GML)
>GML Language Overview
>Expressions
0859名前は開発中のものです。
2009/03/21(土) 01:38:03ID:DpJJfV3Iここから自分のバージョンに合うの選ぶよろし
D&d Actions And Their Code Equivalents
ttp://gmc.yoyogames.com/index.php?showtopic=334704
0860名前は開発中のものです。
2009/03/21(土) 02:19:43ID:FvUF+tit色々ありがとう。助かります。
draw_textに関してはstepで呼び出してたのが原因でした。
あとdraw_textで変数+文字列を表示するにはどうすればいいのでしょうか。
858の使い方は確認したのですが、string+"moji"などとやっても+まで含めで変数名と解釈されているのかエラーになってしまいます。
>>859
ありがとう。こういうのが欲しかった。
0861名前は開発中のものです。
2009/03/21(土) 08:28:23ID:kRQxhdof自分の環境では
string = "moji1";
draw_text (x, y, string+" moji2");
を実行したところ、「moji1 moji2」と正常に表示された。
もしかして、数字と文字列を同時に表示しようとしたのではないだろうか。
もしそうなら、数字の方はstring(num)を使って数字を文字列に変換する必要がある。
違うのなら、エラーに書かれているメッセージと実行したコードを書いてくれ。
0862名前は開発中のものです。
2009/03/21(土) 08:37:57ID:kRQxhdof正常に表示はされたけど、この書き方はよくなかったっぽい。
多分原因は、string = "moji";のstringをGMがstring()と解釈したからだと思う。
というわけで、変数の名前にstring以外の名前をつける。
str = "moji1";
draw_text (x, y, str+" moji2");
0863名前は開発中のものです。
2009/03/21(土) 13:23:00ID:zhdjiqTz坂の上にいるときは矩形判定ではなく、GMLでインスタンスの中心の足元の点と坂で判定して
上り下りともにスムースに移動できるようにしなければならない
もちろん普通のsolidな壁とも通常どおり判定させる
これできた人いる?
てか過去スレでも話題になってた気がするが、GMでできんのか坂
0864名前は開発中のものです。
2009/03/21(土) 23:32:50ID:FvUF+titこの通りやったら出来ました。
何処かでミスをしていたようです。重ね重ねありがとうございます。
0865名前は開発中のものです。
2009/03/22(日) 02:31:40ID:CIxwNgdY坂ねぇ……。
1) 高い点低い点の座標を記録する。座標から
rate = abs (high_x - low_x)/high_y
として、坂の傾きを求める。
2) 目標のオブジェクトが坂(全体を含んだ長方形)にぶつかったとき、
坂のx座標とオブジェクトのx座標から、x軸において坂のどの辺りにいるかを求める。
1で求めた傾きから、オブジェクトがいる場所の坂の高さを求める。
オブジェクトyをその坂の高さに乗せてやる。
坂ってのはxが増減するにつれて高さも増減している。
(坂の縦方向に注目する。上り坂の始点にいるときは高さ0、終点に近づくにつれて高さが増える)
で、オブジェクトが坂にいるとき(坂にめりこんでるときも)、そのオブジェクトのx座標においての坂の高さを求める。
そして、求めた坂の高さを使って、坂に乗るようにオブジェクトのyを定める、といった感じ。
と思いついただけ書いてみた。
0866名前は開発中のものです。
2009/03/22(日) 02:37:02ID:CIxwNgdYrate = (high_x - low_x)/(low_y - high_y);
多分これで合ってる……かな?
0867名前は開発中のものです。
2009/03/22(日) 02:54:47ID:CIxwNgdY1) 高い点低い点の座標を記録する。座標から
rate = (high_x - low_x)/(low_y - high_y);
として、坂の傾きを求める。
2) 目標のオブジェクトが坂にぶつかったとき、
坂のx座標とオブジェクトのx座標から、x軸において坂のどの辺りにいるかを求める。
1で求めた傾きから、オブジェクトがいる場所の坂の高さを求める。
オブジェクトyをその坂の高さに乗せてやる。
坂ってのはxが増減するにつれて高さも増減している。
(坂の縦方向に注目する。上り坂の始点にいるときは高さ0、終点に近づくにつれて高さが増える)
で、オブジェクトが坂にいるとき(坂にめりこんでるときも)、そのオブジェクトのx座標においての坂の高さを求める。
そして、求めた坂の高さを使って、坂に乗るようにオブジェクトのyを定める、といった感じ。
0868名前は開発中のものです。
2009/03/22(日) 09:35:33ID:gflCZPhk傾きは(high_y-low_y)/(high_x-low_x)だった気がする…
てかcollision_lineて使えないかな?
0869名前は開発中のものです。
2009/03/22(日) 12:08:53ID:dGELDjyLたとえば坂の傾きが最大で1/2だとしたら、右に移動する場合
・まず右に4ドット、上に2ドット動かす
・そこから地面に接触するまで1ドットずつ下げてく(最大で4ドット分まで)
みたいな原理で実現してたと思う。
(実際のコードではループしながらplace_freeで移動先を探すと思うけど)
0870名前は開発中のものです。
2009/03/22(日) 20:01:04ID:mIv6hu6Aルームにobj_meのインスタンスが1つあって、instance_create(x,y ,obj_menu)を実行すると、
x,yの場所にobj_meのインスタンスが移動してobj_menuのインスタンスが生成されないという現象がおきます。
obj_meとobj_menuは見た目はかなり違うので間違えようがなく、試しにobj_meのスプライトを変えるとinstance_create(x,y ,obj_menu)実行後にx,yに出来たものも変更したスプライトのobj_meでした。
ルーム作成時にあらかじめobj_menuを配置しておくとobj_menuはちゃんとあり、やはりスプライトが違うので見た目で混同することはありません。
試しにinstance_create(x,y ,obj_wall)でobj_menuをobj_wallに変更してみたものを実行すると、x,yの位置にobj_wallのインスタンスが生成されobj_meの位置に変化はありませんでした。
ゲームメーカーの再起動もしましたが解決せず意味が分かりません。
考えられる原因は何でしょうか。
0871名前は開発中のものです。
2009/03/22(日) 20:24:23ID:V047b3QMobj_menu自体が生成後の何かやらかしてるくらいしか考え付かない。
obj_meについては必死に探したと思うし。
とにかくもっと情報がないとわかんないね。バグだとしたらこのスレの偉い人が答えてくれるさ
0872名前は開発中のものです。
2009/03/22(日) 20:50:38ID:fNzKc34kデバッグモードで起動して、デバッグウィンドウのExpressionで
instance_number(obj_menu)
とやって、数を確認してみよう。
見えないから存在してないと思ってても実は生成されていたりだとかするかもしれないし。
本当に無かったら、何かほかのオブジェクトが消しているのかもしれないし、obj_menuが自滅しているのかもしれない。
あと、散々既出だが、変数名とリソース名が被ってないかどうかも確認してみてね。
0873名前は開発中のものです。
2009/03/22(日) 21:44:31ID:mIv6hu6Ainstance_number(obj_menu)で数を調べてみたところ、数が0のままでした。
obj_menuのクリエイト時の処理を調べたところ、obj_menuのxとyをobj_meのxとyに入れるという処理を書いてたので、obj_meが移動する原因はこれでした(自分で書いてて忘れてました)
ですので、処理がobj_menuが生成されobj_meの位置が変更された後にどこかでobj_menuを消している処理があるんだと思いソースを調べたのですが、該当する箇所がなかったのでobj_menuを生成するソース意外をコメントアウトしたところobj_menuが生成後消えずに表示されました。
具体的な問題の箇所はこれから探して見ます。ありがとうございました。
0874名前は開発中のものです。
2009/03/29(日) 13:36:12ID:oNLdyzVJその際↓のような式ではダメなのでしょうか
どうにも敵が反応してくれないのですが
if collision_rectangle(x-100,y-100,x+100,y+100,player,false,false) = true
0875名前は開発中のものです。
2009/03/29(日) 14:09:45ID:RQOQ+L9BインタンスIDか負の値。(ヘルプのページの先頭で説明してある)
あと、その用途なら if (distance_to_object(player) < 100) で済む。
0876名前は開発中のものです。
2009/03/29(日) 15:23:34ID:oNLdyzVJすみません、完全にヘルプを見落としてました
ありがとうございます
0877名前は開発中のものです。
2009/03/29(日) 21:40:48ID:CdUYnV/Qconstがなくても変数を宣言時意外に値を変えなきゃいいんでしょうが、
room生成時にteisuu=1とかってすると、roomが変わったときに使えないだろうしglobalを多用はしたくないし。
0878名前は開発中のものです。
2009/03/29(日) 22:15:37ID:iv9jPI98コードでかけないから面倒なんだけど、
Global Game Settings の constants で「定数」の設定ができるよ。
一応、内蔵エディタで定数として認識されるようで、
色が変わって見分けが付くようにもなります。
0879名前は開発中のものです。
2009/03/29(日) 22:36:14ID:CdUYnV/Qありがとう。これで何かと便利に作業できるわ。
0880名前は開発中のものです。
2009/03/31(火) 00:58:37ID:9inYrVEsサブイメージを追加すると表示したときに勝手に画像が切り替わっちゃうんで困ってます。
スプライトのspeedを0にしても、赤くなって適用されてないみたいですし。
0881名前は開発中のものです。
2009/03/31(火) 01:53:49ID:vhB+70FJGM6以上だったら「Set the sprite」アクションのspeedの欄に0を入れる。
GM5だったら「Set the variable」使ってimage_speedを0にするか
image_singleにサブイメージの値を設定すればアニメーションが止まる。
0882名前は開発中のものです。
2009/03/31(火) 19:50:31ID:jf9BJ086ゲームメーカーは好きな絵をゲームに使えるんですか?
マタ自分で絵を作るには何か必要ですか?
作るに当たり嫉妬いたほうがいいこと歯なんですか?プログラミングとかは必要ですか?
0883名前は開発中のものです。
2009/04/01(水) 00:51:50ID:frr6TtlC0884名前は開発中のものです。
2009/04/01(水) 01:01:35ID:4Ky2XYpv>好きな絵をゲームに……
可能。次の質問内容から、自分で描いた画像を使えるかどうかだと思われるが、それも勿論可能。
ただ、別の誰かが描いた画像を使うことについては、その画像を描いた人に訊こう。
>自分で絵を作るには……
絵があればいい。絵を描くのには使い慣れているもので十分。
jpg、png、gif、bmp等いろいろ形式は対応している。
詳しいことはヘルプでも読んでみるといい。
>当たり
当たり判定のことだと思うが、チュートリアルに沿ってゲームを作ってみろ。
>プログラミング
>>2
※個人的な助言
「こういうゲームを作りたい」という意思はあるに越したことは無いが、
もしあるとしてもその気持ちは一度抑えておいて、一度はチュートリアルに沿ってゲームを作るべき。
理由は慣れ。
基本的に、扱い方がよくわからない状態でゲームを作ろうとすると、
自分が何をやっているかがわからなくなり、そもそも何をすればいいのかもわからなくなり、
最終的にパニクって適当に放り込むようになるから。
……そして投稿前に一度は読み直せ。
0885名前は開発中のものです。
2009/04/01(水) 01:07:02ID:4Ky2XYpv何をどんな風に作りたいのかという明確なデザイン。
ゴールなくして製作は進まん。
0886名前は開発中のものです。
2009/04/01(水) 04:39:49ID:4Ky2XYpv上の方で時間についての話があったときに出てきた「秒数×room_speed」だが、
あくまでこれは『1秒間に「room_speed」の回数だけ更新されるルーム内においての「秒数×room_speed」のフレーム数』である。
確かに式の上で割れば秒数になるものの、これは実際の秒数にはならない。
例えばGMでクイズを作ったとしよう。
(単なる例えなので、GMでクイズなんて作るかなんて突っ込みはなしだぞ
例えがクイズで納得いかないなら、麻雀にでも置き換えてくれ)
「以下の問いに答えよ。制限時間10秒」なんてものを作りたいとする。
秒数×room_speedを使おうとすると、room_speedが60fpsだとしてstep数は600になる。
だが、この600フレームは「60fpsで600フレーム」というだけであり、6秒ではない。
処理落ちというのがあるからだ。
「何だよ処理落ちかよ。処理落ちならどうせ大した差にならねぇだろ」等と侮る無かれ。
『ウインドウをドラッグすることで、ゲームの処理が止まる』からだ。
どういうことかというと、600から0に向かってカウントダウンが始まったとしても、
ウインドウをドラッグ、というより、マウスの左ボタンを押し続ける限りゲームの処理が止まるので、
カウントダウンを500で止めたまま考え続けることができる。
そしてマウスの左ボタンが離されたときに、また500からカウントダウンが再開されるわけだ。
つまり実質的に時間に制限はなくなるのである。これは開発側としては避けたい。
これを回避するには、ステップ数ではなく時間で処理するべき。
処理を止めても時間は止まらないので、時間を取得して、カウントダウンを開始した時間との差で経過時間を求めればいい。
時間が過ぎていたのならユーザーからの入力を受け付けずに「時間切れ」とする等、その辺の工夫は省略。
0887名前は開発中のものです。
2009/04/01(水) 08:57:30ID:qofncwoB時間本位じゃなくフレーム本位でもいいような気がするけどね。
チート回避できないじゃないか、という話なら、
より根本的なところから自分で実装すべきで、GMは使わない方がよい。使うなって話になってくるし。
0888名前は開発中のものです。
2009/04/01(水) 09:24:49ID:4Ky2XYpv>>887の言う通り、シューティングやアクション、というより、一般的にはフレームの方がいいだろう。
俺はただ、時間を気にする必要がある場合はフレームではなく時間で、と言いたいんだ。
0889名前は開発中のものです。
2009/04/01(水) 21:04:56ID:Ji2nf9I9timeline_indexとは違いますよね?
たとえば「player_attack」というタイムラインを呼び出すにはどのように書けばよろしいのでしょうか
0890名前は開発中のものです。
2009/04/01(水) 21:34:44ID:gM0k17ZGあと、他にplayer_attackってスプライトとかオブジェクトとかあったら名前変えとくように。
0891名前は開発中のものです。
2009/04/01(水) 22:02:59ID:Ji2nf9I9まさにドンピシャ
その二つとも問題でした。
名前を変え、timeline_positionを0に戻したら正常に動きました
ありがとうございます。
0892名前は開発中のものです。
2009/04/01(水) 22:15:19ID:oibkad4vおお。ありがとう。
インスタンス生成時に毎回speed0にすればしたいことは出来るかな。
と、思ったんだけどうまくいかないです。
生成時にspeedを0にして、ルームをクリエイト時に以下のコードを実行させてもうまくいかない。
testid=instance_create(x,y ,obj_char)
testid.sprite_index =1
testid=instance_create(x+10,y ,obj_char)
testid.sprite_index =2
testid=instance_create(x+20,y ,obj_char)
testid.sprite_index =3
obj_charは同じサイズで見た目は違う画像を数枚セットしたスプライトを設定したオブジェクト何で設定したスプライトの1,2,3枚目を横並びに表示させたいんだけど、
それぞれobj_char設定したスプライトと全く関係ないスプライトが横並びに表示されるんだよね。
表示されてる関係ないスプライトは他のスプライトのスプライトでなんでobj_charとは何の関係もないはずなんで全く意味が分かりません。
原因は何なんでしょうか?分かりにくくてすいません。
0893名前は開発中のものです。
2009/04/01(水) 22:53:07ID:SJGNEKecあるスプライトリソースの一枚目、二枚目を表示させたかったら、それは
image_index だ。
間違えやすいんで、気をつけて。
0894名前は開発中のものです。
2009/04/01(水) 23:09:56ID:oibkad4v0895名前は開発中のものです。
2009/04/01(水) 23:37:01ID:oibkad4vroomのCreatinCodeで宣言した変数は他のコードからどうやって参照するんでしょうか。
例えば名前がroom0のroomのCreatinCodeでtest = 10 として、
オブジェクトでkekka = room0.test;とするとUnknown variable testと怒られてしまいます。
一応roomのあたりのヘルプを読んだのですがやり方が書いてなくて解決できません。
よろしくお願いします。
0896名前は開発中のものです。
2009/04/02(木) 00:04:54ID:12Xo24fnglobal ならグローバル変数として残るだろうけどね。
なもんで、そのルームの設定変数を保持するオブジェクトを作りルームに配置して、
そのオブジェクトのローカル変数を参照するような仕組みにするしかないと思う。
0897名前は開発中のものです。
2009/04/02(木) 00:49:29ID:pBMNv8u+オブジェクトを使ってみます。ありがとうございました。
0898名前は開発中のものです。
2009/04/02(木) 09:15:37ID:MtqD7NS7action number 1
of Step Event
for object HangBlock:
Error in code at line 1:
if (follow_screen.y < y-0)=true
at position 19: Unknown variable y
と出るんですが僕だけでしょうか?
0899名前は開発中のものです。
2009/04/02(木) 10:31:22ID:YmJRLumxfollow_screenオブジェクトがルームに確実に存在しているか?
follow_screenというリソース名がオブジェクトのほかにかぶってないか?
を確認してみてね。
0900名前は開発中のものです。
2009/04/05(日) 23:34:45ID:HB4rPORPGM7はどこで無料DLできますか?
0901名前は開発中のものです。
2009/04/06(月) 00:55:18ID:F0Bg928K極力、過去のOSにも対応したいのと、低スペックVRAMでも動作させたいから古いGMを使ってるんだが、
これから現役のOSに対応しないのであればGM7を使わざるを得ないのかな・・・
GMバージョン毎の出力するEXEの最低動作環境をまとめた情報が欲しい
おまいらはGM7使ってんの?
0902名前は開発中のものです。
2009/04/06(月) 01:33:15ID:Gz7Bqoznつttp://www.wikihouse.com/GameMaker/index.php?GameMaker
これじゃ駄目なん?
0903名前は開発中のものです。
2009/04/06(月) 19:15:31ID:F0Bg928Kあと日本語描画のmbtextで相変わらず下が途切れるフォントがあるんだけど・・・
あとピクセル毎にアルファ値もったフォント画像の出力と、7.0でアルファブレンドってできないの?
0904名前は開発中のものです。
2009/04/06(月) 23:39:29ID:dy3rqE98Game Startは一番最初のルームにいるインスタンスにしか呼ばれない。
Advanced Use>More about rooms>Advanced settings で詳しく解説してある。
画像の出力はそもそもビットマップ形式しかできないからアルファ値なんてない。
入力の方ならsprite_set_alpha_from_spriteなりsprite_add_alphaなりでできる。
0905名前は開発中のものです。
2009/04/07(火) 12:44:13ID:R0Vs8A35直接、あるオブジェクトの方向を向かせることは出来ますか
例えば敵に弾を撃たせる時、
「direction(自機の居る方向)」と指定出来ると命令を組むのが楽になるのですが
0906質問ならまず「バージョン/GMLを使えるか否か」
2009/04/07(火) 17:01:23ID:SLVCHpzp0907名前は開発中のものです。
2009/04/07(火) 17:41:38ID:w5DdDAUZ0908名前は開発中のものです。
2009/04/07(火) 18:36:56ID:nTAUo5oYそれだとスプライトの向き変えてるだけだから
direction = point_direction(...)とするべき
でステップでimage_angle=directionてすればいい
0909905
2009/04/07(火) 20:05:09ID:R0Vs8A35次から活用させて貰います。
もうちょっとヘルプにも目を通しておいた方がよさそうですね…
0910名前は開発中のものです。
2009/04/10(金) 14:16:55ID:sPx7R60Y範囲選択して一気に複数のタイルオブジェクトを置けると、作業効率が上がって便利なんだが。
誰か英語饒舌な人、本家YOYOGAMEに要望出してください。7.1として。
0911名前は開発中のものです。
2009/04/10(金) 18:02:42ID:8Y2ZXsLpフォルダとフォルダの間に移動させようとしても、どうしてもフォルダの中に入ってしまう
上手いフォルダ整理の方法ありませんかね
0912名前は開発中のものです。
2009/04/10(金) 18:13:26ID:sPx7R60Y0913名前は開発中のものです。
2009/04/10(金) 19:08:28ID:4dRwYguDshiftだかctrlだかを押しながらドラッグで連続で置けたと思う、がやはり手作業は面倒。
俺はバックグラウンドもオブジェクトの配置も、全てRoom Creation Codeで済ませている。
GMLを使い慣れている人には使える方法かもしれない。
>>911
確かにあれは使いづらい。仕方が無いので↓の方法で無理矢理並び替えている。
□Scripts
├□FolderA
├□FolderB
├□FolderC
└Script0
↑のScript0を、FolderAとFolderBの間に置いて
↓のようにしたいとする。
□Scripts
├□FolderA
├Script0
├□FolderB
└□FolderC
1) 最終的に、下からどういう順番になるかを考える。
下からFolderC、FolderB、Script0、FolderA
2) 1の順番で、並び替えたい階層のフォルダ(例で言う□Scripts)にドラッグする。
1.□FolderCが一番上にくる。
2.□FolderCの上に□FolderBがくる。
3.□FolderBの上にScript0がくる。
4.Script0の上に□FolderAがくる。並び替え完了。
0914名前は開発中のものです。
2009/04/11(土) 00:47:40ID:7HFwgsR3例えば16x16設定のtileで、4つのtileを合わせて配置するものを
これは右上これは左下と、ひとつずつ配置するのは手間ということ。
32x32で範囲選択してガンガン配置していきたいでしょ。シフトで連続配置とかも当然。
要するに、自分が実際にゲーム作ってみようとした時に、使いにくくないかということ。
規則的ではないデータのtileマップを
GMLではなくGUI上で視覚的に行いたいというのがそもそものツールの意義であって。
あと、いい加減UNICODE対応もしてほしい。
フォントも画像リソース埋め込みだと著作権が面倒っつーか、すぐ問題になるんで
フォント情報指定してGDIでレンダリング出来るようにしてほしい。
おまいらちゃんとフリーフォント使ってる?
MSゴシックとかそのまま画像埋め込んだらアウトだよ。
マジで誰か英語できる人いないか?要望まとめて出そうぜ。
0915名前は開発中のものです。
2009/04/11(土) 00:55:17ID:eB/zw6to編集画面でtileサイズ指定を変更してガンガン配置していけばいいんじゃない?
連続配置もできるし。
ごめんだけど俺と同じで説明下手で何言いたいのかよく伝わってこない。
>フリーフォント使ってるか
使ってる。
売る前提の奴は気にするのが普通だ。
0916名前は開発中のものです。
2009/04/11(土) 01:40:43ID:Cu+YkeYB以前同じ様なことを思った。GMはエディタまわりがすこぶる弱いんだよな
選択範囲とかできないし、透過処理や任意のidを割り当てるとかいったこともエディタ側からはムリだし
あくまでもGMは小規模向けだからしょうがないといえばそれまでだけど
0917名前は開発中のものです。
2009/04/11(土) 03:02:22ID:P+A6z2ZSあまり肥大化させると起動にものすごく時間かかりそうだね。
0918名前は開発中のものです。
2009/04/11(土) 03:39:43ID:weOOsaiW一応本家のフォーラムにも要望集めようぜってスレは立ってる。
ルームエディタの改善やUnicode対応も提案されてたはずだよ。
ちゃんとまとめて開発チームまで届ける気があるのかは疑問だけど。
>917
ソースのチェックならコンパイル時(.exe作る時)に済ませてるはずだが……
リソースのことだったら、必要になるまで読み込まないように指定することも
外部ファイルから読み込むように作ることもできる。
0919名前は開発中のものです。
2009/04/11(土) 09:49:47ID:P+A6z2ZSバグつきのオブジェクトを作ってやってみたらコンパイルできちゃったけど
0920名前は開発中のものです。
2009/04/11(土) 10:07:45ID:eL+URyfFこういうことじゃないっすかね。
16*16のtile4つで32*32にしたいけど
現状はこうしたかったら16*16のA,B,C,Dを1個ずつ置かなきゃならない。
AB
CD
それよりこの配置を指定して1クリックでA,B,C,Dを配置したいってことじゃないかな。
0921名前は開発中のものです。
2009/04/11(土) 11:44:43ID:Ex0Hf7qa>>915の指摘しているように、Backgroundリソースでタイルサイズを変更しながらやるか、自前でルームエディタツールを作るしかないかも。
前者はそうとう計画性を持ってタイルを作らないと、オフセットとか弄りまくりになるからやはり面倒。
後者は自前ツールでマップデータをデータファイルなりにして、GMLでデータを読み込むようにするのだが、
ルーム開始時で一気にタイルを配置するのに時間がかかったりするし、一長一短。
これ以上の解決方法は無い・・・かな?
0922名前は開発中のものです。
2009/04/11(土) 12:52:22ID:7HFwgsR3その通りです。丁寧な説明サンクス。
32x32tileに設定すると本来の16x16粒度のtileが置けなくなりますし。
自前ツール&データ読み込みも一考の価値があるかもですが、
それで得られるコストのトレードオフを考えると、GMタイルエディタで完結してくれたほうが利便性は良いのかなぁ、と。
あとMr0氏のbGMスクリプトのogg再生でループポイントって設定できないんですかね?
垂れ流しループ曲ではなく、
イントロ→メロ→(ループ)→メロ→って感じに再生したいのですけど。
0923名前は開発中のものです。
2009/04/11(土) 16:05:56ID:Ex0Hf7qaシフトキー押しながらドラックすると複数タイルを選択できた。しらなかった・・・;
よく読んだらマニュアルにも書いてあった。
>>921はわすれてくらさいorz
0924名前は開発中のものです。
2009/04/11(土) 20:14:52ID:7HFwgsR3orz
情報ありがとう・・・。
マニュアル読んだ後、首吊ってきます。
フォントのGDIレンダリングとbGMループポイントの件は頼んだ・・・。GM万歳
0925名前は開発中のものです。
2009/04/11(土) 22:18:49ID:eB/zw6to0926名前は開発中のものです。
2009/04/11(土) 22:38:59ID:weOOsaiW文法的なエラー(括弧の数が合わないとか)はコンパイル時にチェックされる。
変数が設定されていないといった実行時に起きるエラーは
そのコードが実行されるまでは何も起こない。
「起動時にすべてチェックする」ってことはないです。
何にしても、起動が遅くなるのはスプライトとかのリソースの影響がよほど大きい。
0927名前は開発中のものです。
2009/04/11(土) 23:17:53ID:Cu+YkeYBそれは敷き詰めて置くような場合。
基本的にタイルエディタは任意の位置のタイル同士を選択して複製することはできないよ
0928名前は開発中のものです。
2009/04/12(日) 00:59:49ID:JmTcdYfV0929名前は開発中のものです。
2009/04/12(日) 01:05:15ID:HCybsZXAってのが作ろうとすると意外と難しいな
2つ同時に押すと斜めに行ってしまったり、
歩いてる途中に別のキーを押すと絵だけ横向いてしまったり
0930名前は開発中のものです。
2009/04/12(日) 01:53:55ID:BTylIN/l↑→同時押しで右上を向いているスプライトにして右上に動かしているのですが、これら二つを離したとき上か右を向いてしまいます。
上や右単体ならキーを離したときにその方向を向いた静止画を表示させればいいのですが
複合入力は離す際に完璧に同じタイミングと言うのは難しく上か右かを離したとみなされてしまうので上記のようになってしまうのです。
どうにかしてななめ移動の後二つのキーを離したらななめを向いたまま静止するスプライトを表示させたいのですがどうすればいいでしょう?
Gmは5.3です
0931名前は開発中のものです。
2009/04/12(日) 02:15:47ID:31fdbBGhその場合は、キー判定をキー入力イベントで処理するのではなく、
GML関数によるキー判定スクリプトを定期的に呼び出すような仕組みにしなければならないが。
0932名前は開発中のものです。
2009/04/12(日) 08:45:06ID:HCybsZXA毎ステップにその変数を元にスプライトを表示させるとか
0933名前は開発中のものです。
2009/04/12(日) 12:40:44ID:GE0xp6XRキーイベントを使うのなら、押している間(Keyboard)を使うべき。
(自分はBeginStepでキー判定を処理しているが。)
そして、キーが押されていれば動き、押されていなければ動かないとする。
例
<Begin Step>
// キーのフラグ
up = 0;
down = 0;
left = 0;
right = 0;
<Keyboard - UP>
up = 1; // キーが押されていたらフラグを書き換える
<Keyboard - DOWN>
(以下略)
0934名前は開発中のものです。
2009/04/12(日) 12:41:37ID:GE0xp6XR<Step>
/*
* まず、up down left rightを組み合わせたときの方向を決める。
* upとdown、leftとrightが同時に押されていたとき、どちらを優先させるか等を
* if文等を使って好きなように組む。(つまり、同時押しの処理を決める)
* (↑ >>929の同時押しによる動作は、斜めに行かせることもさせないことも、ここで決めることができる)
*
* 方向は全部で上下左右斜めの8方向+押されていないときの9種類。
* 8方向の時はスプライトをその方向を向いているものにする。(← >>929の移動方向と画像の方向のすれ違いはこれで解決)
* 押されていないのなら何もしない。(← >>930の「斜めを向いたまま静止」はこれで解決)
*/
// ここで同時押しの処理
if (↑で求めた最終的な方向が静止) // どれも押されていないときは
{
image_speed = 0; // 止める
// このままだと歩き途中(片足前)で止まることもある。
// 立ち止まらせたいのならimage_indexをいじる。
}
else // どれか押されていれば
{
image_speed = 0.2; // 歩かせる
}
0935名前は開発中のものです。
2009/04/12(日) 12:52:57ID:GE0xp6XR>>934の一行目は、(>>933の続き)な。
0936名前は開発中のものです。
2009/04/12(日) 13:14:11ID:BC+Eu9Rz同時といっても通常であれば1 frame (60fpsなら1000/60ms)内でキー動作が同期していないと
同時に操作したとみなされないので、これに幅を持たせたらいいんじゃないかと思う
例えば、キーの入力処理は1 frame ごとで出力処理は3 frame ごとにするとか
0937名前は開発中のものです。
2009/04/12(日) 14:23:37ID:GE0xp6XRjFontMakerでIPAフォントから作った画像を使うのはいいんだろうか。
もし駄目なら、他にシンプルで使えるフォントはないだろうか。
0938名前は開発中のものです。
2009/04/12(日) 14:37:56ID:GE0xp6XRjFontMakerやmbtext使っている人はどんなフォントを使っているか教えてほしい。
0939名前は開発中のものです。
2009/04/12(日) 15:24:49ID:GE0xp6XR>>930は同時に離すときの判定がシビア過ぎるのをどうにかしたかったのか。
>>934じゃ>>930の解決にならんかった。失礼。
右上が押されている状態で右か上を離したとき、しばらく右上を向かせていなければいけない。
そう考えると、>>931-932しか思いつかん。
0940名前は開発中のものです。
2009/04/12(日) 16:50:53ID:Y+HFv01Vif image_index == 7{
image_index = 5;
}
0941930
2009/04/12(日) 17:00:18ID:BTylIN/l0942名前は開発中のものです。
2009/04/12(日) 17:03:02ID:GE0xp6XRimage_indexは、image_speedの分だけ毎フレーム加算されていく。
image_speedが少数なら、image_indexも少数で加算されていって、画像表示にはその整数部分が使われる。
だから、image_indexがぴったり7になったとき、とするより、image_indexが7以上のときとするといい。
0943名前は開発中のものです。
2009/04/12(日) 17:11:21ID:Y+HFv01Vありがとうございます
おかげで出来ました
image_speedは整数だったので、=でも大丈夫かと思ったのですが
なにか問題があったみたいですね。
0944名前は開発中のものです。
2009/04/12(日) 21:43:25ID:BTylIN/lどのようにすればいいでしょう。
0945名前は開発中のものです。
2009/04/12(日) 22:11:31ID:vbfiXVRM例えば
1つのスクリプトの中で
hensuu = 0かつエンターが押されたら、
{
hensuu = 1
@
}
hensuu = 1かつエンターが押されたら、
{
hensuu = 2
}
というのをエンターを押しっぱなしにしても2個めのif文で偽になってほしいんですがうまくいきません。
@の部分に、keyboard_clear(key) かio_clear()を入れてみると、
偽にはなるのですが、何故か1秒ほど押し続けると真になってしまいます。
0946名前は開発中のものです。
2009/04/12(日) 22:35:33ID:BC+Eu9Rzバージョンが分からないから7で答えると
未レジストならstep event あたりでimage_alphaを操作して
draw event には何も置かない
レジストしているならdraw_sprite_ext()で自由に設定できるよ
>>945
たぶんコードに関しては
if()
{
//コード内容
}
else if()
でおkだと思う
@でコードが終わってもいいなら@にexitを置いてもいいような気もする
>@の部分に・・・
はキーマップやデバイス状態がクリアされても、hensuuはクリアされるわけではないから
2回目のif文が次回のstepで呼ばれる
0947名前は開発中のものです。
2009/04/12(日) 22:51:51ID:BTylIN/lあ、すみません5.3です。
GMLは良く分かりません…辛うじて〜extで描写スプライトを透過表示することはできたのですが
ステップごとにalpha値を増減させる方法がちょっと良く分かりません。
0948名前は開発中のものです。
2009/04/12(日) 23:05:49ID:yJ6RnAzakey press イベント内で処理するのが簡単かな。
key press イベントは、キーが押されて無い状態から押された状態になったときだけ呼ばれるんで、
押しっぱなしで連続入力されるってことがない。
キー情報の取得をGML関数でやりたいのなら、
前ステップのエンターキーの入力情報を記録しておいて、
現ステップのエンターキーの入力情報と見比べる、ということをすればよい。
どういうことかというと、前ステップでエンターキーが押されていない状態でかつ、
現ステップでエンターキーが押されている状態のときのみ処理する、っていう風にする。
ので、前ステップのキー入力状態を表す変数が必要になる。
キー入力の回数で条件分岐させたかったら、カウントする変数を用意して、
入力されたときに加えるようにし、その値をif文で利用すればよい。
0949名前は開発中のものです。
2009/04/12(日) 23:12:46ID:BC+Eu9Rzアイコン形式でほとんど書かないから細部が微妙だけど、流れだけ
create event で variable set (例 変数名myalpha; 値 1 relative チェックなし)
step event でvariable set(例 myalpha; 値 -0.02 relative チェック有)
if文で完全に透明になった後の処理 if(myalpha < 0) 略
draw event でext関数のalpha値の引数にmyalphaを設定
こんな感じ?
0950名前は開発中のものです。
2009/04/12(日) 23:16:30ID:BTylIN/lありがとうございました。
0951名前は開発中のものです。
2009/04/12(日) 23:54:51ID:vbfiXVRMできました。ありがとうございます。
0952名前は開発中のものです。
2009/04/13(月) 08:14:52ID:upr0fieLそのスプライトのアニメの1枚目ばかり表示されてしまうのだが…
って、向きが前ステップと変わった時だけ表示変更の処理にすればいいのか
0953名前は開発中のものです。
2009/04/13(月) 11:40:44ID:A8YoijIx0954名前は開発中のものです。
2009/04/13(月) 14:30:30ID:Vxj2zKsa呼び出したいユーザ定義しているオブジェクトのインスタンスを操作したいのか、
それとも、呼び出し側のインスタンスに、他のオブジェクトのユーザ定義のコードを適用したいのか。
前者の場合は、
with(obj) {event_user(0); }
と記述する。
こうすると、objオブジェクトのユーザ定義0番が、
ユーザ定義されているオブジェクトのそれぞれのインスタンスに適用される。
(objはインスタンスIDでもよい)
後者の場合、
event_perform_object(obj, ev_other, ev_user0);
と記述する。
こうすると、objオブジェクトで定義されているユーザ定義0番のコードが、
呼び出したインスタンスに対して実行される。
前者はあるインスタンスが他のインスタンスに命令を下すイメージに対し、
後者はスクリプトを呼び出したようなイメージに近い。
0955名前は開発中のものです。
2009/04/13(月) 22:30:25ID:A8YoijIxもう一つ、自分はそれを「前方のオブジェクトを調べる、話しかける」時に使いたいのですが、
調べる側のオブジェクト(=主人公)にそのイベントを入れる場合上記のobj名を毎回変えないといけません。
objに変数名を入れておいて処理する前に後から代入すればいいのでしょうが、objの名前を取得するにはどのようにすればいいのでしょう?
今回の場合は「向いている方向にある調べられるオブジェクト」を取得したいのですが…
方向については主人公を動かす際に数値(上向きなら8のようなテンキー配置)で決めているのでそこは大丈夫です。
0956名前は開発中のものです。
2009/04/14(火) 00:35:14ID:5P0slkG/GM6以上で「Change the sprite」アクションを使ってるんだったら、
subimageを0じゃなくて-1にすればいいでよ。
GMLでやってるんだったら、「sprite_indexを変更するとそのたびに
サブイメージの枚数を超えないようimage_indexが調整される」ことに注意。
イベントの中で何度もスプライトを割り当て直していて、もしその中に
フレーム数が1のスプライトがいたらimage_indexが常に0に調整されてしまう。
>>953
使うのは名前じゃなくてインデックスだべ。
(相手のインスタンスID).object_index
向いている方向のインスタンス調べるのはinstance_placeとかで。
0957名前は開発中のものです。
2009/04/14(火) 01:02:49ID:GPS2DXGYpath_start(path,speed,endaction,absolute);を使うとこれを呼んでるオブジェクトが動いちゃいます。
0958名前は開発中のものです。
2009/04/14(火) 02:37:49ID:5P0slkG/0959名前は開発中のものです。
2009/04/14(火) 08:46:36ID:YttNmD/l0960名前は開発中のものです。
2009/04/14(火) 15:17:30ID:d9KopV2mあそこがないと、bGMスクリプトとか日本語スクリプトが手に入らない
0961名前は開発中のものです。
2009/04/14(火) 15:41:29ID:JVweFrbX管理人さんが一時的に落としてるのか、
レンタルサーバー側から強制的に落とされたか分からん。
いずれにしても、早期復帰が望まれますなぁ・・・。
0962名前は開発中のものです。
2009/04/14(火) 19:07:31ID:eDOQ4eLrこれはやはりどうしようもないことなのかな?
1フレーム差で鳴らさないとダメか
0963名前は開発中のものです。
2009/04/14(火) 19:58:36ID:kBnf35ThbGM.exeはオープンソースにしないのかな
よこしま氏生きてるか〜?
0964名前は開発中のものです。
2009/04/14(火) 20:58:29ID:eDOQ4eLrこれって自分だけですかね?
他の人が作ったものをプレイしてみてもそのようなことにはならないのですが
(もちろんプレイしたのは同じPCです)
普通にbGM_playスクリプトを使うだけでいいんですよね?
他の画像とかで容量使いすぎてるのかな?
0965名前は開発中のものです。
2009/04/14(火) 23:20:25ID:edegRGxj原因は、2009/04/10 早朝(日本時間)に受けた、サウジアラビアのハッカーらしき人物からの手動荒らし行為です。
サイト復旧作業後に、安全のためサーバー移転を行う予定です。
日程などが決まり次第、ここでお知らせ致します。
ご不便をおかけして大変申し訳ありません。
管理人:よこしま
0966よこしま
2009/04/15(水) 04:12:08ID:GNlkvOra>ピクセル毎にアルファ値もったフォント画像の出力
常にそのような画像を出力するバージョンを作ってみました。
ttp://gamemaker.main.jp/dlfiles/jFontMaker2.3.0-alpha.zip
しかし、
var z, h;
z = sprite_add_alpha(working_directory + "/Zenkaku_20px.png", 22, false, true, 0, 0);
h = sprite_add_alpha(working_directory + "/Hankaku_20px.png", 1, false, true, 0, 0);
mbtext_setfont(z, h, 20);
と実行すると2行目(全角画像の読み込み)で、
「Unexpected error occured when running the game.」 が出て終了してしまいます(GM 7.0 Pro)。
このエラーが出なければ使えるかもしれません。
>>962
すみませんが、bGMの仕様上どうしようもありません。
ただ、bGMスクリプトをいじってexecute_program()の実行をキューイングすると改善するかもしれません。
>>963
生きてます!
bGM.exeはソースを公開しようと思っていたのですが、ソースを消失してしまいました。
>>965
早速のご転載ありがとうございます。
0967名前は開発中のものです。
2009/04/15(水) 07:40:48ID:qqM6dRq4あ、生きてた
乙であります
>bGM.exeはソースを公開しようと思っていたのですが、ソースを消失してしまいました。
なん・・・だと・・・?
0968名前は開発中のものです。
2009/04/15(水) 08:40:35ID:7eoiNWlxお疲れ様です。
>z = sprite_add_alpha(working_directory + "/Zenkaku_20px.png", 22, false, true, 0, 0);
>と実行すると2行目(全角画像の読み込み)で、
>「Unexpected error occured when running the game.」 が出て終了してしまいます(GM 7.0 Pro)。
外部から画像を取り込むときは、画像が横一列に並んでいるものと想定しているようです。
jFontMakerで作られた画像は22枚の画像が縦一列に並んでいます。そこが問題だと思われます。
jFontMakerの方で修正なさるか、以下の方法で解決できます。
1) jFontMakerで画像を作る。
2) Create from Stripで読み込み、22分割する。
3) Save as Stripでbmpとして保存する。(横並びの画像として保存される)
アルファチャンネル付きpngにしたい場合は、アルファチャンネルを差し込むソフトが必要になります。
0969名前は開発中のものです。
2009/04/15(水) 08:46:54ID:7eoiNWlxアルファチャンネル付きpngにしなくても、
GM内で、通常の画像とアルファチャンネル用の画像を用意して、
sprite_set_alpha_from_spriteを使うことでも解決できると思います。
0970名前は開発中のものです。
2009/04/15(水) 09:27:42ID:wdjWF5fjコンテストに出そう。
小さくまとまってしまってはいけない。
3分で世界を革命しろ。
0971名前は開発中のものです。
2009/04/15(水) 09:30:47ID:Df+UInj6GMから外部プログラムに引数渡す方法とか書いてあるドキュメントあります?
指針が分かればこちらでも作れるかも
情報plz
0972名前は開発中のものです。
2009/04/15(水) 11:15:11ID:53Rcwwsmprog : 実行ファイル名
arg : コマンドライン引数
wait : プログラム実行終了まで待機するかどうかのフラグ
0973名前は開発中のものです。
2009/04/15(水) 12:04:50ID:Df+UInj6exe内の関数呼び出しとかできないのかな
0974名前は開発中のものです。
2009/04/15(水) 14:51:48ID:qxRyiiJTそういうことしたいならDLLを直接叩けばいい。
だけど、DLLを利用するはPro版である必要があるんで、
Liteでも使えるように bGM はDLLにしなかった経緯がある。
多分bGMは、2重起動したときに後から起動した側が前のプロセスに対して
命令を送っているような感じで動いていると思う。
0975名前は開発中のものです。
2009/04/15(水) 15:38:57ID:Df+UInj6あともうひとつ聞きたいんだけど、Game Settingでウィンドウスケール200%にしたり
フルスクリーンにしたりすると、自動的にバイリニア補完されてピクセルがボケたようになるんだけど
補完しないポイントサンプリングみたいにできないんですかね?
下のチェックボックス外しても機能しないし
0976よこしま
2009/04/16(木) 01:25:39ID:Ui8U3b4r>外部から画像を取り込むときは、画像が横一列に並んでいるものと想定
その通りでした!
おかげさまで直すことが出来ました。ありがとうございます。
ttp://gamemaker.main.jp/dlfiles/jFontMaker2.3.1-alpha.zip
使い方:
ゲーム起動時に1回、>>966のGMLコード(4行分)を実行すれば、
アルファチャンネル付きの全角文字が描画できます。
>>971
bGMの仕組みについては、以下をご参照ください:
・ Googleにある http://gamemaker.main.jp/modules/articles/article.php?id=25 のキャッシュ
・ bGMの説明画像 ttp://gamemaker.main.jp/dlfiles/img125-bGM.png
・ bGMスクリプト
説明画像にある青のbGM.exeは、Audiereを呼んで音声再生を行っているプロセスです。
この青のbGM.exeは、非表示で空のウィンドウを持っていて、
そのタイトルかウィンドウクラスが、bGM_private_generate_pid()で生成されたユニーク文字列になっています。
緑のbGM.exeは、その非表示ウィンドウをFindWindow()で探して、PostMessage()でパラメータを渡して即終了します。
変な実装ですみません。
0977名前は開発中のものです。
2009/04/16(木) 06:27:39ID:FlZQEOy3playだとそのまま再生してしまうところを、そこで再生せずに後からすぐに再生できるような関数。
GMLでいうsound_restore(index)みたいなもの。
これがあると、あらかじめBGMをロードさせておいて、(若干の遅れはあっても)曲を開始させたいタイミングで再生できるようになるので。
0978名前は開発中のものです。
2009/04/16(木) 06:44:07ID:sC/2txZVやりたきゃ自分で調べて一から作れ。
0979名前は開発中のものです。
2009/04/17(金) 08:35:51ID:1Yx1rF1j0980名前は開発中のものです。
2009/04/17(金) 08:40:45ID:1Yx1rF1jhttp://www.yoyogames.com/make/browse/?beta=1&sort=top-rated
http://www.yoyogames.com/make/browse/?incomplete=1&sort=top-rated
やりたくなるようなゲームがひとつもない
質より量か
0981名前は開発中のものです。
2009/04/17(金) 12:02:11ID:eamDi3auゲーム中にウィンドウタイトルバーのキャプションを変える必要ない時でも、全ルームに同じの書かないといけないの?
0982名前は開発中のものです。
2009/04/17(金) 12:12:18ID:iYbsMpo1フォーラム見たらわかると思うけど、公式住人に洋厨が多くてセンスとスキルがアレなだけ。
(日本のゲームをパクってシレッとしている&アメリカ製だと思い込んでるあたり特に白んぼの本領発揮)
Ordos MachinaとかBlack War 2020なんかはゲーム的にも演出・グラフィック的にもかなりハイレベルだったけど、
どうもその手の人たちは公式を避けているように思われる。
それにしても公式のTDSはゾンビゲーとマンコ付きカラーボールのアリーナ戦多すぎ。もう少しひねればいいのに。
0983名前は開発中のものです。
2009/04/17(金) 17:58:19ID:ek0aQOSe0984名前は開発中のものです。
2009/04/17(金) 19:47:14ID:ra5yd6cO持続イベントじゃダメなん?
0985名前は開発中のものです。
2009/04/17(金) 20:05:48ID:ra5yd6cO動画で見れば何か惹かれるかも
http://www.youtube.com/watch?v=bdgQyOIyWPY
http://www.nicovideo.jp/watch/sm5466744
DLリンク: http://gmc.yoyogames.com/index.php?showtopic=398405
0986名前は開発中のものです。
2009/04/17(金) 20:31:56ID:eamDi3auそうか
ルームの持続とオブジェクトの持続あるの忘れてた
0987名前は開発中のものです。
2009/04/18(土) 11:06:58ID:KZWhRSDp>Ordos MachinaとかBlack War 2020
ぐぐったけど、どちらも見つからないのだが。
ナイトメアスフィアもバージョン違いとかがありすぎて
全部落として試すのが面倒でやらなかった。一つに統一しろと。
0988名前は開発中のものです。
2009/04/18(土) 12:05:37ID:WogbruK1ミックマンXのこと言ってる?
0989名前は開発中のものです。
2009/04/18(土) 12:09:33ID:KZWhRSDpああ別物なのね。とりあえず情報が分かり難かった。
0990名前は開発中のものです。
2009/04/18(土) 15:14:42ID:VRghyI0A探してみたけどいつの間にか消えてたみたい。
去年はあったんだけどなぁ。
0991名前は開発中のものです。
2009/04/18(土) 15:23:47ID:OzE2o7aU特に国内で解説してるサイトとか
チュートリアルの挙動はしょぼいし
0992名前は開発中のものです。
2009/04/18(土) 18:48:27ID:b3yfOL4i基本的な使い方は本家のチュートリアル見れば大体分かるし
関数はヘルプ引くのが一番手っ取り早いし
日本語関連だとかこまごましたことは非公式に割とよくまとまっていたと思うよ
0993名前は開発中のものです。
2009/04/18(土) 22:02:09ID:A+bhoh220994名前は開発中のものです。
2009/04/18(土) 23:10:12ID:Iax/E2xq皆でひな形を作ろう! と企画したいけど肝心の自分が何も提供できないから何もできないんだよね。
0995名前は開発中のものです。
2009/04/19(日) 02:30:48ID:vpGW8IHj0996名前は開発中のものです。
2009/04/19(日) 08:45:21ID:1rgxu1oZ雛形を作る=結果的に自由度を下げる
ということになっちゃうから諸刃の剣
solid、direction、speed、gravityあたりの組み込み変数を
雛形と見る程度にしたほうが、最終的には楽になるかも。
ミックマンX2はバージョンいくつか分かれているが
ただ過去のものも一緒に置いてあるだけで
最新版2.02が2種類あるだけっぽいね
特に問題ないと思うんだが…
レス数が950を超えています。1000を超えると書き込みができなくなります。