トップページgamedev
1001コメント465KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001名前は開発中のものです。2005/07/12(火) 09:03:47ID:DK0oUKwt
無料Windows用2Dゲーム作成ツール"Game Maker"について、色々と語り合うスレッドです。

●本家(英語)
 ttp://www.gamemaker.nl/
●GameMaker Japan - 非公式情報サイト(日本語)
 ttp://gamemaker.main.jp/
●初心者向けチュートリアル
 ttp://gamemaker.main.jp/modules/articles/index.php?cat_id=1


前スレ: 【2D】ゲーム作成ツールGameMaker【マンセー】
http://pc8.2ch.net/test/read.cgi/gamedev/1087068523/
0904名前は開発中のものです。2008/04/08(火) 21:09:24ID:lWzhg9Ri
>>903
ここ数レスのはアイコンの内容を言葉で説明したものであって、
実際にああいうコードを打つわけじゃないですよ。

Game Makerではオブジェクトの動作を定義するのに
「アクション」というアイコンをポチポチ並べていく方法と、
「GML」という言語で直接コードを書く方法があって
習熟度に応じててきとーに混ぜて使えます。

GMLの文法はCとほぼ同じ(一部Pascal要素あり)なので、
ある程度プログラミングの経験があればすんなり覚えられるはず。
たとえば>>900は2箇所のイベントにアクションを3つ置いた様子を
表しているけれど、同じ内容をGMLで書くとこうなります。

// object0のStepイベント
mp_linear_step(object1.x, object1.y, 5, false);
image_angle = direction;

// object1のマウスボタンイベント
x = mouse_x; y = mouse_y;
0905名前は開発中のものです。2008/04/08(火) 23:29:01ID:C/r/gPzk
>>902
後者で試してみようと思います
ありがとうございました!
09069002008/04/09(水) 03:31:08ID:R1oJ6a1A
>>904
ああ、そうなのかー…なるほどなあ…
わざわざ丁寧にありがとうございます。

以前豆乳システムとかもいぢってたんで、
C言語に似てるなら結構早めに覚えられそうですね。
0907名前は開発中のものです。2008/04/09(水) 06:41:45ID:n+SEEGKi
自分はhspでゲームが簡単に作れるって聞いたもんだから実際に触ってみたらサッパリ理解できなかった。
それに比べてGMなら2週間くらいで大体使えるようになった。
0908名前は開発中のものです。2008/04/11(金) 18:09:33ID:AT/nfPM9
>>900
遅くなりましたがありがとうございます。
レジスト、というのがどのような物なのか解りませんが・・・。
それとスレ違いかも知れませんが非公式のフォーラムに書き込むことが出来ないのですが私だけでしょうか?
0909名前は開発中のものです。2008/04/11(金) 20:34:53ID:LqedxyKD
非公式サイトはユーザー登録してからフォーラムで「新規に投稿」押せば書き込めるよ。
あとレジストは料金を支払って制限解除したバージョンのこと。
良く分からない単語使ってゴメンネ
0910名前は開発中のものです。2008/04/11(金) 20:37:53ID:EEx5djbh
>>908
レジストとは、お金を払ってプロダクトキーを貰い、使用制限を解除することです。
0911名前は開発中のものです。2008/04/11(金) 20:38:20ID:EEx5djbh
おおう、更新すれば良かったorz
0912名前は開発中のものです。2008/04/12(土) 11:01:55ID:eNZFgCaH
>>909,910
ありがとうございます。
なるほど、有料登録ですね
0913名前は開発中のものです。2008/04/18(金) 10:19:47ID:3dx+PVyf
ちょっと参考までに、日本語圏でのGM作品を見てみたいんだが、
有名所で、GM作品を公開してる人っているかい?
0914名前は開発中のものです。2008/04/18(金) 20:35:49ID:xHO8JEqh
ニコニコのミックマンXやニコニコアクションゲームとかなら知ってるけど。
ニコニコでgamemakerを検索するとちょっぴり出てくる。
0915名前は開発中のものです。2008/04/27(日) 05:53:10ID:2l2AKY8C
これダウンロードできなくね?
0916名前は開発中のものです。2008/04/27(日) 11:06:31ID:CLNLyEnS
英語だらけだから難しいよね
俺もダウンロードするのに一日かかった
0917名前は開発中のものです。2008/04/29(火) 09:44:12ID:2d8FpwgV
登録しねーとDLできないのか?
0918名前は開発中のものです。2008/04/29(火) 11:59:36ID:YwZZ6j+f
基本的に登録してからダウンロードしたほうがいい。
けど、
ttp://www.yoyogames.com/gamemaker/try_download
からDL出来ると思う。
0919名前は開発中のものです。2008/04/30(水) 21:35:13ID:wqvUGn48
6.1で3Dポリゴンにテクスチャを張りたいのですが、色々試しても黒く表示されるだけでどうにも……

どうコードを組めばうまく表示されるか誰かアドバイスくれませんか?
0920名前は開発中のものです。2008/05/01(木) 00:53:19ID:TumL990E
その「色々試した」の中身が重要なわけだけども。

まあ、仮にテクスチャはちゃんと取れているものとして。
描画するのにcolorが付かない方のd3d_vertex_textureを使ってるとすると
その場合テクスチャは現在設定している色でブレンドされる。
draw_set_colorしてないと初期値は黒だから、結果も真っ黒になるよ。

もしそうだとしたら、先頭でdraw_set_color(c_white)してみて。
0921名前は開発中のものです。2008/05/01(木) 05:57:14ID:boSZuiu9
>>920
ありがとうございます!
まさしくそれでした(^^;

こんな簡単なミスだったとは……
0922名前は開発中のものです。2008/05/01(木) 22:44:02ID:QlMWKAXW
すごい漠然とした質問なんですが

画像を1、2、3って表示させるときに
1の画像が前面、3の画像が背景側に表示させる方法ってあります?

GML非公式サイトでdraw関連のコードがあまり説明されてなかったので。。。
0923名前は開発中のものです。2008/05/01(木) 23:27:03ID:lT+h3RUS
簡単なのは 画像1 画像2 画像3 をスプライトに持つオブジェクトを作って、 depth で指定する方法。
depth の数値が大きくなると上に重なる。はず。

draw イベントで処理したいなら、基本的に画面上に上書きされるので、下になるほうを先に描画すればいい。
0924名前は開発中のものです。2008/05/02(金) 02:15:50ID:IG1MecUh
305をそのまま使って、新しいオブジェクトを作って設置し
、すり抜けてみたんですが、solidにチェックがついてない
のに、接触した状態で立ち止まると、壁にはまったときと
同じ動作になってしまいました・・・


座標チェック時に、対象インスタンスIDがSolid属性の場合のみ
壁判定という動作にしてみようかと、以下のようにやってみんですが
うまく動かないようです・・・

nulld = !place_empty(x-1,y)
if nulld.solid == 0
{
壁回避コード
}

うーん。。。コリジョン難しい
0925名前は開発中のものです。2008/05/02(金) 02:35:04ID:20oP59U2
place_emptyが返すのはIDじゃなくてtrue/falseだから……
相手のIDが欲しければinstance_place使う。

solidの判定も逆のような気がするけど、それ以前にそもそも
place_free使えばsolidのオブジェクトだけチェックしてくれるよ。
0926名前は開発中のものです。2008/05/02(金) 07:25:07ID:IG1MecUh
>>925
なるほど。。。そうだったのか。
ありがとうございます。

うー、日本語マニュアルがほしぃ。。。
0927名前は開発中のものです。2008/05/03(土) 12:42:03ID:CaNFTODT
逆に考えるんだ、「英語の勉強になる」。そう考えるんだ。 トェェェェイ

ところで、これで某有名同人弾幕シューティングの二次創作tkっているが
弾幕ww、弾幕が再現できねぇwwww
0928名前は開発中のものです。2008/05/03(土) 14:24:24ID:9QsVrF2b
仲間発見
0929名前は開発中のものです。2008/05/03(土) 15:59:55ID:3a9tSZMK
>>927
俺は某同人弾幕STG風オリジナルSTG(つまりパクり)作ってるが、まずはn-way弾を発射するスクリプトを書くんだ!
0930名前は開発中のものです。2008/05/03(土) 17:55:29ID:TpBQZjg2
ロードの際「セーブデータのフォルダがある」「ゲームのセーブデータがある」時だけロードボタンを押せるようにしたいのですが
そういったデータの有無を内部で確認させる方法はありますか?
0931名前は開発中のものです。2008/05/03(土) 18:07:56ID:9QsVrF2b
exist系のを使えばできるはず。directoryとかfileとか。
マニュアルで検索かけてみ。
0932名前は開発中のものです。2008/05/03(土) 21:32:29ID:O2xyPtem
>>927-929
こんなに俺がいたとは
今ではn-wayを手動でやってたときが懐かしいです
0933名前は開発中のものです。2008/05/03(土) 21:53:01ID:XU6M82BJ
板違いなんでしょうが、
シューティングとかで弾を撃つアクションはどれになりますか?
誰か教えてくださいな〜
0934名前は開発中のものです。2008/05/04(日) 06:21:13ID:2fBGUOBZ
「シューティングで弾を撃つアクション」とか、「RPGで敵を攻撃するときのダメージ設定」とか、
そういった類のアクションはなく、自分なりにデザインして、自分で一から作るのがGM。

簡単に言えば、弾を撃つってことは、弾というオブジェクトを作り、それをある速度で飛ばせばいい。
0935名前は開発中のものです。2008/05/04(日) 06:27:00ID:2fBGUOBZ
……でも、もし弾幕STG作るんだったら、弾幕風で事足りる気がする。連投失礼。
0936名前は開発中のものです。2008/05/04(日) 08:24:53ID:lNeW/IjQ
>>934
なるほど。。オブジェクトを作って飛ばす訳ですか。
大体解りました〜ありです。
0937名前は開発中のものです。2008/05/04(日) 20:03:25ID:lNeW/IjQ
今934さんに教わった後頑張って色々やったのですが、
何点か分からない点や仕方のわからない点が出てきました。。
もし良かったら教えてください。
・弾の発射に間隔を付ける方法
・一部状況下(俺の言いたいのはジャンプ中)での発砲不可
・一定の数の弾を発射後何秒間か使用不可(要するにリロード)
・↑の間モーションが入るようにする方法

教えてください〜
0938名前は開発中のものです。2008/05/04(日) 20:26:08ID:LG4ZPs/B
>>937は変数について理解してるか?
上三つは、変数が必要になる。
・弾の発射に間隔を付ける方法 → 発射可能を表す変数
・一部状況下(俺の言いたいのはジャンプ中)での発砲不可 → ジャンプ中かどうかを表す変数
・一定の数の弾を発射後何秒間か使用不可(要するにリロード) → 残弾数を表す変数

そして条件分岐だ。上から順に、
・弾を撃つ際に、発射可能変数を条件分岐に使い、可能の値だったら(例えば1)弾を撃てるようにする。そうでなければ何もしない。
 で、弾を撃ったら 変数を不可能を表す値(例えば0)にして、タイマーイベントを発動。(アクションのタイマーを利用する)
 タイマーイベント中で変数を可能状態(1)にする。

・着地状態からジャンプに移行したときに、ジャンプ中を表す変数の値をジャンプ中の値(例えば1)にする。
 ジャンプの状態から着地状態になったときに、変数の値を着地状態(例えば0)にする。この変数を使った条件分岐を、撃つ時の条件に加えよう。

・弾を撃つごとに残弾数を減らす。弾を撃つときに条件分岐を付け加え、残弾数が0ならリロードモーション(自作するべし)を起こすようにする。

リロードのモーションは、モーション専用のオブジェクトを作って、オブジェクト変更アクションを利用するのがいいかもしれない。
そのときは、モーション専用オブジェクトで、モーションが終わったら元のオブジェクトに戻すことを忘れずに。
アニメーションエンドイベントをうまく利用すると楽かもしれない。用語とかでわからないことは、>>1の非公式サイトで調べてみ。
長文・乱文失礼。
0939名前は開発中のものです。2008/05/04(日) 20:34:11ID:lNeW/IjQ
>>938
なるほど
それを行っている事を変数で表して、可能不可能をその変数の状態で判断させるわけですか
変数はあまり得意ではありませんが、色々やってみます。
ありがとうございました。
あ、後ここでこうやって質問して良い物なんですか?
板違いじゃないかとずっと気がかりでして。。
0940名前は開発中のものです。2008/05/04(日) 20:52:37ID:LG4ZPs/B
>>939
まあ、過疎ってるし個人的にはいいんじゃないのかなとは思うけど。
質問以外の話題がほとんど無いし。。
教えてクレクレ君だらけになったらなったで、つらいんだけどねw
0941名前は開発中のものです。2008/05/04(日) 20:57:40ID:lNeW/IjQ
やっていく内にわからなくなってきました。。
発射可能を表す変数 これはなんと表すことになるんですか?
例として教えてください
0942名前は開発中のものです。2008/05/04(日) 21:16:10ID:smFSYJ2D
n = 3
これを発射回数として
一回打つたびに-1してやって
0の時には打てなくすればいいのかな・・・
俺も初心者だから参考にならないかも;
0943名前は開発中のものです。2008/05/04(日) 21:21:43ID:lNeW/IjQ
>>942
返答ありがとうございます。
そういうのの総合的な並べ方がわからないんですね〜>>941の文が分かりづらくてすみません。。
0944名前は開発中のものです。2008/05/04(日) 21:29:00ID:smFSYJ2D
{
n = (n-1)
if n > 0
{
instance_create(x,y,bullet)
}
}

こんな感じでしょうか・・・
もっといい方法があると思いますが自分にはわかりません;
0945名前は開発中のものです。2008/05/04(日) 21:30:58ID:lNeW/IjQ
>>944
ありがとうございました。
早速いじってきます〜
0946名前は開発中のものです。2008/05/04(日) 22:02:44ID:LG4ZPs/B
クリエイトイベントで
isshootable = 1; //弾が撃てるか
isjump = 0 ; // ジャンプしてるかどうか
bulletNum = 3; //残弾数

[弾を撃つイベント]
{
 if (isshootable==1 && isJump == 0) {
  if (bulletNum > 0) {
   instance_create(x,y,bullet);
   bulletNum -= 1;
  } else {

  }
}
0947名前は開発中のものです。2008/05/04(日) 22:05:20ID:LG4ZPs/B
ゴメンミスッタ
クリエイトイベントで
isshootable = 1; //弾が撃てるか
isjump = 0 ; // ジャンプしてるかどうか
bulletNum = 3; //残弾数

[弾を撃つイベント]
{
 if (isshootable==1 && isJump == 0) {
  if (bulletNum > 0) {
   instance_create(x,y,bullet);
   bulletNum -= 1;
  } else {
   // リロード 弾を撃つボタンでリロードする場合にはここに記述
   // 他のタイミングでリロードしたいなら、この部分は要らない。
   {リロードするアクション}
   bulletNum = 3;
  }
}
こんな感じで。

0948名前は開発中のものです。2008/05/04(日) 22:16:01ID:lNeW/IjQ
>>947
なるほど
そういう並べるのですか
また困ったらよろしくお願いします。
ありがとうございました〜
0949名前は開発中のものです。2008/05/04(日) 22:21:00ID:LG4ZPs/B
あ、あと撃ったときにタイマーイベント発生させるの忘れてたorz
   bulletNum -= 1;
の下に、
   alarm[0] = 30; // 30ステップ後にアラーム0イベントが発生。
としてくらさい。
インデントはかきこ時の見た目重視で全角スペース使ってるので、コピペだと動かないので注意。
0950名前は開発中のものです。2008/05/04(日) 22:33:54ID:lNeW/IjQ
>>949
了解です〜
ありがとうございます。
0951名前は開発中のものです。2008/05/04(日) 23:18:28ID:KZv3H4cz
いつもお世話になっております。
教えてほしいのですが、>>853がうまくいきません。

image_speed = 0にしてGifのアニメを一周で止める動作をさせたいと考えています。
Stepイベントにて以下のコードを動かしてみたところ、アニメがループしてしまいました。

//5枚目でストップ。
if image_index == 4 {image_speed = 0}


ご教授いただきたくお願いします。
0952名前は開発中のものです。2008/05/04(日) 23:28:07ID:KZv3H4cz
951です。

書き込みをした直後、試行錯誤を続けたところ
原因が分かりました。

gifをゆっくり動かしたかったことから、以下のコードを入れていました。

image_speed = 0.2

これを以下の値に直したところ、「5枚目でストップ」が動作することを確認しました。

image_speed = 0.25


うーん、ただここでひとつ疑問が・・・
なんで「0.2」では動作しなかったのか・・・うーん
板汚し、すいませんでした orz
0953名前は開発中のものです。2008/05/05(月) 00:40:19ID:XEs+C953
>>952
小数を扱う場合、パソコン内では10進数ではなく2進数なので、
10進数ではキリのよい数値のように思えても、
2進数では無限循環小数(割り切れない割り算で、小数点以下を延々繰り返してしまう数)になってしまう数値がある。
もちろんパソコン内のメモリは無限ではないので、ある桁以下は省かれてしまう。
これを丸め誤差という。

以下のコードを実行してみるとわかるが、
i = 0.2;
for (k=0;k<20;k+=1) {
show_message(string_format(i,20,18));
i += 0.2;
}
i が 4 となるべきところで、GameMakerでは微妙に4より大きい数値になることがわかる。
(※常に大きい数値となるわけではなく、本来の数値より少なくなることもある)
これは、丸め誤差が積み重なってできた誤差になってて、真に4となるわけではない。
なもんで、 if文の image_index == 4 の条件は満たさない、と考えられる。

このような理由で、プログラムの世界では浮動小数な変数をそのまま条件文でイコールを使うのはご法度。と言われてる。
誤差を意識したコーディングを心がける必要がある。
GameMakerの数値は全て浮動小数扱い。だが、整数のまま扱ってる分には問題ない、はず。
(私はプロじゃないんで…かじった知識程度で申し訳ない、間違ってたら指摘ヨロ)
0954名前は開発中のものです。2008/05/05(月) 01:59:41ID:T1qF9S2G
まあでも、853で言ってるとおり
Other > Animation End イベント使えば
image_index判定する必要ないんだけども。

ちなみにあくまでStepイベントで判定するなら
if (image_index + image_speed >= image_number)
で Animation End イベントと等価になる。
0955名前は開発中のものです。2008/05/05(月) 05:06:15ID:KYkFnzVP
FEっぽいゲームを作りたいんですが
移動範囲の求め方がわかりません;
1マスごとに-1するということだと思うんですが
具体的に書けなくて・・・
教えていただけたら嬉しいです
0956名前は開発中のものです。2008/05/05(月) 05:40:23ID:Bq2Q3q9u
やり方はここが参考になるんじゃない?
ttp://www5f.biglobe.ne.jp/~kenmo/program/SLG/move/move.html
再帰ループとか理解している必要があるけど。

0957名前は開発中のものです。2008/05/05(月) 06:13:29ID:KYkFnzVP
>>956
そのサイトも見たんですがsearch関数というのがよく分からないです;
自分で作るものなのでしょうか・・・
0958名前は開発中のものです。2008/05/05(月) 08:26:38ID:grhJSKQZ
>>953 954

ご指摘ありがとうございます。
丸め誤差・・・次から気をつけます。

あと、Animation Endイベントって存在したんですねぇ。
「Other>Animation End」…存在すら知りませんでした…。
となると以下みたいな使い方になるんでしょうか?(再質問みたいですいません)

▼Animation End Event
//image_indexがsprites「spr_hoge777」の場合、speedを0に変更
if (image_index == spr_hoge777)
{
img_spd_save = image_speed //停止前の速度を保存
image_speed = 0
}
else
{
image_speed = img_spd_save //他のspritesの場合は保存速度に戻す
}
0959名前は開発中のものです。2008/05/05(月) 08:57:11ID:grhJSKQZ
>>958
image_indexじゃなくてsprites_indexでした。

あと、このコードじゃうまく動作しませんでした。
うーん。難しい・・・。
0960名前は開発中のものです。2008/05/05(月) 10:27:30ID:j6OioUkw
なんだかやりたいことが混乱してないか?
「困ったときは原点に戻る」
プログラム的なことは置いといて、まず何をしたいのかを考えてみ?

この場合はアニメーションが終わったら止める、だったよね?
Animation End Eventでimage_speedを0にすればアニメーションはとまるんじゃない?
多分これだけだと一枚目に戻って止まるかも知れないから、
止めた後にimage_indexを最後の数字にする。
つまり、
「アニメーションが終わったら、
・まずアニメーションを止めて、
・最後の画像を表示させる」

……>>853が言ってることと全く同じなんだが。
これで出来ないってなると、Step eventで毎回毎回image_speedを設定してるんじゃない?
もしそうだったらいくら止めても止まらないんだけどw
0961名前は開発中のものです。2008/05/05(月) 10:40:47ID:j6OioUkw
もしimage_speedが一定で、終わったらそれを止めたいってだけなら、
image_speedをCreate Eventで設定した方がいいよ。
0962名前は開発中のものです。2008/05/05(月) 11:31:49ID:grhJSKQZ
>>960,961
なんていうか、いろいろとすいません。
うーん、そうですねぇ。「やりたいこと」…
「一定条件のみアニメを止める」っていう動作をさせたいんだと思います。

Object内で条件毎にコロコロspritesを入れ替えておりまして
spritesに一定の画像が使われている時に限り、「アニメを一周」させたかった訳です。
(キャラが走行中に立ち止まった時、着地した時だけ服が揺れるアニメ…等)

1、sprites変更後、「アニメ停止変数」生成
2、Animation Endにて「アニメ停止変数が1の時のみ、image_speed=0」

でやりたいことが実現できました。
うーむ。確かに原点に返ってみれば、単純な事だったのですね…。
板汚しすいませんでした orz
0963名前は開発中のものです。2008/05/05(月) 21:40:31ID:2SyyMfLm
なにげにレス伸びてる・・・そろそろ次スレの季節なのかな?
0964名前は開発中のものです。2008/05/05(月) 22:22:44ID:eAt6pbsl
>>950です。
また質問に来ました。
HPを準備するまでは出来たのですが、HPの減らし方(ダメージ)がわかりません。。
後、自分的にはゾンビのような敵と戦わせたいので、
近づいたら(正確には近づかれたら)ダメージという形での使用方法も教えてください。
よろしくお願いします。
0965名前は開発中のものです。2008/05/05(月) 22:48:47ID:J24rBd4c
>>964
サンプルとか、>>1チュートリアルとかサイトに色々書いてるから自分でも調べてから書き込むことをオススメする。
0966名前は開発中のものです。2008/05/05(月) 23:18:51ID:2SyyMfLm
>>964
>HPを準備するまでは出来たのですが、HPの減らし方(ダメージ)がわかりません
HPの値を保存しておく変数があるならダメージをもらうタイミング(ダメージをもらう処理をするイベント)で引き算してやればよい
ダメージをもらうタイミングが「敵が近づいたら」ということなら敵のステップイベントでpoint_distance()関数を使えばいい。例えば
obj_mychara:自分が操作するキャラのオブジェクト名 VarMyhp:自キャラのHPを覚えとく変数
obj_emychara:敵キャラのオブジェクト名と命名してあるとして、
obj_emycharaのステップイベントに「Execute a piece of code」で

if(point_direction(self.x, self.y, obj_mychara.x, obj_mychara.y)<=50)//敵キャラと自キャラとの距離が50ピクセル以下ならば
{
obj_mychara.VarMyhp -= 3//自キャラのHPを3減らす
}

とか書いてやる。但しコレだと毎ステップごとにHPを減らすから、範囲内に入ればとんでもないスリップダメージになるので
一定周期ごととか、減らす量を思いっきり少量にするとか、そういう工夫は必要かと思う。まぁとりあえず がんばれ〜
09679662008/05/06(火) 00:33:47ID:HwPOvHtQ
あう間違えてる ごめん
× if(point_direction(self.x, self.y, obj_mychara.x, obj_mychara.y)<=50)
○ if(point_distance(self.x, self.y, obj_mychara.x, obj_mychara.y)<=50)
0968名前は開発中のものです。2008/05/06(火) 00:40:06ID:m5xvmqWN
>>965 >>967さん
ご返答ありがとうございます。
なるほど、そういう風な式を立てればいいのですか〜
わかりました。ありがとうございました
0969名前は開発中のものです。2008/05/06(火) 03:30:10ID:HwPOvHtQ
>>968
一応聞いておくけどヘルプファイルもってる?
0970名前は開発中のものです。2008/05/06(火) 11:45:29ID:m5xvmqWN
>>969だいぶ遅れた返答ですみません。
F1のあれの事ですか?
英語で読めないです。。
0971名前は開発中のものです。2008/05/06(火) 12:57:24ID:ndOoddgE
gamemakerで作った拡張子exeのゲームをPSPで遊ぶ事は出来ないのでしょうか?
0972名前は開発中のものです。2008/05/06(火) 13:04:37ID:zKMDMsj4
GameMakerはWindows専用だ。マルチプラットホームなわけねぇだろ。
0973名前は開発中のものです。2008/05/06(火) 18:12:50ID:iaQXyyj0
英文読んで試行錯誤してる者なんですが、仕様について質問です。
ルームに存在するオブジェクトをそのままにしてルームを移動した時って
移動前のオブジェクトはルームに取り残されるんでしょうか?
残ってしまうと、メモリとか変数管理によく無さそうな印象がありまして;

また、もし破棄されないで残ってしまう可能性があるならば、っとルームに存在する
全てのインスタンスを破棄する時のコマンドを探しているのですが
いまいち分からない状態です。

instance_destroy()
        ↑
         all.xxxxとか?…。

ご教授お願いいたします。
0974名前は開発中のものです。2008/05/06(火) 19:38:24ID:T+DSiDkg
マニュアルから一部抜粋。

ルーム関連(ルームの移動の際)

First, in the current room (if any) all instances get a room-end event.
Next the non-persistent instances are removed (no destroy event is generated!).

訳:
まず、現在のルームの全てのインスタンスに対してroom-end eventが発生。
次に、non-persistentのインスタンスが削除される。(このとき、destroy eventは発生しない)

面倒だから他は省くけど、要はルーム移動の際に移動前のインスタンスは消されるってこと。
persistentじゃなければ、ね。

ちなみに全てのインスタンスを削除するには、with文を使ったらいいんじゃないかな。
0975名前は開発中のものです。2008/05/06(火) 23:57:36ID:iaQXyyj0
>>974
なるほど!
ありがとうございます!
0976名前は開発中のものです。2008/05/07(水) 14:23:39ID:/9oyodVi
シェア版買った人いる?天候エフェクトが個人的に気になってるんだが…
わざわざ一から天候を作るか、あるいはエフェクターに頼るか悩んでるんだ。

というか、普通背景の天候ってどう表現している?
0977名前は開発中のものです。2008/05/07(水) 15:49:13ID:zHOqCZVz
>>970
> >>969だいぶ遅れた返答ですみません。
> F1のあれの事ですか?
> 英語で読めないです。。

遅れて返答ごめんねぇ
えっと、ヘルプファイルの日本語訳版があるのよ。yoyoにかわって7になってから
公式ではどこにあるかわかんなくなっちゃったけどhogehigeさんとこにもあるねぇ
6バージョンだけど十分使える
GMJ非公式情報サイトのリンク集↓
ttp://gamemaker.main.jp/modules/mylinks/
このページの下から4つ目がhogehigeさんとこにリンクしてる。
内容は1,2日程度で読めると思うからざっくり読んでみ?
役に立つと思うよ〜
0978名前は開発中のものです。2008/05/07(水) 19:18:50ID:gt5YtGeK
>>976
組み込みのエフェクトはオマケ程度に思っといた方がいいかな。
あまり融通きかないし(大きさ3段階と色くらいしか変更できない)、
縦に長ーいルームだと下の方まで届かないみたいな不具合もあるし。

もちろん、自分でパーティクルを組めばけっこうなことができる。
でも、画面中火花で埋めつくすような派手なことしなければ
通常のスプライトとオブジェクトでも十分用は足りる。
一応レジストしといた方が、加算合成とか使える分だけ表現力も上がるけどね。
0979名前は開発中のものです。2008/05/08(木) 00:05:49ID:XOSjyJNW
>>977
ここまで事細かに書いてあるのですか
教えていただき、ありがとうございます〜
0980名前は開発中のものです。2008/05/08(木) 00:29:14ID:SznEXsr7
鎖のような"たるんでる"感じになるように
連続した"鎖"オブジェクトを配置したいと考えているのですが
なかなかうまい方法が思いつきません。

物体Aと物体Bの間を鎖オブジェクトが結んでいるような配置にするとして
物体間の距離が短い時は、鎖をたるませて
距離が長くなると、鎖が引き伸ばされるような演出ってできますでしょうか?

お願いしますorz
0981名前は開発中のものです。2008/05/08(木) 02:15:05ID:MDYPiLo1
>>978
大中小で色だけ、しかも切れるのか…レスサンクス。ちょっと残念だな。
独自に用意したスプライトを天候に適合できるってのなら、まだ良い演出つくれたかも。

それはそうとシェアじゃないと加算合成はできなかったのか、
そりゃ困るな…、シェア版買ってみるかな…
0982名前は開発中のものです。2008/05/08(木) 10:07:59ID:Gds/1Kol
>>980
それはGMというより、数学の知識の方が必要だね。
「カテナリー曲線」で調べてみ?
0983名前は開発中のものです。2008/05/08(木) 23:59:36ID:SznEXsr7
>>982
うぅ、調べてみましたが、難しいんですねぇ。。。

紐の長さ、X軸間の距離からY軸の高さ(たるみ具合)を算出したかったけど
私の頭ではどうも・・・


ありがとうございましたm(__)mペコ
0984名前は開発中のものです。2008/05/09(金) 04:40:36ID:kRE/rDCD
みなさんは衝突判定ってどうやってます?

衝突判定用コードを作るのはいいんですが
オブジェクト(敵キャラ)の種類が増えた影響で
オブジェクト毎に個別のコードを作らなくてはならないので
管理が難しくなってしまっています。

条件分岐で「何かのオブジェクトから衝突された」が「真」の場合
衝突してきたオブジェクトのインスタンスIDを抜き出して「真」の動作を
行わせたいのですが、何かよい方法はないでしょうか?
0985名前は開発中のものです。2008/05/09(金) 05:46:09ID:Q2m0sNzP
オブジェクトの継承を利用するのがよいかと。

例えば敵キャラが複数あるなら、次のように改造してみては。
敵キャラオブジェクト(obj_teki)というのを一つ作る。
しかし、obj_tekiには何も実装しないで、実際の敵キャラは別オブジェクトで作る(これは作ってあるものでOK)。
そして、その敵キャラオブジェクトの親オブジェクト(parent)に、obj_tekiを選ぶんだ。
こうした後、自キャラで obj_teki との衝突判定を設けることで、
obj_teki を親オブジェクトに設定した全ての敵キャラとの衝突処理が行えるようになる。

オブジェクトのタイプで条件分岐したければ、other.object_index の値をみればよい。
※ 継承はアドバンスドモードじゃないと使えない

とはいうものの、個人的には、
継承を利用した処理では共通のものだけに留めておいて、
敵キャラに応じた特別な処理がある場合のみ、
敵キャラのほうで処理させるほうがいいような気もする。
0986名前は開発中のものです。2008/05/09(金) 13:44:19ID:kRE/rDCD
>>985
そんな方法が…、ありがとうございます。
なるほど、やっぱりレジスト必要なんですねぇ。

レジストで使いたい機能が増えてきたんで
さっき、決済してきました。

うーん、プロダクトキー発行って結構時間かかるものなんですかねぇ?
クレジット決済なら即発行ってイメージを勝手に持ってたので
未だに届かなくて不安ですねぇ
0987名前は開発中のものです。2008/05/09(金) 13:46:25ID:gDIxCEqd
アドバンスドモードはレジストする必要がないぞw
0988名前は開発中のものです。2008/05/09(金) 14:11:31ID:kRE/rDCD
6.1Aなんですが

object_set_parent(id,obj_mob) で
「This function is only available in the registerd version.」を
吐かれているんですが、これってレジスト限定では?と思ったのですが


いずれにしても、「image_angle」とか使いたかったんで
早とちり決済ではないんですが

むしろ、さっきやった決済画面で入力ミスってないかどうかが心配…
プロダクトキーまだかな。。。
0989名前は開発中のものです。2008/05/09(金) 19:42:41ID:LcL1siXe
>>988
ゲーム実行時にリソースを変更する機能は、確かにレジスト限定ですね。
parent設定は、オブジェクトの編集画面の左側でできますよ。

レジスト関連については、>>566-572 >>574 が参考になるかと…。
0990名前は開発中のものです。2008/05/09(金) 21:10:43ID:Fb9VS2l9
日本ってノベルやRPG作るツールは結構作られてるんだよな
まあ探せば色々ジャンル別に製作ツールあるんだが
0991名前は開発中のものです。2008/05/10(土) 21:04:53ID:lJro9tCk
1000も近くなんですが、質問させてください。

コマンドには「if」と「else」がありますが
「elseif」ってコマンドは存在しないでしょうか?
ヘルプにも無さそうだったので…

いつも以下のような書き方をしていまして、見た目がよろしくない状態です。

if
{
---A---
}
else
{
if
{
---B---
}
else
{
---C---
}
}

何か他にうまい方法は無いでしょうか?
0992名前は開発中のものです。2008/05/10(土) 21:25:52ID:fsMtXR8Q
else if でいい。
あと、場合によってはswitch文の方がいいときもある。念の為。
0993名前は開発中のものです。2008/05/10(土) 21:43:17ID:lJro9tCk
>>992
( ゚Д゚)Σ
そうすれば{}でわざわざククル必要も無くなるっと…
そんなに簡単な事だったのですか… orz (イママデノクロウハ…)
ありがとうございます!助かります!
0994名前は開発中のものです。2008/05/10(土) 22:16:44ID:ZTqrrlup
また質問に来ました。
http://www.arcadetown.com/deadfrontiernighttwo/gameonline.asp
新しく上のアドレスのゲームみたいな物を作りたいと思うのですが、
以下の事がわかりません。。GMLはあまりわからないので、
なるべくイベントとアクションで教えていただけるとありがたいです。
わからない事
・マウスポインタの画像変更
・マウスの方向によって画像を変更する
・マウスの方向に弾を撃つ(オブジェクトを作成し、移動させる)

教えてください。
0995名前は開発中のものです。2008/05/11(日) 01:42:28ID:PRhlwPyW
次スレ

【2D】ゲーム作成ツールGameMaker part3【マンセー】
http://pc11.2ch.net/test/read.cgi/gamedev/1210437707/
0996名前は開発中のものです。2008/05/11(日) 02:11:17ID:AX4c16UA
>>995 乙です。

>>994
1番目はextraタブにあるマウスカーソル型のアイコン
3番目はmoveタブにある「Move in the direction of a point」
(矢印が青丸を指しているやつ)で移動先に mouse_x, mouse_y を指定。
あるいは「Create an instance with a motion」(豆電球+矢印)を使って
directionの所に point_direction(x, y, mouse_x, mouse_y) と入れてもいい。

で、2番目はGM6以上使ってるなら image_angle = direction で終わり。
GM5以前、あるいは向きによって複数のイメージを使い分ける必要があるなら
directionの値によってイメージを選ぶようなコードを書かなくちゃいけない。
0997名前は開発中のものです。2008/05/11(日) 13:02:06ID:cmOvm32X
>>995 お疲れ様です

>>996
なるほど。ご返答ありがとうございます。
早速いじってきます〜ありでした〜
0998名前は開発中のものです。2008/05/11(日) 14:02:50ID:cmOvm32X
やっててわからないので再び聞かせていただきます。
もう1000近いので、いざという場合は次スレに返答をよろしくお願いします。
>>996さんの文の
1番目のアイコンは使うにはレジストが必要という解釈でいいですよね?
レジスト。。してみようと思います。
そして、
>で、2番目はGM6以上使ってるなら image_angle = direction で終わり。
>GM5以前、あるいは向きによって複数のイメージを使い分ける必要があるなら
>directionの値によってイメージを選ぶようなコードを書かなくちゃいけない。
との文章がありますが、そのimage_angle = direction はどこに書き込めばいいのでしょうか
返答をお願いします。
0999名前は開発中のものです。2008/05/11(日) 15:22:09ID:AX4c16UA
>>998
かわりにゲームオプションでカーソルを表示しないように設定して
カーソルと同じ位置(mouse_x, mouse_y)に自作のオブジェクトを
表示する方法でもいける。

image_angle = directionってのは変数を設定する時の書式ね。
Set the value of a variable(VARと書かれた四角)を置いて
variableの欄にimage_angle、valueの欄にdirectionと入れる。
ってimage_angleもレジストしてないと使えないか。

レジストしてない場合、コードを書く必要があるけど
向きごとに別々にスプライトがあるのかそれともフレームが分かれてるのか、
全部で何方向あるのかとかで対応が違う。
まあ、何方向でも構わないからなるべくスムーズにしたいというのなら
1. スプライトエディタで Animation > Rotation Sequenceの機能を使って
360°分回転させたイメージを作る(36フレームくらいがおすすめ)
2. StepイベントでVARアクションを使って次の変数を設定
image_single = direction / 360 * image_number

あと、画像を変更したいオブジェクトが弾じゃない(動いてない)場合は
「direction」の部分を「point_direction(x, y, mouse_x, mouse_y)」に変えてみて。
1000名前は開発中のものです。2008/05/11(日) 15:35:02ID:cmOvm32X
>>999
大体すべきことはわかりました。
ゲームオプションでマウスを消す方法って物がわからないので、
それを次スレで聞かせていただきます。

なお、このレスが1000であればGame Makerでゲームを作っている人は技術が向上します。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。