【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/
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はオープンソースにしないのかな
よこしま氏生きてるか〜?
レス数が950を超えています。1000を超えると書き込みができなくなります。