[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 13:07 / Filesize : 345 KB / Number-of Response : 973
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名前は開発中のものです。 [2005/07/12(火) 09:03:47 ID: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【マンセー】
pc8.2ch.net/test/read.cgi/gamedev/1087068523/

928 名前:名前は開発中のものです。 mailto:sage [2008/05/03(土) 14:24:24 ID:9QsVrF2b]
仲間発見

929 名前:名前は開発中のものです。 mailto:sage [2008/05/03(土) 15:59:55 ID:3a9tSZMK]
>>927
俺は某同人弾幕STG風オリジナルSTG(つまりパクり)作ってるが、まずはn-way弾を発射するスクリプトを書くんだ!

930 名前:名前は開発中のものです。 mailto:sage [2008/05/03(土) 17:55:29 ID:TpBQZjg2]
ロードの際「セーブデータのフォルダがある」「ゲームのセーブデータがある」時だけロードボタンを押せるようにしたいのですが
そういったデータの有無を内部で確認させる方法はありますか?

931 名前:名前は開発中のものです。 mailto:sage [2008/05/03(土) 18:07:56 ID:9QsVrF2b]
exist系のを使えばできるはず。directoryとかfileとか。
マニュアルで検索かけてみ。

932 名前:名前は開発中のものです。 mailto:sage [2008/05/03(土) 21:32:29 ID:O2xyPtem]
>>927-929
こんなに俺がいたとは
今ではn-wayを手動でやってたときが懐かしいです

933 名前:名前は開発中のものです。 mailto:sage [2008/05/03(土) 21:53:01 ID:XU6M82BJ]
板違いなんでしょうが、
シューティングとかで弾を撃つアクションはどれになりますか?
誰か教えてくださいな〜

934 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 06:21:13 ID:2fBGUOBZ]
「シューティングで弾を撃つアクション」とか、「RPGで敵を攻撃するときのダメージ設定」とか、
そういった類のアクションはなく、自分なりにデザインして、自分で一から作るのがGM。

簡単に言えば、弾を撃つってことは、弾というオブジェクトを作り、それをある速度で飛ばせばいい。

935 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 06:27:00 ID:2fBGUOBZ]
……でも、もし弾幕STG作るんだったら、弾幕風で事足りる気がする。連投失礼。

936 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 08:24:53 ID:lNeW/IjQ]
>>934
なるほど。。オブジェクトを作って飛ばす訳ですか。
大体解りました〜ありです。



937 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 20:03:25 ID:lNeW/IjQ]
今934さんに教わった後頑張って色々やったのですが、
何点か分からない点や仕方のわからない点が出てきました。。
もし良かったら教えてください。
・弾の発射に間隔を付ける方法
・一部状況下(俺の言いたいのはジャンプ中)での発砲不可
・一定の数の弾を発射後何秒間か使用不可(要するにリロード)
・↑の間モーションが入るようにする方法

教えてください〜

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

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

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

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

リロードのモーションは、モーション専用のオブジェクトを作って、オブジェクト変更アクションを利用するのがいいかもしれない。
そのときは、モーション専用オブジェクトで、モーションが終わったら元のオブジェクトに戻すことを忘れずに。
アニメーションエンドイベントをうまく利用すると楽かもしれない。用語とかでわからないことは、>>1の非公式サイトで調べてみ。
長文・乱文失礼。

939 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 20:34:11 ID:lNeW/IjQ]
>>938
なるほど
それを行っている事を変数で表して、可能不可能をその変数の状態で判断させるわけですか
変数はあまり得意ではありませんが、色々やってみます。
ありがとうございました。
あ、後ここでこうやって質問して良い物なんですか?
板違いじゃないかとずっと気がかりでして。。

940 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 20:52:37 ID:LG4ZPs/B]
>>939
まあ、過疎ってるし個人的にはいいんじゃないのかなとは思うけど。
質問以外の話題がほとんど無いし。。
教えてクレクレ君だらけになったらなったで、つらいんだけどねw

941 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 20:57:40 ID:lNeW/IjQ]
やっていく内にわからなくなってきました。。
発射可能を表す変数 これはなんと表すことになるんですか?
例として教えてください

942 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 21:16:10 ID:smFSYJ2D]
n = 3
これを発射回数として
一回打つたびに-1してやって
0の時には打てなくすればいいのかな・・・
俺も初心者だから参考にならないかも;

943 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 21:21:43 ID:lNeW/IjQ]
>>942
返答ありがとうございます。
そういうのの総合的な並べ方がわからないんですね〜>>941の文が分かりづらくてすみません。。

944 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 21:29:00 ID:smFSYJ2D]
{
n = (n-1)
if n > 0
{
instance_create(x,y,bullet)
}
}

こんな感じでしょうか・・・
もっといい方法があると思いますが自分にはわかりません;

945 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 21:30:58 ID:lNeW/IjQ]
>>944
ありがとうございました。
早速いじってきます〜

946 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 22:02:44 ID:LG4ZPs/B]
クリエイトイベントで
isshootable = 1; //弾が撃てるか
isjump = 0 ; // ジャンプしてるかどうか
bulletNum = 3; //残弾数

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

  }
}




947 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 22:05:20 ID: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;
  }
}
こんな感じで。



948 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 22:16:01 ID:lNeW/IjQ]
>>947
なるほど
そういう並べるのですか
また困ったらよろしくお願いします。
ありがとうございました〜

949 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 22:21:00 ID:LG4ZPs/B]
あ、あと撃ったときにタイマーイベント発生させるの忘れてたorz
   bulletNum -= 1;
の下に、
   alarm[0] = 30; // 30ステップ後にアラーム0イベントが発生。
としてくらさい。
インデントはかきこ時の見た目重視で全角スペース使ってるので、コピペだと動かないので注意。

950 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 22:33:54 ID:lNeW/IjQ]
>>949
了解です〜
ありがとうございます。

951 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 23:18:28 ID:KZv3H4cz]
いつもお世話になっております。
教えてほしいのですが、>>853がうまくいきません。

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

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


ご教授いただきたくお願いします。

952 名前:名前は開発中のものです。 mailto:sage [2008/05/04(日) 23:28:07 ID:KZv3H4cz]
951です。

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

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

image_speed = 0.2

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

image_speed = 0.25


うーん、ただここでひとつ疑問が・・・
なんで「0.2」では動作しなかったのか・・・うーん
板汚し、すいませんでした orz

953 名前:名前は開発中のものです。 mailto:sage [2008/05/05(月) 00:40:19 ID: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の数値は全て浮動小数扱い。だが、整数のまま扱ってる分には問題ない、はず。
(私はプロじゃないんで…かじった知識程度で申し訳ない、間違ってたら指摘ヨロ)

954 名前:名前は開発中のものです。 mailto:sage [2008/05/05(月) 01:59:41 ID:T1qF9S2G]
まあでも、853で言ってるとおり
Other > Animation End イベント使えば
image_index判定する必要ないんだけども。

ちなみにあくまでStepイベントで判定するなら
if (image_index + image_speed >= image_number)
で Animation End イベントと等価になる。

955 名前:名前は開発中のものです。 mailto:sage [2008/05/05(月) 05:06:15 ID:KYkFnzVP]
FEっぽいゲームを作りたいんですが
移動範囲の求め方がわかりません;
1マスごとに-1するということだと思うんですが
具体的に書けなくて・・・
教えていただけたら嬉しいです

956 名前:名前は開発中のものです。 mailto:sage [2008/05/05(月) 05:40:23 ID:Bq2Q3q9u]
やり方はここが参考になるんじゃない?
ttp://www5f.biglobe.ne.jp/~kenmo/program/SLG/move/move.html
再帰ループとか理解している必要があるけど。





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

958 名前:名前は開発中のものです。 mailto:sage [2008/05/05(月) 08:26:38 ID: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の場合は保存速度に戻す
}


959 名前:名前は開発中のものです。 mailto:sage [2008/05/05(月) 08:57:11 ID:grhJSKQZ]
>>958
image_indexじゃなくてsprites_indexでした。

あと、このコードじゃうまく動作しませんでした。
うーん。難しい・・・。

960 名前:名前は開発中のものです。 mailto:sage [2008/05/05(月) 10:27:30 ID:j6OioUkw]
なんだかやりたいことが混乱してないか?
「困ったときは原点に戻る」
プログラム的なことは置いといて、まず何をしたいのかを考えてみ?

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

……>>853が言ってることと全く同じなんだが。
これで出来ないってなると、Step eventで毎回毎回image_speedを設定してるんじゃない?
もしそうだったらいくら止めても止まらないんだけどw

961 名前:名前は開発中のものです。 mailto:sage [2008/05/05(月) 10:40:47 ID:j6OioUkw]
もしimage_speedが一定で、終わったらそれを止めたいってだけなら、
image_speedをCreate Eventで設定した方がいいよ。

962 名前:名前は開発中のものです。 mailto:sage [2008/05/05(月) 11:31:49 ID:grhJSKQZ]
>>960,961
なんていうか、いろいろとすいません。
うーん、そうですねぇ。「やりたいこと」…
「一定条件のみアニメを止める」っていう動作をさせたいんだと思います。

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

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

でやりたいことが実現できました。
うーむ。確かに原点に返ってみれば、単純な事だったのですね…。
板汚しすいませんでした orz

963 名前:名前は開発中のものです。 mailto:sage [2008/05/05(月) 21:40:31 ID:2SyyMfLm]
なにげにレス伸びてる・・・そろそろ次スレの季節なのかな?

964 名前:名前は開発中のものです。 mailto:sage [2008/05/05(月) 22:22:44 ID:eAt6pbsl]
>>950です。
また質問に来ました。
HPを準備するまでは出来たのですが、HPの減らし方(ダメージ)がわかりません。。
後、自分的にはゾンビのような敵と戦わせたいので、
近づいたら(正確には近づかれたら)ダメージという形での使用方法も教えてください。
よろしくお願いします。

965 名前:名前は開発中のものです。 mailto:sage [2008/05/05(月) 22:48:47 ID:J24rBd4c]
>>964
サンプルとか、>>1チュートリアルとかサイトに色々書いてるから自分でも調べてから書き込むことをオススメする。

966 名前:名前は開発中のものです。 mailto:sage [2008/05/05(月) 23:18:51 ID: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を減らすから、範囲内に入ればとんでもないスリップダメージになるので
一定周期ごととか、減らす量を思いっきり少量にするとか、そういう工夫は必要かと思う。まぁとりあえず がんばれ〜




967 名前:966 mailto:sage [2008/05/06(火) 00:33:47 ID: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)

968 名前:名前は開発中のものです。 mailto:sage [2008/05/06(火) 00:40:06 ID:m5xvmqWN]
>>965 >>967さん
ご返答ありがとうございます。
なるほど、そういう風な式を立てればいいのですか〜
わかりました。ありがとうございました

969 名前:名前は開発中のものです。 mailto:sage [2008/05/06(火) 03:30:10 ID:HwPOvHtQ]
>>968
一応聞いておくけどヘルプファイルもってる?

970 名前:名前は開発中のものです。 mailto:sage [2008/05/06(火) 11:45:29 ID:m5xvmqWN]
>>969だいぶ遅れた返答ですみません。
F1のあれの事ですか?
英語で読めないです。。


971 名前:名前は開発中のものです。 [2008/05/06(火) 12:57:24 ID:ndOoddgE]
gamemakerで作った拡張子exeのゲームをPSPで遊ぶ事は出来ないのでしょうか?

972 名前:名前は開発中のものです。 mailto:sage [2008/05/06(火) 13:04:37 ID:zKMDMsj4]
GameMakerはWindows専用だ。マルチプラットホームなわけねぇだろ。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<345KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef