【2D】ゲーム作成ツールGameMaker part3【マンセー】
レス数が900を超えています。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/
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でデータを読み込むようにするのだが、
ルーム開始時で一気にタイルを配置するのに時間がかかったりするし、一長一短。
これ以上の解決方法は無い・・・かな?
レス数が900を超えています。1000を超えると表示できなくなるよ。