【2D】ゲーム作成ツールGameMaker part2【マンセー】
1 :
名前は開発中のものです。 :
2005/07/12(火) 09:03:47 ID:DK0oUKwt
2 :
名前は開発中のものです。 :2005/07/12(火) 09:04:29 ID:DK0oUKwt
《Game Makerの特徴》 @ コリジョン(当たり判定)/スプライト/マップ/サウンド再生など、2Dゲーム作成にかかせない機能が充実 @ なにかと便利なイメージエディタを内蔵 @ プログラミングの知識はあってもなくてもよい @ *.exe(単体実行可能)形式でゲームを出力できる @ 作ったゲームは自己責任の元で自由に配布できる(作ったゲームを売る場合のライセンス料さえ不要!) @ キーボード、マウス、ジョイスティックからのキー・ボタン入力をサポート @ イベントドリブン型なのでスマートにゲームを構築できる @ 組み込みスクリプト言語"GML"により、さらに細かい処理が可能 @ エンジンはDirect X ※有料登録(15ユーロ)するとゲーム起動時のロゴ表示が消えて3Dやエフェクト機能などが追加されますが、基本的に無料で充分使えます。 《Game Makerの欠点》 @ 英語ソフトなので、英語が読めないととっつきにくい @ ツクール類とは違い、ゲームの"動き"から設計しなければならない(それがまた長所でもある)
3 :
名前は開発中のものです。 :2005/07/12(火) 09:05:14 ID:DK0oUKwt
4 :
名前は開発中のものです。 :2005/07/12(火) 09:06:24 ID:DK0oUKwt
気づいたら前スレ落ちてて、スレ立ってなかったたので立てたのだが・・・ 問題があったら指摘してくれ。 あとテンプレ作ってくれた よこしまなMr.0氏に感謝
5 :
名前は開発中のものです。 :2005/07/12(火) 09:16:07 ID:DK0oUKwt
はっ・・・ そういえばタイトル亜wせdrftgyふじこlp;@:
>>1 お疲れ様です。
今、取り掛かっているゲームの作成に疲れたので、
サクっと気分転換に作ったゲームを置いておきます。
http://gamdev.org/up/img/2885.zip スペースキーを押し続けると上昇し、放すとドンドン落下して行きます。
障害物を避けながら、Pマークのコインを拾ってください。
作成中ゲームの謎キャラも出てきますが、ドンマイ。 orz 消し忘れたョ。
Del pass入れ忘れたから、あぷろだからも消せないし。トホホ。
>>1 スレ立て乙です。
>>6 コインの配置が絶妙ですね。タイミングが合って、連続で取れた時が
気持ちいいです。上下動に緩急がついていれば、もっと良くなるかも。
さ、自分も作らなきゃな〜。1週間近く毎日作ってるのに、
未だ形にもなっちゃいねえよorz
>>6 ゲーム性とは関係ないかも知れんが背景のスピードは
スクロールより遅くしたほうが遠近感でるんじゃないかな?
10 :
名前は開発中のものです。 :2005/07/17(日) 21:15:49 ID:BDmUkYbk
>>1 乙ですー。
ーで、早速質問で申し訳ないのですが、
現在シューティングゲームをつくっていて、ポーズボタンを実装しようとしているのですが、
手っ取り早くできる方法はないでしょうか?
>>7 タコのモデルに伝えたところ、とても喜んでおりました。
>>8 緩急ですね、覚えておきます。
>>9 スピード感が欲しかったので、あの様な背景速度設定にしました。
ゲームの文法(?)からは外れてしまいましたが、これはこれで良いかな?と思ったわけでして。
>>10 手っ取り早く実装するなら、
GMLの
instance_deactivate_all()
instance_activate_all()
を利用する。この場合、停止中にオブジェクトが消えてしまうが…
>>10 [Display a message]アクションで「paused」と表示してストップさせる...とか楽ですね
14 :
1 :2005/07/21(木) 18:18:13 ID:Ceg1byjT
15 :
名前は開発中のものです。 :2005/07/25(月) 20:17:18 ID:TziUlQUR
お邪魔します。 ビュー機能を使って、画面左四分の三にプレイヤーキャラ追従のマップを、 画面右四分の一に固定のステータス画面を置きたいのですが、マニュアルを読んでも ビューの使い方がイマイチ分かりません。 使い方をご指南いただければ幸いです。
これってMP3は使えない?
>>16 使えるけど処理が遅くなるそうです。
BGMはMIDIで、単発音はWAVが基本みたいです。
MP3使ってみたけど、いちおう再生できますね…
ども 処理が遅くなるってのはなかなか痛いですな。 MIDIがデフォだとしたらそのMIDIデータはMSGSにあわせて作らなきゃだめってことか・・・
今日はじめて触ってみたけど、結構簡単に作れ・・・そうな気がするね。
ちょっと質問。 これって未レジストの状態で普通の半透明処理は出来るらしいですけど、 ゲームのエフェクトに使われてる加算合成みたいなことって出来ますか?
21 :
名前は開発中のものです。 :2005/08/09(火) 02:28:25 ID:UetZZvsJ
できない…たぶん。 もし出来るなら俺も知りたい。誰か補足キボン
ゲーム開発知識は全然無く加算合成をよく理解してないが 半透明状態のオブジェクトを重ね合わせればいいのでは? 重くなるけど。
24 :
20 :2005/08/11(木) 17:58:04 ID:PezyNx9Z
遅ればせながらレスサンクス。 Chap16っていうのは「スプライト」の章のスプライトの編集の部分のことでしょうか。 とりあえずここを読んで色々弄くってみます。
25 :
名前は開発中のものです。 :2005/08/11(木) 22:58:07 ID:LrwLwF7w
そこにある方法じゃ加算処理は出来なくない? 普通のいわゆる半透明だけならimage_alphaだけど加算はわからん 加算処理が出来るとエフェクトがグッと綺麗になるんだがね
26 :
名前は開発中のものです。 :2005/08/15(月) 12:05:43 ID:VTl9QE6a
これでRPGってできるかなぁ……。
さあ、どうだろうねぇ……。
29 :
1 :2005/08/15(月) 20:47:58 ID:ippoP4kZ
>>26 ネタというかスレ活性化のためにうpしただけな訳で
そして思いっきりスルーされ(ry
画面をフェードアウトしようと思って黒い背景をフォアグラウンドで表示して、 Background_alpha値をいじることによって実現した。で、友人のPC(CPU1.8GVRAM32MB)で試してみたら重い重い。 半透明処理って想像以上にスペックいるのね。
VRAM32じゃあなぁ まぁ半透明はあまり多用しないほうがいいな
Gamemakerだけの問題かしらんが
うちでも半透明は重い
フェードアウトは仕方なくスプライト画面に並べてディザ処理のアニメーションでやってるけど
やっぱ機能としてフェードアウトはほしいなぁ。
あとワイプ処理、切り替わる際に画面が止まるのに違和感を感じるような
スクリプトを読み込んで、RPGとかADVみたいなメッセージ処理が出来る
簡易言語みたいなのあったらいいよなぁ
と思って、着手してはみたものの
どうもHSPで挫折した俺には無理みたいだ
という愚痴だ
>>27 アクションRPGつくって!
そうか!処理が重い原因は半透明だったのか! orz
前レスからみんなのうp参考にやっと道中(後半だけですが)できました
シューティングです^^操作は F1 or readme参照お願いします。
今ボスつくってます^^;
ttp://gamdev.org/up/img/3066.zip えっとそれから少し質問させてください
戻り復活にしたいんですが
今はルームリスタートでやってるんです
復活ポイントを1つか2つ設けて、やられたら一番近いポイントに戻るってやつでず
多分タイムラインで処理したらいいんだと思うんだけど、どうしたらいいのか・・・^^;
ご教授おねがいします。
35 :
名前は開発中のものです。 :2005/08/25(木) 14:20:31 ID:nCvs6x59
>>34 これはすごい。
敵の量がやりすぎてて、面白い。
カスリもあるんだね。
そして、2度目のホーミングで死ぬ。
全部タイムラインでやっているのだったら、
復活ポイントの通過を記録する変数作って、
敵の出現のタイムライン上で、ポイント通過するごとに1ずつ増やしてって、
で、復活後にその変数を見て、敵の出現のタイムラインの開始時刻を動かせばいいのでは。
すげえわかりづらいごめん
思うんですが、げーむめーかーのタイムラインエディタって使いづらくないすか。
36 :
34 :2005/08/26(金) 15:09:47 ID:zebT7oMZ
>>35 さん
ども ありがとです。
2度目のホーミングというと白の蛾みたいな敵とセットで出てくる所ですよね。
実はひそかに指摘されるのではと思ってた箇所です。はい^^;
この面構成でいいのか迷ってはいるんです。今でもね・・^^;
実際、敵の種類もすくないし面数もない様な状態なので、
まだまだこれからだとは思ってます。
戻り復活の件は質問の仕方が悪かったです。すませんです
タイムラインのステップ数をさして「そこに戻れよ」というのはtimeline_position命令で
できるのはなんとなく分かってたのですが、戻り復活の処理となるとタイムラインを戻しただけ
では既存に生成しているオブジェクトは残ったままになるのではないか?
というとこが引っ掛かってたんですが、それも含め
>敵の出現のタイムラインの開始時刻を動かせばいいのでは
この言葉にぴぴっときたとこがあったのでそれを試してみたいと思います。うまくいったら報告します。
37 :
34 :2005/08/26(金) 15:22:06 ID:zebT7oMZ
上の続き タイムラインエディタは自分は自機のやられた後処理と敵出現のタイミング指定しか使ってないですが さほど不自由は感じてないです^;
38 :
名前は開発中のものです。 :2005/08/27(土) 22:19:46 ID:gEl8uNx9
ん!? まちがったかな… まあいいか頑張ってね。 タイムラインエディタ、Flashみたいのがほしいなと思った。
39 :
名前は開発中のものです。 :2005/08/29(月) 02:29:48 ID:NC/VBiko
pathでオブジェクトを真円軌道で動かしたいのですが、ツールの曲線では 真円が描けません。どうすればいいでしょうか。
>39 正確な円にこだわるなら、計算して動かすのがいいと思う。 lengthdir使えば楽だよ。 Create Event: set variable angle to 0 ←適当な変数を作る Step Event: set variable angle relative to 5 ←上で作った変数を適当に増やす move to position (320 + lengthdir_x(100, angle), 240 + lengthdir_y(100, angle)) こんな感じで、パラメータは適当に調整してみて。
41 :
名前は開発中のものです。 :2005/08/30(火) 12:39:14 ID:fphpnZMy
>>39 さん
真円というのがどれだけの正確さかわかりませんが
この程度でよければ以下の座標を参考にしたってください。
(↓はgm6ですが多分5でもいけるかと)
http://gamdev.org/up/img/3101.jpg この精度でいいなら、メニューアイコンの
「Reverse the path」で進行方向反転
「Rotate the path」で回転させ始点を調整
「Scale the path」で大きさを調整(%で指定。)
などであなたが思っている動きに加工してみてはどうでしょうか?
あ 既出でしたか・・・・
43 :
41 :2005/08/30(火) 12:59:20 ID:fphpnZMy
あとあとを考えると
>>40 さんの方が楽なような気がしてきたので忘れてください
>>39 以下の内容を[Execute a piece of code]アクションに貼り付けて実行してみてください。
ゲームは一瞬で終わりますが、クリップボードに(右から始まって反時計回りの)円の座標リストがコピーされます。
あとはその座標を参考にして円を描いてください。
// - - - - - - - - ↓設定ここから - - - - - - - -
r = 100; // 円の半径
cx = 200; // 円の中心X座標
cy = 200; // 円の中心Y座標
d = 12; // 円を何分割するか
// - - - - - - - - ↑設定ここまで - - - - - - - -
clipstr = "";
CRLF = chr($0D)+chr($0A);
for (n = 0; n < d; n += 1)
{
px = string(round(cx + r*cos(n*2*pi/d)));
py = string(round(cy - r*sin(n*2*pi/d)));
clipstr += string(n+1)+ ". (" +px+ ", " +py+ ")" +CRLF;
}
clipboard_set_text(clipstr);
game_end();
こんちわ。 早速今からやろうと思ったんだけどダウソ出来ナス・・・ 鯖落ちてる?(´・ω・`)
すんません自己解決しますた。 PCに問題があったんかな・・・兎も角やってきまつ
47 :
名前は開発中のものです。 :2005/09/20(火) 18:31:37 ID:GECwW1SJ
GMはもっと注目を集めるべきだろ
シェアなのがなぁ・・・
49 :
名前は開発中のものです。 :2005/09/25(日) 21:28:29 ID:9L+AvabS
ジャンプってどうやるのでしょうか? 過去ログみれない・・・
50 :
よこしまなMr.0 :2005/09/26(月) 08:45:17 ID:P+eUhLCL
簡単にレジストする方法ないかな。なんか面倒くさそう・・・
53 :
名前は開発中のものです。 :2005/10/10(月) 13:11:32 ID:D2KvdjRf
今日初めていじってみたがかなり楽しそうだな。
54 :
名前は開発中のものです。 :2005/10/17(月) 13:54:10 ID:Bre/aJF5
5.3Aで、ジョイスティックのボタンを離したとき(押し上げ)にイベントを起こして アクションをさせるにはどうすれば良いでしょうか?
思い付きの適当でスマソ // 押された時に呼び出すスクリプト { var 押されているフラグ; if(押されているのを関知する関数) 押されているフラグ=1; if(!押されているフラグ) アクション; }
57 :
よこしまなMr.0 :2005/10/25(火) 23:23:56 ID:PlOfzJwA
>>55 Stepイベント毎にjoystick_check_button関数でボタンの状態を調べておき、
「押されている状態」から「押されていない状態」へと変化したらevent_user関数でイベントを起こすようにします。
例) ジョイスティック1のボタン4押し上げ時に、User0イベントを発生。
Stepイベント → [Execute a piece of code]アクション:
isPressed = joystick_check_button(1, 4);
if (prev_isPressed && !isPressed) event_user(0);
prev_isPressed = isPressed;
Createイベント → [Execute a piece of code]アクション:
prev_isPressed = false;
58 :
55 :2005/10/27(木) 17:28:39 ID:/cV+iLLB
ありがとうございます。試してみます。 GMLも勉強してみます。
何か、ツクールXPと似ている感じがするが…。(スクリプト言語搭載) 処理速度の点ではツクールXPや2003と比べてどちらが上なのだろう。 自由度の点ではツクールXPに匹敵すると思われるが。 あと、画面の強制スクロールをするアクションや命令は無いのだろうか。
60 :
よこしまなMr.0 :2005/10/31(月) 19:07:44 ID:Obg2lX5N
>>59 > 処理速度の点ではツクールXPや2003と比べてどちらが上なのだろう。
描画速度はGame Makerの方が上でしょう。
> 自由度の点ではツクールXPに匹敵すると思われるが。
GML(Game Maker用スクリプト言語)を使いこなすことができれば、Game Makerの自由度はツクールのそれをはるかに上回ります。
> あと、画面の強制スクロールをするアクションや命令は無いのだろうか。
Game MakerにはView機能というものがあります。
ツクールXPより遙かに優れている所 フリーウェアでほとんど何とかなる。 ネットライセンスとかヘンナノ無い。
最近あんまり動きなくないですか? 6はどうなんの?
日本語をDROWで使いたいですねぇ。
64 :
よこしまなMr.0 :2005/11/02(水) 16:29:53 ID:Kfwe6/NK
>>62 本家の
ttp://www.gamemaker.nl/facts.htmlより: > How will it continue? My current main priority is writing a book, together with Jacob Habgood.
> The title is The Game Maker's Apprentice: Game Development for Beginners
> and will be published by APress. It is expected to appear in February or March 2006.
> And of course I am working on version 6.2 of the program.
ということですので作者さんは現在、Game Maker初心者向けの本を書かれているそうです。
もちろんGame Maker 6.2の開発も行われているようです。
>>63 ちょうどGM6で日本語を描画するための記事を書いていたところです。
"GameMaker Japan - ドキュメント - GM6で日本語テキストを描画しよう"
ttp://gamemaker.main.jp/modules/articles/article.php?id=22
レジストしたいのですが、詳しいやり方書いてるHPが英語なもので、 混乱しています。 20ドル位寄付すればキー番号を受け取れる様ですが、自宅のPCがオフ環境 なので、帰宅して受け取ったキー番号を自分のPCにインストール済みの GMに打ち込んでもレジストする事は可能なのでしょうか。 最寄の銀行から振込みって出来ますかね………?
>>66 Once we receive your payment (which is normally within one or two days, unless you use cash or check payment)
an email will be sent to you with the name and key together with information on how to enter these in the Game Maker program.
ShareItでクレジットカード決済すれば、その時に書いたe-mailアドレスにメールで 名前とkey番号が送信される。
銀行振り込みよりは楽じゃないかな?(ShareItは代金の収受を代行してるだけ)
15ユーロと20ドルどっちでも良いみたい、今なら10ポンドが特かもw
キー番号は番号に意味があるのでオフラインPCでもオッケだな、一人一アカウントなので自分のPCが3台あったら
3台ともに、名前(多分自分の名前w)とキー番号でアンロックされたGameMakerが利用できる。
(友人にキー番号を渡しちゃやだよってFAQにあるので、それは無しね)
初めてのゲーム作りという事でブロック崩し作ってます ゲーム開始時にボタンを押すとパドルからボールが 射出されるようにしたいんですけど、 現時点ではレーザーみたく大量に出てきてしまいます。 一個だけポーンと出すにはどうすればよいのでしょうか? Ver. 5.3A GMLはさっぱりです。
69 :
NOT 66 :2005/11/04(金) 23:06:51 ID:UP1blmFB
>>67 サンクス!俺もやりかたがよくわからんかったから手を出さなかったけど、やってみるよ。
諦めてクレカ使った方が楽で早そうだね。
>>68 ボタンを押したときのイベントに下記のスクリプトでインスタンス作成制御してみては?
{
if(!instance_exists(ボールのインスタンス名)) instance_create(出現位置x,出現位置y,ボールのインスタンス名);
}
>>67 レジスト代は15ユーロが本当の基準です。ドル・ポンド・円など、その他の通貨はレートによって値段が変わります。
>>68 Keyboardイベントの度にボールを生成していませんか?
そのような場合はKey Press(キー押し下げ)イベントでボールを生成するようにすると良いです
72 :
69 :2005/11/04(金) 23:43:29 ID:UP1blmFB
73 :
67 :2005/11/05(土) 09:22:13 ID:q0HGhs5y
>>70 そ、そうか(^^; Yenもおっけなんだな、今度からはキミに任せるよ
>>72 TETRIUS期待してます!かなり本格的なゲームですね.. 激乙です。
>>73 なんだか不快感を抱かせてしまったようで大変申し訳ないです(_ _
お金に関することなので少し正確に書いた方が良いと思ったもので・・
近頃はGame Maker 6で全角文字を描画できるスクリプトをちまちま書いています。
今のところ、「全角ひらがな・全角カタカナ・改行・描画開始位置の指定・文字間隔ピクセル指定・行間隔ピクセル指定」に対応してます。
文字がずらーっと並んだスプライトをdraw_sprite_partしてるだけですが
あとは全角スペース・全角記号・全角英数字・アルファ値指定を実装して。。。漢字はさすがに無視だろな
半角混じり文はどうするかな。。
>>69 ,
>>71 回答ありがとうございます。
スクリプトはまだ理解できないのですが、Key Pressの方で出来ました。
今のままではボタンを押す度に生成されてしまうので制限かけたり
しようと思います(おそらくIf the number of instances〜を使うはず)。
しょぼいと思ってたアルカノイドが実は凄く工夫されたゲームだったんだなあ…
76 :
66 :2005/11/05(土) 12:35:57 ID:ppaaxkCq
77 :
69 :2005/11/05(土) 23:43:23 ID:YaP40Vot
ライセンスキーが来ないよほほほほほ〜土日はダメポ?
>>74 ありがとうございます。頑張ります!
>>75 ボールが無いときだけ発射するようにしたいならば...
on Key Press:
[If the number of instances is a value] object: ボール、number: 0、operation: Equal to
[Start of a block]
この間でボールを生成したり、スピードを設定したりする。
[End of a block]
といった感じです。
※[If ....]系のアクションはその条件が合うと、基本的に次のアクション1つを実行します。
複数のアクションを実行したいときには[Start of a block]-[End of a block]で囲むわけです。
>>77 ttp://www.gamemaker.nl/regfaq.html "I send in my registration fee; how fast do I get the key?"
の項にreg keyがどのくらいで届くかが書いてあります
79 :
69 :2005/11/06(日) 10:02:16 ID:x/RBJv7A
どうやらお金が動かせなかった様子。
俺の入力ミスかJCBから認可されなかったかどちらか。きっと前者だろう。
今度はVISAでTRY。
JCBの時には見受けられない、オーダーメール後の追加メールがすぐ飛んできて、
48時間以内にライセンスキーが送れるかも〜と。
今度こそいけるかな。ワクテカ
>>78 二日は待てということですね。
今回のはどうやらshare-it!(?)とクレカ会社の間での段階でコケたようです。
お騒がせしました。
80 :
66 :2005/11/06(日) 18:00:50 ID:IxLPpGfh
何度もすみません。 やはり本家の英語の判読に手間取っております。 クレジットカードは所有していませんが、銀行の口座は作ってあります。 この場合、銀行からどこに送金もしくは振り込めば良いのでしょうか。 それと、オンライン登録のLicensed Toの項目の意味が分かりかねます…。 アスタリスクが付いた項目は必須項目なのでしょうか。 色々方法がある様で、現金払いを望む自分としてはどの方法が手っ取り早い か悩みます。
81 :
69 :2005/11/06(日) 18:36:45 ID:MkKQkn0F
>>80 Licensed Toは登録したい「名前」じゃないかな?
(Enter Registration KeyのNameに中る箇所)
俺はそう解釈して、ニックネームを入れた。
ソウジャナカッタラガクブル
>>80 ttp://www.gamemaker.nl/registration.htmlの "Register through Share*It"から飛べるページのことでしょうか
まずページ右上のShow prices in: をJapanese Yenに設定します。
すると値段が「Total: \ 2,225」とか表示されるはずです。これはGame Makerのレジスト代15ユーロを日本円に換算した値段です。
続いてPersonal Informationを入力するわけですが、仰るとおり * は必須項目です。
基本的に全て半角英数字で記入してください。
項目の説明:
License to* :81さんが仰っている通りGameMakerのレジスト名です。フルネームでもニックネームでもかまわないと思います。
First Name* :名前
Last Name* :苗字
Street Address* :たとえばxx町 1丁目5番地3号なら、3-5-1 xx-machiと書く
Additional Address Information :(必要なら) 部屋番号 アパート・マンション名の順で書く
ZIP / Postal Code* :郵便番号
City* :市町村区, 都道府県の順で書く (Shinjuku-ku, Tokyo)
Country* :もちろんJapan
E-mail* :注文情報やレジストキーが送られてくるメールアドレスを書く (間違えないように。)
Retype E-mail* :もう一度メールアドレスを書く
そして次にPayment option(支払い方法)を選びます。
Payment option* :銀行を通じて支払うならBank/Wire Transfer(電信送金)
Billing currency* :もちろんJapanese Yen
※この場合海外の銀行へ送金するわけですから、注文する前に、利用されている銀行窓口で
「海外の銀行へ電信送金することは可能か?」「可能ならば、手数料はどれほどかかるのか?その内訳は?」この2点を必ず確認しておきましょう。
大手の銀行でないと電信送金できない場合があります。
手数料とその内訳は銀行によって様々で一般的に5,000円前後かかります。
注文が終わったらShare*Itから「注文情報を確認しているので数時間〜1日ほどお待ちください」みたいな英語メールが来ると思います。
もし、注文が成功してShare*Itからついに「この銀行に振り込んでください」みたいなメールが来たら、その情報を銀行に見せて「ここに電信送金したいのですがどうすれば?」と聞いてください。それが一番確実だと思います。
(なお、私が実際にこの支払い方法を実践したわけではありません。あくまでも参考までに)
83 :
69 :2005/11/07(月) 10:49:21 ID:57Znw864
鍵が無事に届きました。けど今会社だから弄れナス。orz
>>82 手数料高。
84 :
82 :2005/11/07(月) 11:59:27 ID:+VvvZcOU
85 :
66 :2005/11/07(月) 12:51:19 ID:BqOngL+h
>82 こんなに詳しく説明して頂いて有難う御座います。 ネットで検索してみた所、北洋銀行から海外へ送金出来るそうですので、 送金してみようと思います。
烈しくGJ!
VRAMが4MBなので5.3A使ってるけど、スプライトの回転とか色調変更 が出来ないのが痛い……。GM5.3Aで外部DLL使ってスプライトの回転 や色調変更(真っ赤になったり)を可能にする方法というのは無いもの だろうか……。 GM6は現在のチップセット内臓型のPCだと厳しいか……。
>>87 どもです。
>>88 疑似回転なら
まずスプライトの編集画面で[変換]-[キャンバスのサイズ変更]で最低でもルート2倍ぐらい広くした後に、
[アニメーション]-[回転]を選んでNumber of framesに36ぐらい指定してぐるぐるっと編集しておき、例えば30度傾けるには image_single = (30*image_number/360); といった具合に代入すればいいわけですが、
この方法だと複数フレームを持つスプライトの場合少し面倒ですね。。。
色調変更は、そのオブジェクトの上にimage_alphaが0.5とかの真っ赤な同型スプライトをかぶせれば不可能ではないですね
※ (真っ赤な方のインスタンス).depth = (その被せられる方のインスタンス).depth - 1;
さらにレジスト版ならこの真っ赤なスプライトに sprite_fade(真っ赤なスプライト, make_color_rgb(R,G,B), 255); とかやってやるとどんな色でも対応できそうですね
>>89 ありがとうございます。
image_alphaを0.5とか(半透明)にすると処理が重くなるとか書いてあった
様な……。
回転に関しては、殆ど1枚絵を対象とするので(風車とか)、
上記の方法でいけそうです。
色調変更や回転の問題を克服すれば、GM5.3Aの方が
動作も軽くて使い易そうです。
あと、sprite_rotateとかいうのがありましたが、リソース変更の所に
記載されてあったので、ゲーム中には使わない方が良いのでしょうかね…。
>>90 そうですね・・sprite_rotate()だと回転するたびにどんどん画質が落ちていくでしょうし。。。
Changing Resources系のアクションはGame Makerの編集環境の機能をそのまま関数にしてあるような感じっすね。。。。。。笑
ttp://www.cs.uu.nl/docs/vakken/gds/games.html ここで落としたゼルダのゲームなんだけど
ゲームのサイズ自体は5MBなのに
実行したらメモリ上で80MBになっちまう。
GameMakerで作ったゲームでメモリ食ってしまうのは仕方がないの?
RPGを作りたいんだけどGameMakerじゃあ不向きなんだろうか。
試しにメモリが64MBしかないノートパソコンでゼルダを動かしたら、
メモリにメッセージ音を読み込めなくてエラー落ちしてしまうんだが・・・。
2Dなのに必要スペックが高すぎるがする。
ゼルダやってみたらちょっと動かしたら レジストバージョンじゃないとダメというエラーでとまった。 exeファイルつくってもだめだった。 だめじゃんこれ。
リンク先のexecutableじゃないと実行できないよ。
Game Maker/Examples/ディレクトリ中にあるゲームのメモリ使用量を比べてみました タイトル ... v5.3A, v6.1 1945 ... 6MB, 16MB Asteroids ... 9MB, 21MB hit the ball ... 5MB, 16MB Pacman ... 8MB, 19MB Street race ... 6MB, 14MB このように、6.1ではメモリ使用量が多い傾向にあるようです。 次の6.x系リリースでは32bitPNG形式のグラフィックスまでサポートされるようなので、6.xはまだまだパフォーマンス調整が続きそうです。 規模の大きいゲームを作るなら5.3Aを使ったほうが良いと思います
物によってはメモリ使用量が3倍も違うものがあるんですね。 2Dゲームをプレイされる方はスペックが強くなさそうですし、 5.3Aのが良さそうですね。 とても参考になりました。ありがとうございます。
昔、ブラックアウトやホワイトアウトなどのフェード機能は無いと変な事を書いた気がしますが
screen_gamma(r,g,b)
のrgbを-1〜1まで連続的に変化させることで出来たようです。(ただし排他的グラフィックモードのみ)
というわけで訂正でした。
>>92 お疲れ様です。
これで吉里吉里みたいなシナリオファイルを読むスクリプト組めば、
かなりRPGへの道が開けそう。
101げt
ああ、このスレの上で話題になってたのは 「半透明以外で」 ってことだったんですね… スレ汚しスマソでした
RPGツクールの出来ないことを補完するという意味では、
ARPGなんか向いているのかもしれないですね。
>>102 あれれ、無くなってたんですか。何でだろう。
サンプルありがとうございます。
半透明でも結構いけますね、
前試したときは遅かったんですが……やり方が悪かったのかなあ?
RPGツクールよりは遥かに難しいけど・・・でもこのツールはいいね。
http://www.gamemaker.nl/games_exe.html ↑ここに載ってるGameMaker製のスタンドアロンのゲーム、VRAMが4MBのノートでも動いたけど、
5.3Aで作られているのだろうか。
「HardHat2」や「SonicZone」を見る限りでは、RPGツクール2000や2003よりは
ツールの自由度はかなり高いと思われる。
プログラミング言語が組み込まれている為に、
オリジナルのRPGを作る為に自作メニューや自作戦闘を組む際の手間が
ツクール2000や2003に比べて遥かに少ない。
FF5やFF6クラスのRPGも再現出来るかも知れない。
>>105 GM6ではexclusive graphics modeが撤廃されたためにscreen_gammaなどは使えなくなったようです
>>107 そこのゲームは結構前から載ってるのでGM5製だと思います
/* ひとりごと */
しばらくGM6.xは開発状況を見守っておくとして、Library Builder(
ttp://www.gamemaker.nl/faq.html )で5.3A向けRPG構築用アクションライブラリでも作ろうかと思ったわけですよ
[Learn the sorcery(魔法を習得)]アクションとか [Change the class(職業を変更)]アクションとか [Configure the keyboard(操作ボタンの設定)]アクションとか色々作っておき
kernelオブジェクトに独自イベントの処理(会話窓の表示、マップ間のジャンプ、パーティの強制移動、...)とゲームの進行を任せるといった線でいこうかと思ったのですが、
もはやGame MakerではなくなるしRPGとは何かという疑問にぶち当たるので、タンスの奥深くにしまっておきますね。
上記とは関係ありませんが、タクティクスオウガ外伝のようなターン制戦闘シミュのロジックが書きたくてしょうがないので山で修行してきます。
>102 サンプル使わせて頂きました。 感謝ですー。 おかげさまで明暗を使った面を作れました。 動作も別に重くないようでしたよ。
乙であります!
公式の stand alone で紹介されてる doomed ってスゲエな。
よく調べたら、あれで使っている仕組みは GameMaker バージョン 5.3Aで未レジストでも動く。
Gadget 3D っていうみたいだけれど。興味ある人いたら見てみては?
公式っぽいページ(英語)
ttp://www.geocities.com/freegadgets/3d_engine 技術的な話をすると、立体的な壁の描写には draw_sprite_part_ext() をうまく利用している。
5.3Aだとこれを未レジストで利用できたんだが、
6.0以降は未レジストでは利用できなくなってしまった。残念。
>112 これ使ってウルティマアンダーワールドみたいなのを作ってみたいと思ったけど、 デモとかちょっとプレイした限りではZ軸が無さそうなんだけど、あるのかな?
114 :
112 :2005/12/14(水) 21:10:11 ID:o6ZocyID
>>113 ざっと内部のスクリプトを眺めてみた。3D処理は基本的なことしかわからないのだけれど。
○壁に見られるようなスプライトのテクスチャ貼り付けは、Z軸に平行な平面(壁)及びZ軸に垂直な平面(床や天井)だけ。
○一般的なポリゴン(三角形)は単色だが、任意の3次元平面の描写は可能。
○カメラ方向の自由度がZ軸回り(Z軸に垂直な平面上をぐるぐる回る)のみのため、上を向く、下を向くといったことができない。
○カメラの位置座標は 3次元で与えられているため、Z軸方向の移動は可能。
○コリジョン判定は、ルームに配置されたアイコンによって行われるので、現状2次元的。
理論上不可能ではないけれど、3次元カメラワーク、Z軸を含めたマップのデータ構造やコリジョン判定、
その他必要な処理のための改造は必要かと。結構大掛かりになりそうだが…。
わざわざスクリプトを確かめてくれたんか。 さすがに大掛かりになりそうだな。 3Dコリジョン判定やらZ軸のあるマップとかどうすりゃ良いのかさっぱりだ。 あきらめて2Dのゲーム作るわ、ありがとね。
GameMakerで作られたネットゲームってあるの? サンプル以外見つからない・・・。
117 :
よこしまなMr.0 :2006/01/12(木) 23:44:16 ID:qTSXcIn+
>>117 キタ━━━━━━(゚∀゚)━━━━━━ !! 乙です!
昨日ダウンロードして使ってみたんですが、98マシンだとサクサク動くものの透過が効かず XPマシンだとやたらに重くて、本来60fpsのところが15前後しか出ない状態です。 動作条件はまず満たしていると思うのですが、GameMakerの場合いったいなにが一番 描画を左右しているのでしょうか?
おそらくだが、PC環境、主にグラボの性能が影響するんじゃないか?
>>119 おそらくGame Maker6.1のことだと思いますが・・
個人的見解でのGM6.1の動作環境は、「
>>104 」に書いています。
ちなみに当方のNotebookでは、ATI RADEON 7000系グラフィックスチップ(DirectX8, 3Dアクセラレーション対応)+VRAM 32MB(メインメモリ共有)で安定して動作しております。
まずは、お使いのビデオカードやサウンドカードのドライバを最新版にアップデートして試してみてください。
ただしGM6.xは"まだまだ"開発中なので、しばらくはGM5.3aを使った方が良いかと。
122 :
119 :2006/01/18(水) 13:55:40 ID:2SH+Qcry
>>120 ,121ご回答ありがとうございます。
やはりグラフィック周りが貧弱なせいのようですね。設定しなおしてみます。
また、5.3aのほうも使ってみます。詳しいご返答本当にありがとうございました。
既出で当たり前かもしれないけど、 透過処理したスプライトのオブジェクトを1画面に一杯配置したら、 ルームエディタが重くなるんだな。 で、ひょっとしたらと思ってバックグラウンドの透過タイルを 一杯配置したら同様に重くなった。 マップ作るときには透過画像が少なめになるように気をつけないとダメそうだなあ。 ゲームが動作中は重くないので、そこまで大問題って訳でもないが。
なんで11月からぱったり人がいなくなったんだろうここ。 ところで、「ボタンを押した長さで効果をかえる」っていうのはできる? ぶっちゃけボタンの押し具合でジャンプの高さとかを変えてみたいんだけど
ものすっげーはずかしーヽ(゚∀゚)ノ!
おれも急に人がいなくなって不思議に思ってる。 Game Maker Japan 非公式サイトでDLできるHAREって ゲームが参考になるんでないかな。 タメジャンプアクション。
ずっとROMってました。 年度末に近くなるほど仕事が激務になり GMにまで手が回らなくなって放置状態に・・・。 最近前倒しで落ち着いてきたのでGMいじりは再開してる。が、書くことが無いorz
129 :
Joker :2006/02/08(水) 09:07:08 ID:faCpz2xY
こんにちは。最近GameMakerを始めたJokerといいます。本当に2週間くらい前 に始めたばかりでわからないことだらけなんですが、はじめにロックマンの様 な2Dのアクションを作ろうと思っています。そこで少々問題が起こっている んですが、プレイヤーキャラクターをいろんなアクションに対応させるために 左向きやジャンプ時などのオブジェクトにいろいろわけてあるのですが、 その際にViewを使う時に追うオブジェクトを一つしか設定できないのでスクロール がうまくいきません。2つ目のviewに左向き等のオブジェクトを対応させてみたところ、 左向きの方しか追わなくなってしまいました。何か解決策などのアドバイス がもしあったら教えていただけないでしょうか?また、viewで画面をスクロール させる時に、端に行った場合でなく、キャラを中心にスクロールさせる ことは可能でしょうか? 長文失礼しました。
131 :
Joker :2006/02/10(金) 01:47:35 ID:teDVSfxU
ありがとうございますー。大変参考になりました。 あと、いろいろやってるうちにわからないところが3点ほどでてきたんですが、 質問してもよろしいでしょうか?フォーラムの方に記載しておいたんですが・・。
132 :
xyz :2006/02/10(金) 10:28:17 ID:vmTX8Bzr
GMLをタイプして作るやつありますよね。 あれってどうやったら あのような画面が出てくるのですか?もうさっぱりなのでどなたか教えてください。お願いします。
>>132 「File」メニューの「Advanced Mode」にチェックを入れてください。
GameMakerではセーブ機能をもったゲームは作れないんでしょうか?
135 :
xyz :2006/02/14(火) 13:31:01 ID:QFe7Aksh
>>133 さん ありがとうございました
scriptというのが出てきたのはわかったのですが
GML入門のところにかいてあった
script propertiesや execute a piece of codeなどの画面は
どうしたらでますか。
いっそ同人ゲー板のほうに立てるか類似スレ立てたほうが人集まるんじゃね?
138 :
125 :2006/02/16(木) 19:54:41 ID:+HYBFe6p
さっぱりわからんです…… ダッシュと組み合わせようとするとなおさらさっぱり。
>>138 タメジャンプじゃなくて、マリオみたいにジャンプ後に制御したいのかな?
変数を一つ用意して、ジャンプした時に変数を1にする。
一定時間経過するか、ボタンを離したら変数を0に戻す。
で、変数が1の間は重力の効きを弱くする、というのではどうでしょう。
うぉ いつのまにかレスが
>>139 その通り、マリオ(もっというとロックマン)みたいなジャンプを再現したかったのです。言葉足りなくてスマソ
とりあえずその方法を試して見ます。
>>140 感じとしてはそんな感じです、わざわざすみません。
同意できるのに
>>134 がスルーされている件について
ヘルプ読んでも、わかんねえ…。
143 :
名前は開発中のものです。 :2006/02/19(日) 14:15:33 ID:hVYPSpvh
ヘルプにあるぞ。 Finishing the Game -> Global game settings -> Various other options Let <F5> save the game and <F6> load a game デフォルトでこの機能は有効になっている。 変数などの状態は保存できるので、機能的には通常、これで十分かと思われる。 しかし、どこでもセーブ可能なため、制限したいならこのチェックをはずし、アクション "Save the game" 等を使って自力で組む必要がある。 パーティクルの状態が再現されないなどの点にも注意。
わざわざ自前でファイルに書き出して読み込みやってたオレはアホかw スクリプトがもっと書きやすかったらGameMaker良いんだがなあ・・・。
そこでDelphiですよ
なんでまたDelphi
どこでもセーブはゲームバランス崩されるし、
直ぐ飽きられる場合もあると思う。
>>145 こだわりがあっていいじゃん。
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´∀`)/< 先生! 自己満足ゲーム作ってたら、 _ / / / \ 原因不明のバグにぶち当たりました! \⊂ノ ̄ ̄ ̄ ̄\ \_______________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
うp汁
ドット絵ばかり書いててまったくゲーム作りが進まない俺ガイル
6.1バージョンで問題なく動くのを確認・・・ どうも5.3Aのcollision関連の関数で起きる模様。
>>150 まちがってたらすません
前レスの717〜740ぐらいに丼氏のボイドトランサーで逆のパターン(近くにいるおなじインスタンスから離れる)
だったかの質問レスがあるのでそれもチェックしてみたら?
>>50 に前レスログのURLあるよ
>>よこしま氏 mbtext_scripts&jfont使わせてもらってます。今のところええ感じです・・といいつつ質問なんですが(^-^;; mbtext_draw()の第4引数widthを指定しない時やwidthに満たない幅で描画するときに描画幅を調べる構文を以下の様に書いてます。 今のところ"\\n”や改行などを無視してもいい状況なのでこれで妥協してます。 作者観点から付け加えがありましたらヨロシクです。 ----------ここから--------------- var inputtext, code, text_len_cnt, i, textareawidth; inputtext = "描画させる文字列1234" textareawidth = 0; text_len_cnt = string_length(inputtext); for( i = 1; i <= text_len_cnt; i += 1) { code=ord(string_char_at(inputtext, i)); if((code>=32)&&(code<=126)) textareawidth += global.mbchar_size/2; if((code>=129)&&(code<=152)) textareawidth += global.mbchar_size; }
上の続き この後に mbtext_draw(inputtext, room_width/2 - textareawidth/2, 150, 0, 0, 0)) といった感じで続けています。
158 :
149 :2006/02/22(水) 14:32:17 ID:RmfqUly/
159 :
154 :2006/02/22(水) 14:52:00 ID:RtW+y/jz
質問なのですが、Keypressed、Keyreleasedに相当するジョイパッドのイベントはないのでしょうか? それとも押したら変数で逃がしてうんたらかんたらなどをGMLで記述しないと作れないのでしょうか。
>>152 instance_furthestの返り値を表示してみたら-4(noone)になってるね。
しかし、Squareがルーム内に複数いる以上、nooneが返ることはありえないはず。
は、もしかして……!
スプライトとオブジェクトの名前がかぶってますよ。
163 :
149 :2006/02/23(木) 10:06:26 ID:tTwTR64C
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´∀`)/< 先生! if (collision_circle(self.x,self.y,70,Spuare,false,true))
_ / / / \ を
\⊂ノ ̄ ̄ ̄ ̄\ | if (distance_to_object(Spuare) < 70)
||\ \\ に代用させた所、問題なく動きました!
||\|| ̄ ̄ ̄ ̄ ̄|| \_______________
|| || ̄ ̄ ̄ ̄ ̄||
.|| ||
>>162 違うようにした方がいいんでしたっけ?
>>152 いろいろ調べた結果、GameMaker 5.3A側でcollision系関数の引数 notme の適用方法にバグがありそうですね。
コリジョン対象のオブジェクトを オブジェクト名で限定した場合、特定の状況で notme を true としても有効にならず、
本来なら「偽」と判定される状況でも「真」となってしまう模様。(対象オブジェクトがallとかなら問題なさそう)
6.1では、このバグは解消されているようです。
・・・5.3Aのサポートは終わってるのかなぁ…?
167 :
149 :2006/02/23(木) 18:55:07 ID:tTwTR64C
>>164 英語ダメ、計算ダメ、絵ダメ、文才ダメだけど、
AIだけには拘りと自信があるのだ。
>>165 ふむふむ・・・検証オツカレです。
>>166 特に問題なかったから今まで普通にシテマシタヨ。
参考になりました。
>>よこしまさん 155です 前回の書き込みで舌たらずな文章で心証悪くしてたらすみません。 そして素早い対応、すっごく感謝です。ありがとうございました。 今シューティングを作成してて・・スコアとかの表示関連を作りなおしてるんですよ。 それで自機が近づいたら表示を画面外に出すやつをやってて、 先に描画領域が取得したかったんです。 mbtext動作状況はゲーム進行を妨げずうまく動作しています。
>>168 いえいえ
実際の描画幅を取得できないというのは盲点でした。
おかげさまでmbtextを改良することができたのでこちらこそ感謝です。
お知らせ:
>>166 でちらっと触れていたBGM再生用のプログラムおよびスクリプトがほぼ完成しました。
再生に対応しているサウンド形式は「mp3, ogg, mod, it, xm, s3m」です。
同時に再生できるサウンド数は無制限です。
GM5/GM6と共に動作し、レジスト版でも未レジスト版でも動きます。
機能的には、「再生、一時停止、再開、停止、リセット」の操作、および、「音量、再生スピード、パン、ループ」の制御(再生後でもサウンドごとに変更可能)をサポートしています。
GMとは別プロセスでサウンド再生を行いますが、制御元のGMのウィンドウが消失すると自動終了する仕組みになっているので、万が一GMのゲームがフリーズした場合でも「サウンドだけがずっと鳴ったままになる」という事態は起こりません。
また、サウンド再生を行ってもGMのゲームスピードを遅らせることはありません。ループ再生の場合も安定して動作します。
いまいち分かりにくいかも知れませんが、GMのゲームが この「BGM再生用のプログラム」を非同期制御するという仕組みです。
GM側からは、簡単なスクリプトを呼ぶだけで透過的にサウンド再生を行うことができます。
例:my_music.mp3を音量80%で再生する
bGM_play("my_music.mp3", 0.8);
現在、細かい改良と調整を行っています。
170 :
よこしまなMr.0 :2006/02/26(日) 21:15:52 ID:2s5I4Elf
withの使い方で質問です。 withの中ではotherが元々selfだったインスタンスを参照するようになりますが、 では元々otherだったインスタンスはどうやって参照できるのでしょうか? 具体的には、自分と敵弾がぶつかった時に破片を飛び散らせようとしてるのですが…… // self=自分、other=敵弾 var i, ii; for (i = 0; i < 8; i += 1) { ii = instance_create(x, y, obj_fragment); ii.direction = i * 360/8; ii.speed = 4; with (ii) { motion_add(???.direction, ???.speed / 2); // ←ここで敵弾の動きを合成したい } } ??? の所に何を入れたらいいかわからなくて困っています。
173 :
172 :2006/02/28(火) 03:02:25 ID:emwe4w/O
すみません、よく考えたらやりたいことは ii.hspeed += other.hspeed / 2; ii.vspeed += other.vspeed / 2; で可能でした。 でも後学のため、with内から外側のotherを参照する方法 ご存じの方いたらお願いします。
>>172 スクリプト内部の一時変数に記憶しておくしかないかな。
-----
var other_id;
other_id = other.id;
with ( ) {
// withループ内でも、変数 other_id で 元々の other のインスタンスIDを参照できる。
}
-----
175 :
よこしまなMr.0 :2006/02/28(火) 18:56:54 ID:6cM1DN1x
176 :
172 :2006/02/28(火) 23:15:51 ID:emwe4w/O
>>174 ども、それでいけました。
with内では何も付けなければvarで宣言した変数を参照できるみたいですね。
ん、でも、同じ名前のインスタンス変数があったらどうなるんでしょう?
実験してみたらこんなん出ました。
var inst1, X;
inst1 = instance_create(0, 0, object1);
X = 'var X';
self.X = 'self.X';
inst1.X = 'inst1.X';
with (inst1) {
show_message(X); // ←これは var X になる
show_message(other.X); // ←これは self.X になる
show_message(self.X); // ←これは inst1.X になる
}
177 :
名前は開発中のものです。 :2006/03/07(火) 20:49:20 ID:c3gblkOt
保守
ほしゅおつ
179 :
駄々 :2006/03/08(水) 15:02:46 ID:U8guAHRA
初めまして駄々といいます 質問なんですがキャラのアニメーションでカーソルキー→を押したら 右に移動しているアニメ ←をおしたら左に移動しているアニメを表示させるにはどうすれば良いのでしょうか 簡潔に言うと →を押したら ● ⇒ ● >| /| みたいな・・・(分かりにくくてすんません)
>>179 右用オブジェと左用オブジェ作って同一親オブジェクトを登録
右用オブジェと左用オブジェの逆方向のキーボードイベントで逆のオブジェクトへ
インスタンスチェンジする。
共通のイベントは親オブジェクトで作成する
みたいな感じがいいんでないかい?
181 :
駄々 :2006/03/09(木) 01:58:19 ID:kV2wX20F
>>180 それでなんとか出来そうです
ありがとうございます!
>>182 レーザーの動きが滑らかでいいね!
普通に楽しめますねー。
いいね。GJ! 贅沢いうと、複数ロックオンした時はいっぺんに発射するよりゼロコンマ秒遅れて時間差で 発射するようにしたほうが爽快な気がス
>>182 パッド差してると勝手に右下に移動しちゃうんだけど……。
うんうん
ver.6,1で数値入力の際に「0から32までの数」などというように範囲指定をして入力したいのですが こういう入力の仕方を教えて頂けないでしょうか if there is an object at a position でオブジェクトAがオブジェクトBの一定範囲内に入った場合、行動を起こすようにしたいのですが この数値の範囲の入力方法がわからず困っております マニュアルに書いてあるような初歩的な事かもしれないので大変恐縮ですがお願いします 一応、印刷された旧バージョンのマニュアルを持っているので 読んではみたのですが探し当てる事が出来ませんでした…(´・ω・`)
>>189 if there is an object at a positionは登録したオブジェクトと指定したオブジェクト同士が
衝突しないと真をかえさないので”一定範囲に入ったとき”とはなんだかニュアンスが違うような気がしますが?
自分のやり方でわるいですが”Execute a piece of code(コードを実行)”でGMLを書いたほうがすっきりすると思います
たとえばオブジェクトAのオブジェクト名を”obj_A”オブジェクトBをobj_B”として一定範囲に入ったときオブジェクトAを
動かしたい場合obj_AオブジェのステップイベントにExecute a piece of codeを登録する。
”一定範囲”が単純に”A,B間の距離”でいいならpoint_distance(x1,y1,x2,y2)関数(2点間の距離を計算する)を
使えばいいと思います。100ピクセル以内に入ったときとしての記述はこの場合・・・
if(point_distance(self.x, self.y, obj_b.x, obj_b.y) <= 100)
{
//ここに動かす為の記述をする
}
というふうにしてみてはどうですか?
191 :
190 :2006/03/17(金) 23:55:05 ID:UTobLwMn
× if(point_distance(self.x, self.y, obj_b.x, obj_b.y) <= 100) ○ if(point_distance(self.x, self.y, obj_B.x, obj_B.y) <= 100) 細かい訂正及び長文ですいません(´・ω・`)
>>190 >if there is an object at a positionは登録したオブジェクトと指定したオブジェクト同士が
>衝突しないと真をかえさないので
済みません、知りませんでした…
プログラムとかできないよって言う友人と作業しているので
GMLは使えないのですが(書くべきことを書いていなくて重ね重ね済みません(´・ω・`))
変数でも同じ事ですので大変参考になりました、有難うございます
193 :
190 :2006/03/18(土) 02:26:21 ID:9Lf6fvmN
>>192 > プログラムとかできないよって言う友人と作業しているので
> GMLは使えないのですが(書くべきことを書いていなくて重ね重ね済みません(´・ω・`))
ああ・・なるほどGMLなしなんですか^^; GMLでもアクションアイコン(っていっていいのかな?^^)
でも自分が思っている動きができればOKかと^^
で・・・実現できそうですか?(いっちょかみしたので少し気がかり^^
ニコニコニコニコうるせーんだよカスども!!
ニコニコニコニコって?
どうみても誤爆です。 本当に有難うございました。
198 :
駄々 :2006/03/23(木) 20:11:36 ID:QpjTFGD2
お久しぶりです また質問なんですが主人公キャラに重力を与えたのですがブロック(地面)の上に乗ると ←方向に移動してしまいます(移動と言うよりも左に引っ張られている感じ) どなたか解決方法を教えてください
199 :
駄々 :2006/03/23(木) 21:07:49 ID:QpjTFGD2
>198 自己解決しました すいませんでした
>>198-199 いいけど、質問する前に、もっと慎重にな。
フォーラムの質問もおまいなら削除依頼なりなんなりしておけよ。
あと、症状だけいわれてわかるエスパーなどいないことも覚えておいてくれ。
>>200 ぶっちゃけ過疎ってるんだから小さな質問でもいいんじゃない?
>>199 自己解決すんな。回答を待て!w
204 :
名前は開発中のものです。 :2006/03/27(月) 17:34:37 ID:w/CqsEE/
全部日本語化出来た?
>>204 ジョージ…残念ながらそれは無理だ。
別に出来ないことはないが時間が無い。
リソースにメッセージデータが入ってない箇所が多すぎる。
いちいち特定してCRCエラーが起きないようにビクビクしながらやるのは
すごく大変なんだ。
クラック対策用の処理の潰し方が結構適当。
とりあえず致命的エラーは起きないようにしてあるけど、
起動時に必要な処理をどっか潰してる可能性もある…。
まぁ、俺が使っている"かぎりでは"何の問題もない。
ちゃんとファイルのロード、セーブも出来てるし実行ファイルの出力も出来た。
実行ファイルの方には何も手をつけてないから当然か。
てか最新版の日本語化じゃないのか。
GJ
208 :
駄々 :2006/03/29(水) 22:26:10 ID:Mzj60OcA
質問させていただきます ロックマンのようなボスキャラの動きなどはGMLコード(だっけ?)を使わなくては作れないのでしょうか? 質問ばかりですいません(しかも無駄レス・・)
質問キター ロックマンのようなボスの動きというのがわからないので回答できません。 すみません・・・
210 :
駄々 :2006/03/30(木) 00:08:23 ID:98xmE8PI
ロックマンのボスのような動きの例(例っていうかこんなふうに動かしたい) ・左右にランダムに動く(又は壁にぶつかったら反対方向に動く) ・2〜3秒に一回攻撃する ・ピンチになると本気モードになる(これは実装するか分からないのですが一応) 以上の動きをさせたいんですが GMLコードを使わなくてもできますか?
>>210 実際試してないができると思う、詳細はマニュアルorヘルプファイル参照願う
>左右にランダムに動く
ステップイベントにWith a change perform next actionをおいてsidesを2で指定し、その下にReverse horizontal directionアクションをおいて反転させる
With a change perform next actionの結果が偽ならReverse horizontal directionは無視され結果1/2の確率で反転される。
>壁にぶつかったら反対方向に動く
ステップイベントにIf there is a collision at a positionを置いてRelativeにチェック、x,yにはボスが1ステップで動く量を代入する(実際に動く前に
どこへ動くかの前判定になる)objectには壁になるオブジェクトを指定してやる(壁オブジェは親オブジェでくくっといてこの親でobjectに代入しておくと後々楽)
後は左右に動くと同じでReverse horizontal directionを登録、縦方向の動きがあるならReverse vertical directionもあわせて登録しておく、
この場合Start of block、End of blockで前述のReverse horizontal direction、Reverse vertical directionアクションをまとめてやる。
この2つは既に動作アクションが前もって実行されていることが前提であるから生成イベントとかで動作アクション等を割り付けておく。
212 :
211 :2006/03/30(木) 13:44:20 ID:YmzEqY6O
続き >2〜3秒に一回攻撃する アラームイベントを使う。 一番シンプルなのが常に指定した単位秒で毎回攻撃するという形で書かせてもらうと 生成イベントでアラームアクションを登録number of stepには現状ルームスピード*秒数の値を、 in alarm noにはどのアラームを使うかを指定する。 指定したアラームのイベントに攻撃する用のアクションを登録していって、最後に生成アクションでつくったアラームアクションをコピぺする これで指定秒ごとに繰り返すようになる。 >ピンチになると本気モードになる ピンチというと普通HPがある程度のとこまで減ったとかそんなんだよね? それ前提で・・・ ステップイベントでHPとなる変数を If a variable has a valueで監視→規定量以下になったらさっきの 「2〜3秒に一回攻撃する」の秒数を減らすとか、移動スピードを多くするとかしてみたらどう? 実装するときはこの秒数なり移動スピードを変数で登録しておくなどの下ごしらえで結構楽に組めたりするよ
213 :
211 :2006/03/30(木) 14:02:04 ID:YmzEqY6O
訂正 >>左右にランダムに動く >ステップイベントにWith a change perform next actionをおいてsidesを2で指定し、 >その下にReverse horizontal directionアクションをおいて反転させる >With a change perform next actionの結果が偽ならReverse horizontal directionは無視され結果1/2の確率で反転される。 ステップイベントでやると毎回確率判定が行われるから反転が重なる可能性がおおいので これもアラームアクションを使って何秒間かに1回判定をかける方がいいですね
(別解) とりあえずは上のアラーム使う方法が手っ取り早いと思うけれど、 タイムラインで行動パターンを組んでループさせる方法もあるね。 特に説明はしませんが ステップ数 行動 0 ランダムで方向決める 100 弾を撃つ 110 ジャンプ 200 弾を撃つ 250 弾を撃つ 400 先頭へ戻る タイムライン上のスピードの変数もあったりするから、 GMLも知っておくといろいろ応用が利く。 パターン化された動きをするならこっち、 AIっぽく振る舞わせるならタイマーかなあ。
タイマーじゃなくてアラームだ。 クリック&プレイ使ってた時の癖が
216 :
駄々 :2006/03/30(木) 21:16:29 ID:98xmE8PI
非常に助かります!! とりあえず後で試してみます! 自分もクリック&プレイしてたな〜・・・・
217 :
名前は開発中のものです。 :2006/03/31(金) 16:41:53 ID:4VV46Pcn
まだKNP使っている自分orz
なんだかんだでKNPは手軽ないい玩具だったよなあ。 アレくらいわかりやすいともっと流行るのかなあ……
219 :
駄々 :2006/04/13(木) 12:58:29 ID:CCVlXrag
また質問です ・主人公についてくる ・敵が近づいてきたら攻撃しにいく ・敵が近づいてきたら遠ざかる(↑のとは違うキャラです) 上記のようにキャラを動かしたいんですかどうすればいいのでしょうか? 前回のはうまく動きました!(本気モードはまだやってない) 211さんありがとうございました
これ面白いですね。けどさすがに知識0な自分には厳しいかな チュートリアルのボールゲームは作れたけど、自力じゃ歩くキャラ作るのもままならないやw
はじめましてです。質問してもいいでしょうか? 30フレームのroomAにおいて、 オブジェクトBの座標に向かってスピード80で進むオブジェクトAがオブジェクトBと重なった時に次のイベントが発生するように イベントの発生条件をアクションリストのIFを使って obj_A=(obj_b.x,obj_b.y) としたのですが、2〜3回に一回程素通りされてしまいイベントが開始されません。 どうすればいいのでしょうか? あと、オブジェクトが重なりあった時の前面に出るオブジェクト画像の優先順位は変えられないのでしょうか? どなたかお願いしますm(__)m
>>221 >オブジェクトAがオブジェクトBと重なった時に次のイベントが発生するように
Case1. 自インスタンスの位置がobj_bの位置と同じかどうか判定する場合:
[If an expression is true]
expression: (x == obj_b.x) && (y == obj_b.y)
Case2. 自インスタンスのspriteがobj_bのspriteと重なっているかどうか判定する場合:
[If an expression is true]
expression: place_meeting(x, y, obj_b)
>オブジェクトが重なりあった時の前面に出るオブジェクト画像の優先順位
各オブジェクトのdepth(深度)を変更します。
横槍でごめん
>>222 さん
>>221 さんは
>スピード80で進むオブジェクトA
及び
> 2〜3回に一回程素通りされてしまいイベントが開始されません。
といってるから多分コリジョンエリアが重なっていない症状が出てるんだと思うんだけど?
だとするとexpressionは線分で判定するcollision_line()がいいんじゃないの
collision_line(xprevious, yprevious, x, y, obj_b, false, true)
みたいな感じで・・・
>>223 補足どうもです。
>>222 のCase2は素通りしたら意味が無かったです・・・
collision_line()で試してみたところ、collision_line()は「線分そのものと、静止しているobj_bが重なる場合」なら判定できるようです(つまり、「obj_Aのスプライトの形状」および「obj_bも動いていた場合」は考慮されない)。
一方、obj_A,obj_bそれぞれの動きとスプライトまで考慮し、さらに素通りした場合も考慮にいれてコリジョン判定をするとなると、どうしてもGMLでごちゃごちゃforループするしかないみたいです。
(素通りしないようにすれば、通常のコリジョンイベントで十分なんですけどね・・)
225 :
221 :2006/04/18(火) 20:49:01 ID:kvqrJBQi
よこしまなMr.0さん>
>>223 さん>
詳しい説明有難う御座いますm(__)m
obj_bと同種のオブジェクトをポジションランダムに複数配置して、その上をobj_aが高速で移動していく動きを作りたかったんです。
コリジョンだとビリヤードの球のような動きになってしまったのでできれば他の方法が無いかとおもいましたが、
まだ初心者でGMLを複雑に使いこなすのは厳しいので、まずは欲張らずにコリジョンを使おうと思います。
丁寧に有難う御座いました!
226 :
223 :2006/04/19(水) 14:23:47 ID:D713torS
>>225 氏
なるほど、30fpsでspeedが80という高速オブジェってどんなんだろうと
思ってたんだかなんとなく判った。
その要件だとステップごとにdistance_to_object()でターゲットになるobj_bとの距離を
計測してやって80以上の場合にspeedを80とし、未満の場合はdistance_to_object()で
測定した距離の値をそのままspeedに代入してやってはどうだろうか?
減速する形にはなるが減速するのはobj_bと重なる時の1ステップだけで、なおかつ必ず
衝突判定がとれるようになると思う。一回試してみて
227 :
名前は開発中のものです。 :2006/04/24(月) 14:36:25 ID:+HnYfiB7
最新版の日本語化パッチまだ〜?
>>228 乙です。
ヘルプに含まれているGMLの各関数にサンプルコードを付けて欲しいなー。
ここで言うことではないとは思いますがとりあえず要望。
230 :
229 :2006/04/26(水) 10:07:26 ID:GhrlEj72
>>228 に脊髄レスしてしまってすみません。
>>229 で書いた件ですが、ヘルプはGM付属の直翻訳ヘルプの事でして、よこしまなMr.0氏が作成しているHTML Helpではありません。
で、HTML Helpをちょっと見てみました。
関数リファレンスが期待していたような記述になっていてよかったです!
例:項がシンプルで判りやすくGJ!完全版を期待してます。
(たまにGMLの関数で扱いがわからず、数時間も悩むことがあるのでホント期待してます・・・)
>>230 関数リファレンスについては正確性と分かり易さを両立させようと心がけていた次第です。
>228のHTML HelpはDocBookで生成したものですが、いまいち作業が捗りませんでした。
そこでOpenOffice.org 2で書き直してみると、まともなPDFを素早く生成してくれたので、この形式を採用することにします。
ttp://gamemaker.main.jp/dlfiles/u_gm_rev1.pdf 目標としては、リニアに読んでいけば理解できる構成ですね。
それと、こういった文章があればGame Makerを大学や専門学校の講義で活用したい教員の方にとって便利だろうと思います。C++などの言語解説は抜きにして「純粋にゲーム作成について講義をしたい」とか。
誰か英語堪能な人が各コマンドを日本語に訳したものを作者に送りつけてやれ
よこしま氏のがんばりっぷりを見るにつけ、 作者はそろそろUnicode位対応してくれと思う。 そんな簡単なもんでもねえのかなあ。 催促したら他言語化早まるだろうか。
ねえねえ オブジェクト増やしていくとF5のローディング時間だんだん長くなるでしょ 敵キャラクター調整してるとこの時間なんとかならないかなぁとか思うんだけど みんなどうしてる?
>234のパズルに、ステージ1〜21を追加しました。
>>235 スプライト等の設定画面でLoad only on use(遅延ロード)にチェックを入れておくと、起動時のメモリ確保時間が節約されます。
また、デバッグモードを利用すると、敵キャラの調整が楽になります。
F6でデバッグ起動するとデバッグ窓が左上に出てきて、動作中のゲームを自由に操れます。
ゲームを再スタートしたり一時停止・再開したり、任意のGMLコードを実行したり・・
例えばdebug_enemy_set_speed(7)のように、デバッグ窓から実行するためのScriptを作っておくと楽です。
それと、これは関係ないかもしれませんが、
デフォルトのローディング画面だとロード時間が長く感じられるので、別の画像に変更する方がいいかもしれません。
初心者が軽く作ったものを公開するような場所ってありませんか? それともここで公開してもよろしいのでしょうか?
うpする場所?公開を宣言する場所? 公開は自分の判断ですればいいと思うけど
>>238 公開を宣言する場所を探しているんです
(ついでにそこにうp出来ればなお良い)
とりあえずそこそこ人が楽しめるモノが出来るまで
自分のホムペで細々とやっていきます
自作ゲームのうpって大体はgamedevのうpろだに上げて
該当スレにリンクを貼ってるよ。
たとえば
>>6
242 :
名前は開発中のものです。 :2006/05/25(木) 10:49:49 ID:diTB1c6U
マウス左と右クリック逆のほうがいいかもしれない。 洋RPGによくあるような、右で移動先指定、左で攻撃。 障害物の向こうに移動先指定したときに、やたらウロウロするね。 いっそ細かい障害物は無しにして、敵との距離だけ気にして動き回りながら、 スキをみて斬りつけるようなゲームでもいいんじゃないかな。 あとは敵との衝突とダメージ判定がつかないと何とも言えないですな。 ゲーム内容によっては、キャラの移動速度を遅くしたほうがいいかも。
>241 ダメージ判定つけて、攻撃の種類とか敵の種類増やしたり、トラップつくったり。 ある程度まとまった数が出来たら、 それ使ってステージを作っていくってのはどうかな。 移動時に声出すのがかなりうるさいかと。 あと絵が前向きしかないけど、向きとか付けるのかな? どの辺がマリオ3なんだろ、と一応つっこんでおく。
わあ いいアドバイスありがとう! 洋RPGってディアブロとかかなあ 舞台はダンジョンをやめて大草原にしようかな 障害物のないところを走り回りながらジュンペーが飼ってる 羊をころしまくるハイジが主人公 あのスプライトは 本当はSLGつくるつもりで探したやつなんだあ 向きとか動きのある素材また探さなきゃなぁ(googleイメージで?) トラップは 羊と思って刺したら実はおじいさんだったという
>トラップは 羊と思って刺したら実はおじいさんだったという ちょwwwwwグロゲーかよwwwwww
>>245 で一気にどうでもよくなった
そんな面白くなさそうなゲームやりたくねえ
アクション物を作っているんですが
なんとなく物足りない感じがするので
なにかアドバイスあればお願いします
ttp://gamdev.org/up/img/5901.zip 出来ればこっちの方が効率がいい、
コレにはこうすればいいという助言も
お願いしますorz
2,3日だらだら作ってもそれっぽくなるってのは面白いですね
>247 せっかくアドバイスしてくれたのに ゴメンね おもしろいゲーム考えれるようにがんばります ありがとう
>>249 画面の構成的には2Dのゼルダに近い印象を受けました。
移動や攻撃がマウス主体(2.5D, 3DのオンラインRPGによくあるタイプ)なら、そこらへんのロジックをしっかり作り込むとゲームに安定感が出てくると思います。
>>248 乙です。
えーと、オブジェクト名等に日本語は使えませんです…
動く床はGMLをバリバリ使わないとおそらく実装できないので、後回しにしてはどうでしょうか?
ステージごとに30秒程度の制限時間があって時間内にゴールに置いてあるバケツに飛び込まないと主人公が爆発してしまうというゲームとか面白そうですねw
サッカーボールにぶつかると制限時間が減ってしまうとか
GameMakerJapanから ダークリフレインをDLしてみた P4-3.2Ghz・520MBのPCでゲーム起動に2分もかかる ゲームエンジンのせいだろうけど重すぎ 上のゲームは音楽はなかなか良かった その他のゲーム部分はイマイチつーか発展途上? しかしRPGツクールを逸脱しない (RPGツクール作品にない個性が見られない) のならなぜ自分でシステムから作ろうとするのか それがロマンなのかな?
しかしそんなことで一年も費やして結果あの程度では 貴重な人生の時間の無駄ではないか ツクール使えばいいのに 他人の趣味だからまあいいんだけど
猫も杓子もツクールじゃツマラナイから。
猫も杓子もツクールじゃツマラナイから、 GM使ってまでツクール作品みたいなの作るなよってことじゃないの
一理ある が誰もGM使いを止められないのだ しかしせめてツクール作品とは一線を画した個性を盛り込んで欲しい そうじゃないならツクール作品をやるよねユーザーは やってくれるのはせいぜい作者の個人的な知り合いとかそのくらいで
257 :
名前は開発中のものです。 :2006/05/28(日) 18:47:08 ID:jq+wgQgD
>>256 クリアできんと思ったらボス倒せないのね、把握。
しかしあれだけタイムラインが長くなると混乱して来るね。
>>256 スクロール全部をタイムラインで制御するよりは、ビュー使ってスクロール
させた方が良いんじゃないだろうか。座標系がちょっと面倒だけど。
>>250 移動する床は難しいんですね(´・ω・`)
今の感じじゃなんとなく微妙な物になってしまいそうなので
ゲームの目的を変えてもっと主人公の特徴を掴んだものにしようと思っています。
歩行者を避けて標的の建物に向かって特攻するとかw
坂ってのは作れないんでしょうかね?
>>256 ボス倒せるようにしたEXEファイルもうpして下され(´・ω・`)
>256 今さらながら落としてみたら面白かった。 下手くそな自分には難しかったけど。 弾早すぎて回避できん。 絵がシンプルなデザインで鼻につかず、 効果音が気持ちいい。 ボスの攻撃パターンとかかっちょいい。 続きがあったらプレイしたいと思える作品だった。
>>34 ですがゲームファイルこわれてしまいました
ボス完成してたのに・・・
んで途中までのバックアップファイルがあるので自分が気になってたところの
修正も兼ねてそこから作りなおしていこうと思います。
で、ボス完成した直後に作ったボスonlyの実行ファイルがあったのでみんなテストしてみてくれない?
意見聞いて参考にしたいので・・・
ttp://gamdev.org/up/img/6029.zip 高次面のボスを想定してつくってるので難易度は高めです。
3.9mほどあるので重いですがお願いします。
操作はreadmeを参照願います。
>263 10回ぐらいプレイしたけどクリアできんかったw 下手くそなので真ん中の機銃から逃げてると、バラマキに当たって死んじまう。 気になったのはバラマキの出る量がかなりランダムっぽいところ。 余裕で回避できて良い線までいけるときと、 密集率が高すぎて何もできずに死ぬときの差が激しい気がした。 あと最初のアイテム出すカプセル?が硬すぎな気がする。 壊してる間に攻撃されてイヤだった。 自機の弾の量が多くて敵の弾が見難いってのもあるかな。 感想をまとめると、普通のシューティングって感じがする。 欠点もそのまま普通のシューティングを受け継いでると思う。 もっとオリジナルな要素が欲しいなあ。
ゲーム作るのも難しいですねw
www/のパターン
268 :
名前は開発中のものです。 :2006/06/11(日) 20:08:31 ID:5xEu+B7T
GameMakerってロックマン風のゲームとかは作れないんですか? 好きなステージから始められるとか、倒したボスの特殊武器が使えるとか
作れますよ
271 :
263 :2006/06/12(月) 11:52:45 ID:bCUsYhdY
前スレでゲームファイル壊れたと思って反射的に書き込みしてしまったのですが
自分、GameMakerが標準でバックアップしてるの知らなくて同じフォルダーに生成される
同名の.gb1ファイルを.gm6にリネームしたら復旧しました。お騒がせしてすみませんでした。
>>267 氏
>>270 氏の言っているレス辺りを参考に対策します。報告ありがとうございました。
>>264 氏
バラマキと言われている回転砲座についてですが、現状ランダム要素は含めておりません。
弾の密集率も狙ってやっている部分なので・・・攻撃パターンを間引いて量を抑制する事も考えていますが
初めて作ったボスなのでどこまでできるか試してるのもあるので当面は現状のままでいこうかと思っています。
アイテムキャリアーの硬さはこんなもんだと思っています。この面はキャラクターを作成してうまく動いてるかの
確認とパラメーター調整の為に作ってある面(gamemakerでいうroom)で本番面は別にあり、とりあえずパワーアップを
最大にまで持っていく事ができるようわざとキャリアーをたくさんだしてます。自機の弾の量は自分も引っかかっていた部分なので制限かけてみようと思います。
色々意見聞かせてもらって感謝です。
>>264 氏 とりあえず
>>267 氏の件が致命的なのでそちらから対処したいと思います。
272 :
267 :2006/06/12(月) 16:14:37 ID:SWv1aUtr
パッドはUSBのPSコントローラ変換器挿してます
273 :
263 :2006/06/12(月) 22:07:47 ID:bCUsYhdY
とりあえずゲームパットの不具合修正してみました。
これでいけるか確認してください。
ttp://gamdev.org/up/img/6130.zip 実行ファイルじゃなくて.gm6ですが・・・・
例によって操作はreadme参照のこと
ボタンの使い方とか操作性とかが結構気になってます。
連れに言わせるとショットセレクトがわかりにくいんじゃない?って言われたし
コンフィグ作ってパターン選べるようにするとかがいいのかな・・・・
>>257 ,258
ビュー使うと仰るとおり座標の管理が面倒なので全部タイムライン制御に
してみた。正直自分でも見難いと思ってる。本末転倒ここに極まれり。
>>261 ,262
ボスの先まで頑張って見る。
グラはあれだ。絵が書けないからアブストラクト系にしてみたんだ。
微妙にABAの人にも影響受けてる。テトリス成分も含まれてる。
>>274 ゲームデザインは悪くない、どころか好印象なんだが、ゲームスピードが
ぶっ飛んでるのは漏れだけかい?
あと敵弾イベントで自機とのコリジョンの所のエフェクトアクションも消さんと
未レジスト版じゃ動かんよ。
>275 実際に配布するときはexe形式なんだから良いんでね? 本人じゃないから知らないけど。
保守る必要あり?
278 :
名前は開発中のものです。 :2006/07/14(金) 21:23:06 ID:xnbmdkWr
アリだな
/ ^??^? )
ゲームメーカー6で日本語テキスト出力やってみたんだけど 文字サイズが16ではなんともないのに18とか20だと所々文字化けする。 同じ症状の人いる?
282 :
280 :2006/07/19(水) 21:01:18 ID:v4S9wPeC
>>282 upありがとうございます!
見た限りではspr_han20がおかしい事だけしか分かりませんでした(他におかしい箇所があれば教えてください…)
「jFont Maker 2.0.0において、アンチエイリアス無効の状態でサイズ20pxの半角文字スプライトを生成すると、文字が1pxほど左にずれてしまう」
という極めて謎なバグを発見しましたので、次のバージョンアップの時に修正しておきます。
jFont Maker1(
ttp://gamemaker.main.jp/dlfiles/jfontmaker1.zip )では幸いにもこのバグは発生しないようです。
284 :
280 :2006/07/19(水) 22:42:58 ID:v4S9wPeC
>>283 こちらこそ調べていただいてありがとうございました!
不具合などは18〜20の文字化け以外は特にないと思います。
とても便利なツールとスクリプトなのでこれからもありがたく使っていきたいと思います。
バージョンアップ楽しみにしてます!
285 :
よこしまなMr.0 :2006/07/23(日) 22:32:40 ID:HKzhttqp
286 :
名前は開発中のものです。 :2006/07/28(金) 22:37:10 ID:kEU2Tspd
よくあるアクションゲームのサンプル見るとさ、ブロックとの衝突判定しょぼくね? 左右に移動しながら天井や地面に接触すると微妙にずれやがんの。フォーラムで威張ってる奴も大した事ないし。 これがGMの限界? 綺麗に衝突判定できてる人教えてくれよ。
287 :
よこしまなMr.0 :2006/07/29(土) 00:06:47 ID:rsZSRXSS
>>286 GMにおけるCollision Event(HelpのCollision eventsの項に詳細が載っています)はあくまでも「衝突判定の一例」であり、当然ながら全てのアクションゲームに適用できるとは限りません。
この点でCollision Eventには限界があると言えます。
商用ゲームレベルの綺麗な衝突判定を行うには、時として、GMLを用いて"Collision Detectionロジックを自前で実装する"必要が生じてきます。
ここらへんは、スプライトの形状や各インスタンスの動きを綿密に分析してアルゴリズムを練っていくしかないでしょう。
(すなわちGMの限界は「GMLコードの処理速度の限界」と似たようなものです)
本家にある、ソニックっぽいゲームぐらい出来れば十二分だと思うけれど・・・。
289 :
名前は開発中のものです。 :2006/07/29(土) 17:02:01 ID:v2ZszvnO
ソニックは他より綺麗にできてるね でもスタンドアロンじゃん あれくらいのもののソースを公開しなくてどうすんだ
それがGMクオリティ!
バージョンアップしねえな・・・。
"The Game Maker's Apprentice"の和訳本出ないかな
294 :
名前は開発中のものです。 :2006/08/27(日) 23:58:55 ID:QjVczOj7
age
保守しとく
保守乙
次のバージョンは7.0になるみたいだね。10月末にβ出す予定とのこと。 拡張パッケージ(今のDLLの仕組みを進化させたものっぽい)が今回の目玉か。
今週の日曜日あたりからはじめたけど、 だんだんコツが飲み込めてきた…気がする。 いや、おもしろいなぁこれ。まったくの素人な自分で この板にきたのも日曜あたりからなんだけど それなりにゲームっぽく形ができてくると楽しい。 まだまだ基本的なこともわからんけど 非公式サイトやサンプルゲームのイベント内容確認したりして もうちょっとランクアップしたい。
むぅ…もしかしたらすごいつまんない事かもしれないですが。 とりあえず単純な動作だけでも出来るように動かしてみようと 試みてみたのですが。 生成で重力を設定して、コリジョンで床のオブジェクトに反射させてると 徐々に反射が大きくなっていって、最終的にすごい勢いでピョンピョン 飛び跳ねてしまう…。 せめて同じ高さでピョンピョンさせられないのでしょうか? 重力のRelativeにチェックいれるとdirectionを270にセットしてあるのに 左後方にすっとんでいくのも謎なのです。 出来れば重力のある中でジャンプして、着地と同時にピタっと止まってほしいのですが。 コリジョンで床のオブジェ接触で速度0になるように設定すると、床を歩く事が出来なくなり・・。 それで跳ねながらでも移動できればいいかと、前述のように床に反射させてみてたのですが。 しばらくほっといたらキャラが天井と床のオブジェをすごい勢いで往復してたんで なんとかそれを回避したいのです。 なにか手がないかと、いろいろ試してたんですが。どうにもよくわからず・・。
>>299 投稿乙。 ほのぼのした雰囲気がイイ!
>>300 レスしようとちまちま文章にしてたんだが、サンプルを5.3Aで作ってうpってみた。
ttp://gamdev.org/up/img/7797.zip Game Information でそれぞれの疑問に答えてみたつもりなんで、読んでみて。文才無いけど...orz
/*
チラシの裏
内部処理(GameMaker的な癖)について曖昧のままにやっていくと、
>>300 にあるような壁にぶち当たる人は多いと思う。
ヘルプを熟読し、試行錯誤しながら理解していくと、いずれ解決できることなのだが・・・。
プログラム未経験な人でも理解できるようなドキュメントにまとめられたらいいのだけど・・・。
*/
303 :
300 :2006/10/12(木) 07:16:45 ID:RaSOVi3Q
>>301 >>302 レスありがとうございます。
いえいえわかりやすくて助かりました。
>>302 レスありがとうございます。
英語はしょうしょう苦手なのですが、
なんとか読み込んでみたいと思います。
本当にありがとうございました。
ho
>>305 たまーに、壁に引っかかったりするのだがどうしてだろう?
スクリプト見てもどこが間違ってるかわからないよ…。
307 :
305 :2006/11/02(木) 19:31:20 ID:AFNzuMaj
確かにたまーに引っかかる。 原因は現在調査中……
305ではないが、調べてみた。原因がわかった気がする・・・。
solid オブジェクトとの衝突イベンでは、衝突判定→ENDステップ との間で speed に値があると移動してしまう性質があるので、うまくいっていない。
>>305 のサンプルで説明。
斜めに並んでいる白いブロックの接続付近に向かって、下から左上にジャンプするとまれに引っかかる。
まず、右上のブロック(ID:100177)にぶつかる。
solid オブジェクトの衝突の性質により、100177との衝突イベントのあとに、3ドット(hspeedの大きさ)だけ左にずれる。
ここで、衝突したポイントが、左の壁 (ID:100176) まで3ドット以内の位置にいると、めり込んでしまう。
これは、左の壁のID番号が100177より若いので、そのステップ中での衝突判定がすでに終わってしまってるため。
(もし左の壁がのID番号が100177より大きいなら、同ステップで衝突判定が発生するので、このタイミングでの「めり込み」は発生しない)
ヘルプを読み返してみたが、これは仕様らしい。
個人的に、衝突直前まで戻すのは良いが、衝突のあとに移動してしまう仕様は余計なお世話感があるなぁ。
>>305 のサンプルを修正するには、この仕様を頭に入れてコードを書き直さないといけないかも。
知らない人がいるかもしれないから、solid オブジェクトの衝突イベントについてのまとめを改めて。
【衝突発生】
↓
(衝突したインスタンスは、xprevious yprevious まで戻される)
↓
【衝突イベントで設定した処理】
↓
(hspeed vspeed gravity 等が設定されていたら、移動する)
↓
【End Stepイベントへ】
※()内は自動で処理される。 solid 属性でないもの同士の衝突イベントならば、処理されない。
わかりづらかったらゴメン。
309 :
305 :2006/11/08(水) 23:34:02 ID:3AkviUgR
308を読んで原因が理解できたので、いろいろと修正中……
311 :
305 :2006/11/12(日) 14:29:04 ID:5m8X/aYf
問題の部分は原因がわかれば簡単に修正できた。 他にもいくつかバグを修正して、自機の衝突判定に関してはほぼ完璧になったと思うが、 今度は新しく追加した敵キャラの衝突判定がおかしい。 まだまだ修正中……
312 :
305 :2006/11/19(日) 10:30:59 ID:xsNjHa5e
なかなか修正する時間が取れない。とりあえず衝突判定後の移動で めりこんでしまう問題については、以下の方法で解決できる(それと、 305のサンプルではplace_freeを使うべきところでplace_emptyを 使っていたので、これも修正した。) ・Collisionイベントの最後に以下を追加 //この時点でのx座標とy座標を保存しておく xendofcollision = x; yendofcollision = y; //このステップで衝突処理が行われたことをEnd Stepイベントに伝えるため、変数に保存 collisiondetection = 1 ・End Stepイベントに以下を追加 /衝突判定後に自機の位置が動いてしまうとめりこみの原因になることがある //もしめりこんでいた場合はここで位置を修正する if collisiondetection == 1 { if !place_free(x,y) { if x != xendofcollision {x = xendofcollision} if y != xendofcollision {y = yendofcollision} } collisiondetection = 0 }
これが後のアクションゲーム界の野口英世、305氏の誕生した瞬間であった。
314 :
305 :2006/11/20(月) 01:07:49 ID:Yv733+da
追記。 305のサンプルではブロックの角にぶつかったときに引っかかることがあるので、 それを回避するためにこんな感じのコードも追加する必要があった。 //上下左右ともにソリッドオブジェクトがない場合 //位置を1ドット下に下げて対処する if place_free(x-1,y) && place_free(x+1,y) && place_free(x,y-1) && place_free(x,y+1) { y = y+1 }
315 :
名前は開発中のものです。 :2006/11/22(水) 23:47:27 ID:AqauRrpm
age
316 :
sage :2006/12/03(日) 16:48:14 ID:XbMBK5U7
6.0未レジストだと使えんのか?
319 :
名前は開発中のものです。 :2006/12/14(木) 18:11:41 ID:3ze7c5Y/
GMにファイアワークス並みのドット絵アニメ作成機能つけてくれんかな…
320 :
名前は開発中のものです。 :2006/12/15(金) 00:15:35 ID:g70yBL8e
トランジション最中にゲームの動作が止まってしまうのが気になってたんだが その辺仕様変更されてたらいいなあ。 しかしローカライズ対応の話はどうなったのか
流れが止まってるなあ 来年の3月くらいに時間ができたらやってみたいので、それまでこのスレも維持して欲しい
ライトが当たってる部分だけ明るくする 炎の揺らめきに対応して、明暗がゆらぐ みたいなことってできます?
それはペイントソフトのお仕事では
それをスクリプトでやるから楽しいんじゃないか
久々にGN開いて、昔作ったのゲーム起動させたら、 オブジェクト全てに、碁盤の目状にドットのノイズが入っててまいった。 作成画面ではなんとも無いんだが、なんでだろ。
↑ 誤植あったスマソ GN → GM
なんか7.0でてるっぽいのに落とせない
gamemaker の版権が yoyogames(イギリスの会社) に移ったのか、Mark氏と提携したのか分からんが、
ttp://www.yoyogames.com/gamemaker/try のページから落とせる。
落とせるのはLite版で、今までのフリー版と同じような制限があるが、基本的なことはできる。
レジストするとPro版となり、制限がなくなる。
Pro版にするには、yoyogamesにアカウント登録した後にレジストしなければならないかも。(無料 メアド必須)
332 :
よこしま :2007/03/03(土) 02:47:45 ID:iuprHR9E
333 :
名前は開発中のものです。 :2007/03/19(月) 17:26:46 ID:w6fEQ5hD
GM7落とせないじゃん・・・orz
GM7になった変更点とか追加点の一覧ってあるかな? 探したけど見当たらない。
7.0のヘルプだけ落とせるから(docかPDFになったやつ) そこのWhat is New読んでみるのはどうかな。 訳してみようと思ったけどけっこう分量あってマンドクセ
情報サンクス。 公式の方で落とせるのね。ダウンロードできるほうだと思ってた。 読んでみたところ、ルーム関係とスクリプトエディタに改良入ってるっぽいかな? だいぶ変更箇所が多くて、たしかに訳すの大変だ・・・。 マルチバイト対応は書いてないな。もう英語圏だけで通す気なんだろうか。 GM6でつくりかけのゲームがあるのでインポートして、色々弄ってみるかな。 GMはマルチバイト対応と、エディタが改良されれば、あんまり文句ないんだがなあ。
ちょっと質問失礼します ゲームをexeファイルに変えるとき、アイコンをオプションで変えれるじゃん? でもアイコンファイルなんてどうやって作ればいいんでしょうか 32×32の16色ってのはわかってるんだけどファイルの保存形式がGIFとかだと選べないし
事故解決しました でも32×32でicoファイルを作っても拒否されてしまいます><
ちゃんとICOの作れるエディタで作った? GIFとかPNGで作って拡張子だけ変えただけとかじゃない?
341 :
339 :2007/04/01(日) 10:33:34 ID:qXJBkzh+
>340 レスありがとうございます! MSペイントでBMPで作って拡張子変更しただけでした・・・ ビットの深さが24のやつではダメなんでしょうか ICOの作れるエディタっていうとフリーウェアでいいのないでしょうか とりあえずググってみます。お騒がせして吸いません
342 :
339 :2007/04/01(日) 10:49:32 ID:qXJBkzh+
解決しました @icon変換っていうフリーウェア使ったらアッサリできました マジでお騒がせしました。助言ありがとうございます
343 :
名前は開発中のものです。 :2007/04/02(月) 22:37:55 ID:dsa0udjW
ライフを表示させるにはどうしたらいいんだろう…
>>343 GameMakerには標準でlivesという変数が組み込まれていてゲーム開始時
に初期値投入し、プレーヤーキャラがやられた時に-1する・・・
まぁ普通こうだと思う。
んで表示は表示用オブジェクトを別途作成し、drawイベントに
数字で表示する場合は「Draw the number of lives」アクションを
スプライトで表示する場合は「Draw the lives as image」アクションを登録する。
パラメータx,yはルームの表示座標を。
「Draw the number of lives」の場合はこのアクションより先に
「Set the font」「Set the color」アクションを登録しておいて好みの
フォント、色を指定しておく
(表示座標は「Set the font」のalignパラメーターを考慮して決めてね)
「Draw the lives as image」の場合はそれ用のスプライトを
事前に登録しておいてimage:パラメータで選ぶ。
とほかにもやり方あると思うけど、とりあえずこれでどう?
2D横スクロールアクションを作っています。 敵の上に乗っても大丈夫で、下から触れると倒せる設定にしようと 踏ん張っているのですがなかなか成功しません。 「下から触れると倒せる」までは成功するのですが、 「上に乗っても大丈夫」という設定が出来ません。 上から触れても倒せてしまいます。 どうしたらいいのでしょうか!
>>346 上半分のキャラクタと下半分のキャラクタに分解して
二つで一つのキャラクタにすればいいのでは?
>>347 その発想はなかった…!!
ありがとうございます、その案の通りにやって、色々工夫したら
なんとかなりましたw
マリオがキノコを取るとスーパーマリオになる感じを意識して、 2キャラ作りChange the instanceで変える方法を取ってみたのですが Viewが認識してくれません。 (マリオがスーパーマリオになると、マリオの時のViewだけが残って スーパーマリオのViewは認識されない感じ) 色々なサンプルを見て試行錯誤してるけどどうも上手く行きません。 うーむ、、、
Viewの認識をRoomのところだけで設定しているなら、次の方法が有効かと。 マリオからスーパーマリオにチェンジするときに、 code execute アクションで、次のようなコードを記述してみる。 view_object[0] = スーパーマリオのオブジェクト名もしくはインスタンスID 逆にスーパーマリオからマリオに戻ってしまうときにも、 view_object[0] の値をマリオに戻しておこう。
GameMakerJapanのページが開かないんだけど、おいらだけ?
>>350 おー、できました。有難う御座います。
GMLとか全然わからなくて…
>>351 俺漏れも
いまからこれやり始めようと思ってるけど tonyuとどっちが簡単?
>>352 >>354 見れるようになってますね。お騒がせしました
>>352 GML最初のうちは短いコードで慣れていくのもいいし
書かなくともヘルプファイル見るだけでも結構動きの
構想とかしやすくなると思うのでヘルプは目を通して
おいたほうがいいよ
Game Maker 言語 (GML)のゲーム動作〜リソースの
項目は読んでおいたほうが得です。ボリュームもそんなに多くないし
>353 両方触ったことあるけど、 tonyuの方が使いにくかったかな。 変数の設定とかがややこしかった、 あとtonyuはけっこう重いので、凝ったゲーム作り出すとキツイ。 まぁGameMakerも50歩、100歩だけど。 英語で拒否反応でないならGameMaker、 でるならtonyuで良いんじゃないかな。
ライフ表示させても-1になっちゃうんだけど、 ライフポイントの設定ってどこでやるんだ?
>>357 >>343 がらみ?だとすると
livesは変数だからゲームループ用オブジェの生成イベントなどに
「Set the value of a variable」アクションで代入するか
一番最初のルームの「Creation code」ボタン押して
lives=10;
とか書いてみたら?
>>358 うーん、前者はうまくいかないし後者は死んだりしても
ライフポイントが10のままになるなぁ。
とりあえず変な方法で自己解決しますた
アクションゲームでよくある、 敵にぶつかったら少しの間無敵ってのをやろうとしてるんだけど、 何故かその状態になったら地面にめりこんでいってしまう・・・ 何故なんでしょうか?
地面との当たり判定が消えてるからだと思うよ
スプライトを透明にした瞬間に、当たり判定がなくなってしまっているからかと思われる。 Maskを別に設定(オブジェクトのダイアログで設定できる)しておけば、 スプライトを透明にしても当たり判定がなくなることはない。
6と7ってどう違うの?使うスクリプト同じ?
>>363 5→6の時と違ってほぼ完全上位互換。6で作ったゲームもそのまんま動く。
その分見た目的には大きな進化はなくて、ダイアログ関係とか印刷とか
地味なところが強化されているってのが今のところの印象だな。
>>349 ですが、前のステージでのキャラクターの状態によって、
次のステージでマリオ・スーパーマリオどちらかの状態で
始まるようにするにはどうしたらいいでしょうか?
同じステージを2つ作って、(最初の立ち位置が)マリオ用・スーパーマリオ用
に分けるとか考えてみたのですが、その分重くなりそうで…。
つ [オブジェクトのpersistentにチェック] これをすれば、ルーム間でインスタンスが保持されるようになるよ。 そういうオブジェクトを1つ作っておくと、ルーム間での値のやり取りができるから便利。
あ、値のやり取りだけなら、別にグローバル変数でもいいのか。失礼。
GM6ってもう今はDLできない?
ツクールに不満を感じた俺 とりあえず今からDLだぜ
今月始めぐらいからチュートリアルにらみながらゲーム作ってる が、Game Maker Japanの表示が妙に重くて、ページを切り替えるたびにやきもきしてる 現在8時前だけど状態は変わらず・・・うーむ。
気合で乗り切る
ロックマンを見習いつつ横スクロールアクションを作ってみてるんだけど 画面左上に常にライフゲージを表示しようとしてるものの、キャラが 横に移動して画面がスクロールするとゲージが置いてけぼりになってしまう どうにかうまいこと常に画面左上に表示ってできないかな?
>>373 座標をビュー相対で指定してやればいい
x1: view_xview[0] + 10
y1: view_yview[0] + 20
x2: view_xview[0] + 110
y2: view_yview[0] + 30
ってな感じで。
>>374 返答有難う!ちゃんとスレ見てくれてる人がいたのがまず嬉しい。
で、教えてもらった方法で記述してテストしてみたら、エラーがでてしまった
翻訳ページで翻訳してみたら、変数を定義していない?みたいな感じだった
おそらくview関連の変数を指定する場合準備が必要なのかもしれない・・・
が俺は変数関連の知識に乏しいので断念した。
他の方法を探してみたら、wikiの作品まとめのページにあった
「ふぁんたじぃさんミニステージ」で俺のやりたかったことをやってくれてたので
拝借して構成を覗いてみた。そうしたらルームのビューを二つ指定するという
至極簡単な方法で解決していたので驚いた。今それを真似て成功したところ。
>>374 のアドバイスを参考に出来なかったのは非常に申し訳ないが
今後もしばしば悩みどころが出てくると思うので、自力で解決できなかった時は
またアドバイスをお願いしたい。
ちなみにGMのバージョンは5.3Aでやってる。(これも最初に言わなかったのは申し訳ない)
作成途中でもうpするとこのスレも盛り上がるよ ソース公開したくなければ実効ファイルにしてうp
>>375 GM5だったらこうだな。
view_xview → view_left
view_yview → view_top
view_wview → view_width
view_hview → view_height
5と6以降ではけっこう違いがあるので
気をつけた方がいいかもね。
GM7って、必要スペックが6よりも高いみたいだ。 最低ビデオメモリも32MB必要だし。 軽さを重視するなら5.3Aにするべきかな……。
最近GM5でロッ○マンを作っている者です。 ジョイパッド使用のゲームを作りたいのですが、ジョイスティックで Key release みたいなイベントの使い方って出来ないのでしょうか。 良かったら教えて下さい。
380 :
名前は開発中のものです。 :2007/08/14(火) 00:26:20 ID:12cRFs0g
最近ゲーム作りを始めたのですが 中間地点を通った後以降の死亡判定後は中間地点から 始まるようにするにはどうすれば良いのでしょうか? 分かる方是非教えて下さい。
381 :
sage :2007/08/16(木) 13:34:33 ID:lv13P6Ug
382 :
381 :2007/08/16(木) 13:47:27 ID:lv13P6Ug
あう あげちまった・・・逝ってくる
>>380 その場復活じゃなくて、戻り復活ってやつですよね?
作りこみの仕方でやり方変わると思う。例えばシューティングの様な強制スクロールだと時間軸メインで
考えやすいのでタイムラインを使用する選択が思いつくし、
ロッ○マンのような任意スクロールだと時間軸じゃなくてルームの位置で判断させるんだと思うからスプライトを
非表示にしたオブジェクトをルームに配置し、自キャラと衝突判定させるやり方をするとか・・
自キャラのふるまいの仕様とかも関係してる場合もあるし、なんとも言えないんだけど
自分は前者のタイムラインを使った戻り復活やったことあるので一応書いてみます。
参考にならないかもですが・・・
>>383 のつづき
当方gm6.2
1,自キャラオブジェクト(ここではmycharaとしておきます)に復活ポイントを保存する変数(ここでは例としてres_flとしておきます)を登録してやって初期値0を代入する
(roomのCreationCodeに mychara.res_fl=0と入力)
2,死亡判定処理の一番最後に「Restart the current room」アクションを置く
3,敵の出現するパターンを登録したタイムラインに復活ポイントの時間に相当するステップへres_flに1とか2とか任意の値を再代入する。
4,3のタイムラインの一番最初のステップへswitch文を使ってres_flにて分岐判断させ、timeline_positionを使って復活ポイントへ飛ばしてやる。
>>383 のつづき2
4000,8000ステップに復活ポイントがある場合以下の様になる
switch(mychara.res_fl)
{
case 0:
break;
case 1:
self.timeline_position = 4000;
break;
case 2:
self.timeline_position = 8000;
break;
}
こんな感じで、初めてこのルームにきたときはres_flは0なのでcase 0:を通りbreakするのでタイムラインは今のステップのまま続行される。
4000ステップを超えた後に死亡判定が立てばカレントルームがリスタートするが4000ステップでres_flに1が代入されているのでcase 1:を通り
4000ステップまで一気にジャンプする8000ステップも同じ・・・と自分の場合こんな風にやってみました。参考になるかな^^?
>>383 の補足
上の例は自キャラであるmychara死亡判定時、自キャラに対しdestroy the instance(インスタンス破棄)はせず
やられた用のスプライトを差し替えをしてライフを1つ減らしています。ですのでres_flは初期値にリセットされません。
またif文を用いて
ライフの数が0以上なら「Restart the current room」、
0未満になれば「Restart the game」する様、分岐させています。
>>381 返答ありがとうございました。もちろん読ませて頂いたんですけど
これだと十字キーではできないかんじですよね?スライディングが
したくて…><
>>387 >>161 のGMJリンク先はジョイスティックのボタンだったんだ。すまそ、
>>161 のリンク先の書いてる内容が理解できてらっしゃるのなら
ボタンの状態を調べるjoystick_chech_button()関数代わりに
十字キーの状態を調べる関数joystick_xpos()またはjoystick_ypos()を使えばいいかと・・・
スライディングだからjoystick_xpos()だと思う。
この関数、十字キーで右に入力すると”1”を、左に入力すると”-1”を、横方向の入力がない場合は”0”を出力します。
それから
>>182 >>185 >>187 の書き込みにあるようにゲームパッドによっては中立位置”0”を厳密に返さないもの(0.0021とかになる)があるという
不具合もわかっているのでround()関数を使ってjoystick_xpos()関数を丸めてから使うといいです。
しかし老婆心ながらリリースするごっとにスライディングするのはどうかと・・・まぁそこらへんは考えてるとはおもうけどね・・・
389 :
388 :2007/08/22(水) 22:42:15 ID:zLT3+18j
× joystick_chech_button()関数代わりに ○ joystick_check_button()関数の代わりに joystick_ypos()は別にいらんかったか・・・ 誤字脱字多くてすみません
390 :
388 :2007/08/23(木) 00:12:24 ID:bkzzA+nn
>>387 過去に同じような内容の書き込みがあったなとあまりよく読んでなくて正直すまなかったです。
とりあえず自分が思うところは
>>388 のとおりです
391 :
387 :2007/08/23(木) 04:22:24 ID:KyDjC5ZC
>>390 ありがとうございました。正直こんなに親切に回答していただけるとは思っていなかったので…。
心から感謝します!さぁ、これでがんばるぞ!
あまりプログラムについて関係ない話になって恐縮ですが・・・ wikiなどから他の方々の作品を参考にさせていただいているのですが、 皆さん画面サイズ小さめで作られているように見受けられました 自分は現在640x480のサイズでアクションゲームを作成しているのですが、 これだと環境次第で処理が重くなったりするのでしょうか・・・?
あうあうあうぁー・・・・ なんでジョイパッドにはpress/releaseが用意されてないんだろう・・ GMLで出来るのも知ってるし、やってるけど、 press/releaseイベントを用意しない理由が良くわからない。
>>392 亀レスだけど現時代のロースペックPCならば
そのサイズでいいんじゃないかな
↑や→でその方向にキャラクターを動かせるのですが 斜めに動かしたいとき↑→同時押しに設定するのは可能ですか?
>>395 「可能ですか?」と聞かれたら答えは「可能です」だけど、
「具体的にどうすればいいの?」ってのならその2行じゃ答えにくいです。
「現状の段階でどのイベントでどのアクションを使って動かしてる」とか
「GMLは使えるよ〜」などの追加情報がほしいところ・・
でなければ作成途中ファイルをゲムデヴにうpするなりしてちょ・・・・
とかいいつつGMLが使えるなら、前スレ
>>758 に移動距離補正のGMLを
載せたサンプルファイルがあるから参考にしてみればいいと思うよ
(過去ログURLは
>>50 にあり)
移動のみに着目するなら難しいことを考えずに 「↑入力で上に移動」「→入力で右に移動」と設定すれば 同時に入力すると斜めに動くと思う
398 :
396 :2007/09/09(日) 23:25:01 ID:/p7HxcHm
>>397 自分も最初そういうふうに思ったんだけど
>>↑や→でその方向にキャラクターを動かせる
とあったのでPressイベントで書いてないのかも・・とか思ったんだ。
長ったらしかったかな?
ver5とか6とか7とかみんな言ってるけど、 どれだけ違うのこれ、初心者は5? 英語読めれば初めてでもそれ以降で可?
まあ、レジストして使うつもりなら基本的には新しい方がいい 5を使うメリットとしては ・動作条件がゆるい→多くの人に遊んでもらえる(可能性がある) ・日本語化できる ・日本語をそのまま描画できる 一方、6以降だと最大の魅力はスプライトの回転ができること。 他にも半透明機能がふんだんに使える、組み込みのエフェクトなど グラフィック面が大幅に強化されている。 ただし追加機能のほとんどはレジストが必要。 ちなみに6と7は、普通にゲーム作る分にはほとんど差はないかな このへん天秤にかけて選ぶといいと思うのだが 5って今レジストできたっけ?
6を購入したときは、YOU!こいつは5も使えるKEYだぜHAHAHAって書いてあった。
402 :
399 :2007/09/12(水) 01:51:07 ID:r4gQgCh/
>>402 是非とも本家を超える難易度で完成させてくれ。
Ver6は変数が6、7桁までの数値しか扱えないってのもネックじゃないかな。 日本語描画なんて絶対に必要だろうし、VRAMが32MBともなると、 動かないPCがかなり出てくるんじゃないかと。
強制横スクロールってのはどうやればいいんですかね キャラが画面からはみ出ないように
>>405 オブジェクトにビューを追従させるかわりに自分で動かす。
たとえばキャラクタのStepイベントにこんな風に書いておく。
view_xview[0] += 2;
キャラクタがはみ出さないようにするのはこんな感じで。
(スプライトのサイズとか計算に入れて調整した方が
いいかもしれないけど)
x = min(max(x, view_xview[0]), view_xview[0] + view_wview[0]);
y = min(max(y, view_yview[0]), view_yview[0] + view_hview[0]);
GM5の場合は変数名が違うので、>377を参考に書き換えてくれ。
出来ました。ありがとうございます それとマップの最後のほうでボス等が現れたとき 画面のスクロールを止めたいのですがそれはどうすればいいのでしょうか。
予めボスのところに見えないオブジェクトを置いて、 それが画面内に入ったらビューのスクロールを止めるようにすればよいかと。
ちょっと関係ない質問ですまないです
>>402 氏の様な録画はどういった方法がお勧めですか?
できれば音付きで
ゲームの録画はfrapsを使うな。 無料のソフトもあるけど、それだとコマ落ちしてしまう。
使うなよと言っているのか俺はこれを使っているよと言っているのか
WMEで十分
GameMakerって32x32のスプライトをだいたい何個くらいまで出しても処理落ちしませんか?
グラディウスのようにスピードを何段階かあげるようにしたいのですがどうすればいいのでしょう。 普段はキーを押したときjump to given positionでその方向に5程度動かしているのですが 特定のキーを押したら速度が1.5倍になって、もう一度押したら初期状態の2倍になって…という感じで
変数を使えば良いと思うよ jump to given position のところを 速度を表す変数 "spd" (名前は適当でよい) とかにして、 Key Press イベントで Set the value of a variable アクション( 四角でVARと書いてあるアイコン)を加えて、 variable のところに spd 、 value のところに spd+5 とかすると、押されるたびに速度が +5 されていくようになる
>>415 こんなのでどう?詳細はヘルプorマニュアル参照の事
@まず変数
・現状のスピードを覚えとく変数(説明のため仮にNow_speedとする)
・今が何段階なのかを覚えとく変数(仮にspeed_selectとする)
を用意する。これはCreateイベントにて[Set the value of variable]で初期値を代入すればおk
A[jump to given position]のx:y:の"5"といれているとこを"Now_speed"に書き換える
BkeyPressイベントで[If a variable has a value]でspeed_selectの値をチェックし[Set the value of variable]で
Now_speedの値をその時の段階数speed_selectに応じたスピード値に書き換えてやるとともにspeed_selectも
[Set the value of variable]で次の段階数へ更新してやる。
(2つの[Set the value of variable]は[Start of a block]と[End of a block]ではさむ事をお忘れなく)
これでキーを押すごとにスピードが変化する
段数を多くすると必然的にBの[If a variable has a value]と[If a variable has a value]の数が多くなっていくから
GML使えるならswitch文を使う方がスマート
418 :
417 :2007/09/19(水) 00:30:17 ID:K3MABk9U
うは 先答者いたw
>>416-417 ありがとうございます
変数は一応使っていたのですが速度を変数にするのは気づきませんでした
420 :
名前は開発中のものです。 :2007/09/20(木) 21:56:13 ID:4DzNB1VD
横から視点のゲーム作ろうとしてるんだが乗れる床が作れない ジャンプしたら着地したときに少し滑るって動きをさせてるんだが普通の横移動で突っかかったようになる バージョンは7GMLなんて聞いたことない過去ログは読んでない アドバイスくれ
度々すみません 強制スクロールにすると画面下のアイコンや上に表示したスコアがついてこず画面外に取り残されてしまいます 現在のビューにアイコンやスコア等を固定するにはどうしたらよいのでしょうか
>>420 引っかかる現象は落下処理に問題がある場合が多い気がする。
コリジョン(めり込み)状態だと横に移動するときに引っかかるよ。いったん床にコリジョンしたら、
『めり込してないが、接している状態にする』処理と、
『床に接している状態では落下しない』処理を
きちんと為されているか、見直してみて。
条件やタイミングによっては抜けてしまっているとか、結構アリガチ(俺だけかなorz)
>>421 スコアの表示位置をビューの相対座標にしてみて。横スクならviewのx座標、縦スクならviewのy座標斜めならどちらとも)
423 :
422 :2007/09/21(金) 00:12:19 ID:FZFc4C4q
すまん、途中で送信してしまった、
>>422 ビューのx座標、y座標を スコアの表示位置に加えてみて。
レジストしていないgamemakerで作ったゲームは 配布しても、大丈夫なんでしたっけ?
>>423 ビューの相対位置にするにはどこを設定すればいいのでしょうか。
それと画面下に能力アイコンを表示しておきたいのですがそちらも流れる画面に固定するのは可能でしょうか
426 :
422 :2007/09/21(金) 11:07:48 ID:Zb+pDnU8
>>424 無料配布、販売もOKだよ。
でも販売はもちろん無料配布にせよ、画像とか音の素材は自力で用意するか、素材の作者が使用許可しているものでないと駄目っす。
>>425 直接相対にさせる設定は無いよ。大げさに言えば、そういうロジックを自力で組むということ。
アイコン表示もアイコン表示も同じやり方で対処可能だよ。
カンタンなのは、ステップごとに強制スクロールさせている移動量を x座標、 y座標 に加えていくようにする方法かもね。
でも、加えていくやり方がイマイチ面倒なら、
(理由のひとつに、中ボスとかで途中で強制スクロールを停止させる場合、その都度加えるのを止めなければならない。個人的に面倒。)
x = 画面に表示したい座標 + view_xview[0]
y = 画面に表示したい座標 + view_yview[0]
とかステップイベントで書いておくと、常にview画面に対してフィットする。
基本的にGameMakerは ルームの座標で処理しているので、
[ルーム座標系による座標] = [画面の左上を0,0としたときの座標]+(横ならview_xview[0] 縦ならview_yview[0])
という式が成立するはず。よくわからんかったら、色々やってみて理解を深めてください。
長い説明ですまんです。
てっきり、レジストしてないと配布してはいけないと 思い込んでいました。
自キャラの真上に分身のようなものを出して自キャラと同じ動きをさせるにはどうしたらいいでしょうか。
>>428 分身となるオブジェクトのSTEPイベントにJump to position アクションで以下のように設定してみては。
(自キャラのオブジェクト名をmyshipとします)
・x に myship.x とする。(myship と x とのあいだにピリオド( . ) を忘れずに!)
・y に myship.y - [自キャラオブジェクトの高さ幅]
xの値や、yのマイナス幅とかだけど、これはキャラの原点(origin)や画像のサイズに依存するんで
自分なりにアレンジして設定してみて。
>>406 のやり方だと画面上と左にははみ出ないのですが下にはみ出てしまいます。
これはどうすればいいのでしょう。
431 :
名前は開発中のものです。 :2007/09/23(日) 16:53:43 ID:x9nNhXjf
現在STGを作っており、自機を追尾するミサイルのような敵を 作りたいのですが、やり方がわかりません どうすればいいのでしょう、ちなみにGMLはわかりません
>>430 キャラ画像のはみ出方に注意しないといけないよ。スプライトのOriginによってはみ出方が違うけれど。
Originは初期設定だと、スプライトの左上角の位置で座標管理されているから、
強制スクロールで右や下にはみ出ることになるよ。
たとえば、スプライトのOrigin(原点)が左上角で、縦幅48 横幅32 の場合、
>>406 の式を以下のように変えればいけると思う。
x = min(max(x, view_xview[0]), view_xview[0] + view_wview[0] - 32);
y = min(max(y, view_yview[0]), view_yview[0] + view_hview[0] - 48);
>>431 Move towards point アクション(矢印と点があるアイコン)をステップイベントに追加して、
(自機オブジェクト名をmyshipとした例。
>>429 同様 myship と x との間にピリオドを忘れずに)
x = myship.x
y = myship.y
speed 適当な数値
としてみては。動きに不満があるかもしれないけどね・・・。
433 :
名前は開発中のものです。 :2007/09/23(日) 18:06:04 ID:x9nNhXjf
>>432 成功しました、ご指導ありがとうございました
ウィンドウキャプションに文字を打つと後ろにスコアが表示されてしまいます。 スコアを表示させない方法はありますか?
スコアキャプション アクション (ウィンドウっぽいアイコンでSLHと書かれているやつ) で、show score の部分を don't show に変更しよう。 同様のことをコード(GML)で記述するならば、 score_caption = false; でOK。 いづれも、最初のイベントのほうでやれば良いと思うよ。
436 :
435 :2007/09/24(月) 22:06:25 ID:Avl9+fei
>>435 での訂正。
GMLでの記述が間違っています。正しくは
show_score = false;
でした。また、score_caption という変数名は無く正しくは caption_score です。
caption_score は、キャプション部分で点数の直前に表示する文字列(デフォルトで Score:) を設定する変数のようです。
混乱させてごめんなさい。
ボスキャラなどにひたすら上下に往復する動きをつけたいのですが何を設定すればいいのでしょう パスの使い方はいまひとつわかりません。
>>437 アラームイベント+アラームアクションを使ってみましょう。
-----
手順1
ボスオブジェクトのクリエイトイベントに、VARアクションを追加、
valiable に updown という文字列(変数名)を、value に 1 を設定する。
手順2
さらに、Set Alarm アクションを追加。number of steps に 1、Alarm no に Alarm0 を選択しておく。
手順3
ボスオブジェクトに イベント Alarm0 を追加する。
手順4
ボスのAlarm0 イベントで、Move fixed アクション(赤く八方に矢印が出てるアイコン)を追加。
下を選択、speedには [適当な数値]*updown と設定する。
手順5
続けて、VARアクションで variable に updown、value に -updown と設定する。
手順6
さらに続けて、Set Alarm アクションを追加。number of steps に 60ぐらいを設定。
Alarm no に Alarm0 を選択しておく。
-----
以上で、一定間隔で定速で上下運動するようになると思います。間隔を調節したければ、手順6 で設定した数値をいじってみてください。
単純な動きならこのようにアラームでも対処できますが、複雑な動きにしたければタイムラインやパスを扱う必要があるかと思います。
439 :
名前は開発中のものです。 :2007/09/28(金) 22:00:48 ID:+Qz3cTwT
>>422 遅くなってスマンがサクンス
Precise collision checkingってとこのチェックを外したら解決した
根本的解決にはなってないかもしれんが何とかなったww
もひとつ聞きたいんだが、gamemakerを使う上であればいいスキルってなにがある?
>>439 もしかしたら、キャラアニメのフレーム間で地面と接する位置が一致してなかったのかもね。
Precise collision checking がオンだと、キャラのドット絵自体が当たり判定になるから…。
チェックを外すと ドット絵に依らず Bounding Box が当たり判定となります。
GameMakerを使う上でのスキル、とは漠然とした質問(汗
まぁドット絵と音楽がある程度自作できると、楽しいかもね。(俺は満足に出来ん…orz)
GameMakerで色々したければ、GMLはやったほうが良いよ。ソースの見通しもよくなるし。
一番良い練習は、自分で作ってみたゲームのアクションをなるべくGMLで置き換えてみる作業かな。
また、Wikiにあがってるもの以外にも海外のサンプルとか漁って、
ソースを読むことが出来ればなおよいかと。(若干の英語力が必要)
441 :
名前は開発中のものです。 :2007/09/29(土) 14:45:12 ID:4bes+mi5
坂、というか斜面へのコリジョンやりたいんだけど GameMakerってそういうの簡単に出来る? これって基本はタイルベースでのマップ管理だよね?線分のリストとか逆に面倒そうだし しょぼいサンプルじゃなくて、滑らかに坂を登ってそのまま平地を進む みたいなの作れるレベルの人はいますか??
442 :
名前は開発中のものです。 :2007/09/29(土) 19:23:42 ID:9lJHmvQD
>>440 ドット絵とか音楽か・・・ちょっと本屋でいろいろ探してみますね
GMLも頑張ってみるw
英語力は辞書で補うwwwwwww
背景のちょっとした部分を動かしたりしたいのですが背景画像はアニメーションにはできないのですか?
>>441 こんな感じでいいかい?かなり粗い作りだけど。(バージョン 7.0)
ttp://gamdev.org/up/img/10211.zip スペースキーでボールが動くよ。
Precise collision checking に頼ったやり方だけどね。GMならではのやり方ともいえるんじゃないかなぁ。
ただ、Precise ... なコリジョンだと、実質タイルベースから開放される反面、融通の利かない場面もでてくるし、処理も重くなると予想されるね。
参考になれば。
>>443 背景画像は基本的にアニメーション出来ないよ。動かしたい部分にオブジェクトを配置するのが簡単な解決方法です。
スプライトによるアニメがどうしてもいやなら、動かしたい部分をタイルチップであらわして、
タイル管理オブジェクトを用意するなりして、そこから命令を出してタイルチップを定期的に変更して、アニメーションを表現する方法もあるにはあるけど、
結構手間がかかりそうな割りに、前者の方法に比べてメリットがあまり見出せません…。
445 :
444 :2007/09/30(日) 08:23:59 ID:J186ada5
>>444-445 おおー ありがとうございます
早速参考にさせてもらいます
これって本家や日本フォーラムでも話題にならないんですかね?
みんな矩形のカクカクしたマップで妥協してるのかな
てか最新版の日本語訳キボン
ここにおられる人はゲーム作るのに数学は出来た方が有利だと思いますか? 僕は数学が苦手で2次方程式がようやく解けるくらいです。
>>448 出来なければ無理、というほどではないと思うけどある程度
数学の基礎知識はあったほうが有利だと思う。コマンドの幅が広がるはず。
あとはこのスレでよく言われてるGML、興味があれば勉強してみるといいかも。
勿論単純な作りのミニゲームとかをつくるならそういったことは気にせずに
直感的に組んでいっていいとおもうよ。それがGameMakerの長所でもあるしね。
450 :
名前は開発中のものです。 :2007/10/01(月) 21:53:37 ID:CZos6bFb
GameMakerってネット対戦できるものとか作れる?
バックグラウンドを途中で差し替えることは可能ですか?
>>450 できると思われ。公式のチュートリアルに、チャットとPongゲームのサンプルがあります。
ソースのみなので、実行するには GameMaker 7.0 Pro が必要になるけど…。
ダウンロード先 :
ttp://www.yoyogames.com/downloads/tutorials/multiplayer.zip >>451 背景画像は、background_index[0..7] という変数で設定されています。
ちなみに、0..7 は 0〜7 までのいずれかの数値がはいる、ということ。(配列)
また、背景は 0〜7番の8段階のレイヤで管理されているんで、最大8枚の背景を重ね合わせることができます。
たとえば、background1 という背景画像がリソースに登録されているとして、
背景レイヤ0番の画像をこれに変更したいときは、適当なイベント中に VARアクションを追加し、
variable に background_index[0]
value に background1
とすれば変更が可能です。
というかライセンスやらが絡んで日本語化が難しいんなら メニューやらを日本語訳したテキストを製作者に渡せばいいんじゃねーの?
GM7でmbText 1.4.0とjFont Maker 2.2.0を使って日本語表示しようとするとエラーでるんですけどできないんですか?
>>455 エラーの情報を詳しく書いてほしいです…。
どんなタイミングでどんなエラーがでたのか書かないと、何もわからんです。
あなたのPCでエラーが起きた現場を見た人はネット上にはいない。
少なくとも私の環境では GM7 Lite でも表示できましたが…。
あー、わかった。多分。 mbtext_setfont() を呼んでないのではないでしょうか。 文字表示をする前に mbtext_setfont() 関数を呼んで、設定しないといけないです。 (リソースにスプライト用意しただけでは、実行時にどのスプライトがフォントとして使用するのか、また、どんなサイズなのかわからないから) どっかのオブジェクトのクリエイトイベントかなんかで、Execute Code アクションを加えて、 mbtext_setfont( [全角のスプライト名] , [半角のスプライト名] , 「フォントメーカーで設定したサイズ(数値)」) ; の1行を、加えてみてください。 これが違うなら、わからんです。。。
タイピングゲームって作れますか?
>>1 のサイトをざっと見てみたんですが、
キー情報の取得に関する関数がない気がするんですが。
459 :
名前は開発中のものです。 :2007/10/05(金) 23:29:16 ID:qYq6QO0A
できないものだとおもって書きませんでした。すいません。 実行してロードが完了すると Unexpected error occured when running the game. とでてきて、あとは Access violation at addres.......... などというエラーがたくさんでてきて終了します オブジェクトのコードはこんなんです { mbtext_setfont(spr_zen, spr_han, 20); mbtext_draw("描画するテキスト", 0, 0); } なにがだめでしょうか?
>>458 ヘルプの GML>>User Interfection >> the Keyboard 辺りを読んでみましょう。
変数 keyboard_lastkey で最後に押されたキーのキーコードがわかります。(そのとき押されてなくても)
一方、
変数 keyboard_key で、今現在押されているキーのキーコードが得られます。
キーコードは数値でなくても、Aキーなら VK_A とかで定義されてます。特殊なキーはヘルプに出てます。
また、特定のキーが押されているかどうか調べる関数も用意されてます。
keyboard_check(key) : key が押されていたら true を返します。
類似関数に keyboard_check_pressed(key) や keyboard_check_released(key) があります。
>>459 うーん、そのエラーは結構深刻そうです。PCの環境あたりから疑わないといけないかもしれません。
ほかのサンプルゲームが普通に動くのなら、VRAMやPCメモリの容量が足りない可能性もありますね。
ためしに、全角スプライトのところを preload texture のチェックをはずしたり、
それでもだめなら、記号とひらがなだけ残して消して、ひらがなだけ表示させてみて、実験してみてください。
それで動けば、メモリ関係が原因かと思われます。
訂正 : User Interfection でなくて、 User Interaction です… 誤字が多くてすまんです
462 :
名前は開発中のものです。 :2007/10/06(土) 00:01:45 ID:mQ8ag/BB
あ、すいません 最初から読み直してやってみたらできました すいませんでした
>>460 ヘルプまでは読んでいませんでした。
あるんですね。どうもありがとうございました。
464 :
名前は開発中のものです。 :2007/10/08(月) 16:04:54 ID:4SbO/Zc7
画像をdraw_sprite_stretchedなどで拡大表示したときに、 当たり判定も一緒に拡大する方法はありますか・・? 当たり判定用の矩形オブジェクトを用意して、 オブジェクトを生成するときに大きさを引数で指定できるようにしたのですが、 肝心の当たり判定の大きさが拡大する前と変わらないままなのです。 128x64の判定を作りたいのに、32x32の判定しか作ることができない、といった状況です。 当たり判定の左上・右下座標を変数などで指定することはできるのでしょうか。
465 :
名前は開発中のものです。 :2007/10/08(月) 16:48:44 ID:4SbO/Zc7
すいません、書き込んですぐですが、自己解決しました。 もっと悩んでから書き込むべきだった…(´A`;) if( collision_rectangle(x,y,x+wide,y+height,charatest,false,true) > 0 ){ sound_play(snd_Hit); ( collision_rectangle(x,y,x+wide,y+height,charatest,false,true) ).HP -= Damage; ( collision_rectangle(x,y,x+wide,y+height,charatest,false,true) ).alarm[0] = Time; ( collision_rectangle(x,y,x+wide,y+height,charatest,false,true) ).speed = movePower; ( collision_rectangle(x,y,x+wide,y+height,charatest,false,true) ).direction = moveDirection; draw_hitStar(x + (sprite_width/2),y+ (sprite_height/2),30); if(kind == 0){ ( collision_rectangle(x,y,x+wide,y+height,charatest,false,true) ).image_index = 2; }else if(kind == 1){ ( collision_rectangle(x,y,x+wide,y+height,charatest,false,true) ).image_index = 3; }else if(kind == 2){ ( collision_rectangle(x,y,x+wide,y+height,charatest,false,true) ).image_index = 4; }else if(kind == 3){ ( collision_rectangle(x,y,x+wide,y+height,charatest,false,true) ).image_index = 5; } instance_destroy() }
>>464-465 解決したからよいかもしれないけど、考えてみたんで一応参考程度にしてみて。結構荒業?かもしれないけど。
縦横 1px のスプライトを用意(透過は無し)して、当たり判定用のオブジェクトを用意する。マスクで指定したほうがよいと思う。
んで、instance_create などで実行した後、縦横幅を与え、スプライトを拡大してしまおう。
例:
<パンチしたときなど>
atari_id = instance_create(xx-横幅/2,yy-縦幅/2,当たり判定用のオブジェクト)
atari_id.image_xscale = 横幅
atari_id.image_yscale = 縦幅
こうすると、(xx,yy)座標を中心に任意の縦幅、横幅のあたり判定用オブジェクトが出現するようになる。
サンプルできた。(7.0)
ttp://gamdev.org/up/img/10275.zip F1 キーで簡単な説明でます。
あれー・・? 解決するまではその方法を試してたんですが、 当たり判定が広がらず困ってました。 6.1だったからかな・・・?それともこっちの勘違い? なんにせよ、ありがとうございました。
ごめん。7.0 のヘルプ に以下の一文が。 > Solved a bug in collision checking with scaled instances. > 訳 : 拡大縮小されたインスタンスのコリジョン判定にあったバグを解決した 6.1以前だと、拡大されないみたいだね。こちらも 6.1 5.3A にて、動作しないことを確認しました。すみませぬ。。。
いえ、こちらこそバージョンを明記してなかったので申し訳ないです。 というかバグだったのか・・・。
厳密にいうと、スプライトを拡大した場合に当たり判定が 幅×image_xscale になるべきところが (幅-1)×image_xscale になるバグがある。元のスプライトが大きければ目立たないが、 小さいスプライトだと顕著に。特に元が1ピクセルだと……
場面切り替えの際などに画面をだんだん暗くしていく方法はありますか?
>>471 画面のフェードアウト機能がないみたいな話があったはず
詳しくはこのスレのログを見ていって欲しいけど、代用としては
ディザ処理で透明から徐々に黒くなっていくアニメーションスプライトをつくって
それを表示、全体黒くなったところで画面切り替えってのがある
劣化ウイイレのようなゲームを作ろうと思っていて、HSPかgamemakerで悩んでいるんですが、 gamemakerは、コートを固定しているカメラで見るように表示できるんでしょうか? コートが常に四角く見えるんじゃなく、端っこのほうを見るときは台形のように見えるってことです 分かりにくくてすいません
474 :
473 :2007/10/10(水) 20:49:07 ID:clWDHbW4
考えてみたら2D作成用だし無理ですよね、 自己解決です、ありがとうございました
>>471 バージョンによるけど、GM7だと最初からRoom transitionに
フェードアウト・フェードインというのが用意されているよ。
GM6だと黒い四角を画面全体に半透明で描画するやり方がある。
まとめWiki↓にあるMs.PADDLERあたりを参考に。
ttp://gamdev.org/w/?GameMaker GM5、あるいは未レジストなら>472かな。
>>473 レジストすれば3D機能も使えるんだけど、まあ3D向きでないのは確かだw
476 :
名前は開発中のものです。 :2007/10/11(木) 00:10:35 ID:bfULkcnK
GMLの文法ってC#に似てるみたいですが、 実際に使ってる人から見て似てると思いますか?
オブジェクトのプロパティとかアクセスするのは似てるかもしれない。 ただ、オブジェクトに任意の関数を持たせて [object].[関数名](引数...) というようなことはできない。(そもそもそういう文法がない) ※ ユーザーイベントとか駆使すれば似たようなことは出来なくはないと思うが、煩雑だし機能的にも制限が厳しい。 なもんで、完全なオブジェクト指向っぽい設計は難しいと思われ。 誤解を恐れずに言うと、個人的にGMLは、 構造体無し、変数のポインタや参照受け渡しの出来ないC言語っていう印象。 ただ、文字列操作はCよりかはマシかな。
いままでGM5で作っていたデータをGM7で起動して製作する場合消えたり変更されたりするデータはありますか?
>>478 スプライトとかオブジェクトとかは一応ちゃんと残るよ。
ただ、一部のアクションは「古いアクション」とか
「不明なアクション」てやつに置き換えられてしまって
中身が見えなくなる。7で編集を続けるつもりなら、
元のgmdをとっておいて見比べながら直さないと辛いかも。
いずれにせよ、5から6で色々削られたり変更になったり
してるから、それなりに書き直さないと動かないと思う。
これランゲージファイル対応してないの?
「ボスの目の前一直線上に主人公が来たときボスが攻撃する」や「主人公がボスの上に移動したときボスが攻撃する」 など範囲を指定してそこにキャラクターが来た時行動を起こさせることはできますか?
>>481 どちらもボスキャラとプレーヤーキャラのインスタンス原点比較で出来る
「ボスの目の前一直線に主人公がきた時」は「ボスの横座標(x座標)と主人公の横座標が一緒となった時」(横画面を想定して)なんだけど
実際キャラを動かすとx座標がぴったり合うことはすごく稀なので幅をもって比較してやるのが普通。
ということでオブジェクト名をボスキャラ:obj_bosプレーヤーキャラ:obj_pcとし、判定をobj_bos側で処理するとして判定幅を変数でobj_bosに持たせてやる(例ではbias)
以下GMLで書くと(アクションでやる場合はIf a variable has a valueアクションを組み合わせて出来ます)ステップイベントに
if(obj_bos.x + bais <= obj_pc.x && obj_bos.x - bais >= obj_pc.x)
//ボス原点+バイアス値よりプレーヤーキャラ原点が小でボス原点−バイアス値よりプレーヤーキャラ原点が大の時
{
//ここに攻撃処理を記述
}
と書いてやればいい。
「主人公がボスの上(ry」は同じ要領でプレーヤーキャラがボス上の矩形領域にいるかどうかを、x座標y座標を各々比較してやればいいと思います。
483 :
482 :2007/10/18(木) 11:16:42 ID:zjjlkNBl
細かく誤字がある・・・まぁわかるかと・・・
484 :
482 :2007/10/18(木) 11:43:05 ID:zjjlkNBl
かさねがさねすみません。符号ミスった。 × if(obj_bos.x + bais <= obj_pc.x && obj_bos.x - bais >= obj_pc.x) ○ if(obj_bos.x + bais >= obj_pc.x && obj_bos.x - bais <= obj_pc.x) 自分こういうのおおいな・・・・ごめんなさい
485 :
482 :2007/10/18(木) 12:01:37 ID:zjjlkNBl
今日ズタボロだす 横の場合はx座標ではなくy座標でした・・・・・ 本当にごめんなさい
一定時間無敵という状態を作りたいのですが十数秒自キャラのあたり判定をなくすことはできますか? 半透明で当たり判定のないオブジェクトを作ってそれにチェンジするといろいろ変数を追加しないといけないので面倒なのdすが・・・
>>486 自キャラに無敵フラグを追加、で解決するような...。駄目な理由があるのかな。
自分だったら、当たったときにフラグチェックして無敵だったらコリジョン処理しない(即座に抜ける)ようにし、
タイマー使って一定時間後に無敵フラグ消失、というような感じにする。
>>487 シューティングならそれでいいかもしれない
横視点アクションとかで地面とかが関わるならもう少し工夫しないとだけかも
このスレのログを辿ると似たよう話に当たるかもしれない
面倒がってる奴に教える意味有るのか?
過疎よかいいじゃないか
491 :
名前は開発中のものです。 :2007/10/19(金) 07:37:01 ID:MUFGtR6o
bGMについての質問なのですが 曲Aが流れているときにちょっとした短い曲Bを流したいのですが 「曲A一時停止>曲B再生>曲B終了>曲Aを一時停止の時点から再開」という風にするにはどうしたらいいのでしょう
公式のゲームは起動する時create with game makerって出てこないけど これを消すのはliteでもできる?
>>492 一時停止は、関数 bGM_pause(sound_id) でできる。sound_idに曲AのIDを指定しよう。
その後、bGM_play(曲Bのファイルネーム, [設定]) を呼び出し、曲Bを再生する。
曲Bの終了検知は、今のところ無理っぽい。曲Bが終わる時間を見計らって、一定時間後に曲Aに復帰させるしかないかな。
なお曲Aに演奏を復帰させるときも、 曲AのIDを引数にして関数 bGM_pause()を呼び出す。
関数リファレンス
ttp://gamemaker.main.jp/static/bGMref/ >>493 無理です。
これって日本語化出来る5.3使った方が良いのか?
7について説明してくれているサイトとかありますか? 7は日本語化できますか?
すいません。 日本語のヘルプはどこでダウンロードできますか。 >228さんのchmでは、書かれていない部分があります。 それを補うにはどうすればいいですか。
止まってるな、1を見たら2年前だし
もう少し突っ込んだ内容のチュートリアルとか 日本語の資料があれば人気出ると思う。
501 :
名前は開発中のものです。 :2007/10/24(水) 23:16:00 ID:IY/D3Nkk
2Dのアクションゲームを作ろうとしているのですが、キャラクターを地面や足場に吸着させて動かすにはどうすればいいのでしょうか。 GM7です。
ご指導ください bGM.exe を使用して音楽をならそうとしてるのですが デモの通りに設定しているはずなのに変なのです。 どんちゃどんちゃ というのが二重再生みたいに ドドンチャチャドドンチャチャ とせわしなく再生されます。 しかも終了した後に、ノイズがいつまでも残ってる状態です。 (プロセルには何も残っていません) 何が悪いのでしょうか。
すいません解決してしまいました。 一度すべてのオブジェクトをクリアして再設置した所、無事期待通りの反応を返してくれました。 ・・・何故治ったのか原因が掴めないので不安ですが、また似た状況なった場合、 動作報告させて戴きます。
今、必死でE-WordChanger2000を使って7の日本語化を試みてるけど、めんどくさいったらありゃしない もう少し頑張ってみるか
俺もやってみたことあるけど、文字化けでおかしくなったりしない? 日本語化できない部分もあるし……。
フォント変えてないんじゃねーのか
507 :
505 :2007/10/25(木) 13:46:16 ID:gKkUjDf5
E-WrodChanger2000が変更してくれない部分もある。 イベント追加するときのイベントの種類とか、アクションを追加するときの OK や Cancel の文字とか。 GameMaker側でフォントの設定もできないようだった。スクリプトのコードや、GameInformation の部分では変更可能だったけど。 ……もしかして、俺のやり方が違っていたのだろうか。
↑の話は、文字は変更できるがフォントが変更されないってことっす。 Cancel → キャンセル はE-WordChanger2000側でデフォルトで変換しているようで、何も設定していなくても変換され、文字化けしてしまう。 デフォルト変換をやめるよう設定できるのかな。途中まで作ってたんだけど、そのやり方がわからんからやめてしまったんだ。 なおGameMakerはデフォルトのフォントは MS Sans Serif(海外ソフトではお馴染み) が使われているようだ。
クレジットカードを持ってないのですが、レジストするにはyoyoサイトのどこを見ればよいのでしょうか? 簡単に決済する方法はありますか。
>>510 丁寧にありがとうございます。
やっぱりクレジットカードが必要になるのですね・・・
フリー版でやれるところまで頑張ってみます。
x160〜480の間にランダムにインスタンスを出したいのですがどうしたらよいでしょうか。 x0〜ならできるのですが><
壁に設置したハシゴをキャラクターを上らせるというアクションを取りたいのですがうまくいきません。 ハシゴ(3x16ドット)あるのですが、キャラとぶつかって「ハシゴ」に乗ってしまいます。 キャラがハシゴと接触したときにボタンを押すと掴む、何もしなければ素通りさせるという処理をしたいのです。 何か良い方法はないでしょうか。
>>508 自分の作った辞書以外のチェックを外して、更にdicフォルダの辞書を自作辞書以外全て削除
>>512 使ったことないがx0〜320を出してそれに160足せばいいんじゃね?
特定のインスタンスを変更するにはどうすればよいのでしょう・・? 通常のChange the instanceアクションで、Apllies toを使って 変更したいオブジェクトを指定すれば良いのはわかるのですが、 同じ事をGMLでやろうとしても、インスタンスを変更する命令が instance_change(obj,perf)とposition_change(x,y,obj,perf)しか見当たらないのです。 オブジェクト名を指定してそのインスタンスを変更するというGML命令は無いのでしょうか…?
>>516 つwith文
with (obj) {
// このブロックではobjのインスタンスすべてに適用される
// with文を呼び出している元々のオブジェクトに対しては other を使用する。
// x = 0; // これはobjのインスタンス全てのx座標が0となる。
// other.x = 0; // これはwith文を実行しているインスタンスのx座標が0となる。
//
// 特定のオブジェクトのインスタンス全てではなく、一つのインスタンスに適用したいなら、
// with文の指定でオブジェクト名ではなくインスタンスIDを使用すること。
// Tips : with文は、繰り返し処理である。対象となるインスタンスIDの若い順に実行されているようである。
}
518 :
名前は開発中のものです。 :2007/10/27(土) 18:29:37 ID:mK85JoeL
あぁー。 ようやくwithが理解できました。 言われてみれば簡単でしたね。 ありがとうございました。
519 :
名前は開発中のものです。 :2007/10/27(土) 19:06:11 ID:MYcBDy56
2Dアクションを作っているのですが通り抜けできない障害物の作り方がよくわかりません。 上に乗れるが横からは通れないようなものを作りたいのですが何を設定すればいいんでしょう
>>519 それだと上からも横からも通らないオブジェクトだから普通のオブジェクトじゃない?
ヘルスの上限を100にしたいのですが上限を設定するにはどうしたらいいのでしょう。
>>519 マリオやロックマンのような2Dアクションは意外に敷居が高いです。GameMakerなら、ソリッドオブジェクトとか、それに関するアクションの理解がいろいろ必要です。
公式のチュートリアルのソースを良く見てみましょう。
ttp://www.yoyogames.com/downloads/tutorials/platform.zip この中の platform_1.gmk が基本的な部分になると思います。
>>522 100より増やしたくないなら、100超えたときに100にしてしまえばよい、というようにします。
ヘルス増した後に次のコードを追加。
if (health>100) health = 100;
Actionなら
if health is larger than 100
set the health to 100
のようなかんじで。
ありがとうございます もうひとつ聞きたいのですがルームで設定したview1やview2を切り替えるにはどうしたらいいのでしょうか。
ver7 についての情報はありませんか。
日本語化パッチまだ〜?
ver7を使っています。 ウインドウサイズについて困っています。 Settingでwidth:640 height:480にしています。 ゲーム起動してそのままのサイズで始めたいのですが、モニター画面めいっぱいに広がって起動してしまいます。 どこを設定すればよいのでしょうか。 View in room
すいません途中で送信してしまいました。 View in room は、見せる範囲ですよね。そこは w:640 h:480 にしています。 port on screen でも同じく w:640 h:480 にしています。 ですがport on screen のサイズを変えると、ウインドウサイズは小さくなるのですが、絵が潰れてしまいます。 どこを設定すれば、元の絵のまま w:640 h:480 で綺麗に表示できるのでしょうか。
すいません解決してしまいました。 grobal game settings の graphics > scaling のfixed scale が 200% になってました。 お騒がせしました。
テキストファイルに記述した キー=値 を起動時に読み込んで、 変数として扱うには、どうすればいいですか? ver7 未レジスト
>>524 亀レスですみません。例えばview[0]を無効にしてview[1]を有効にしたければ、以下のようなコードを書きます。
view_visible[0] = false;
view_visible[1] = true;
view_xport[1] = 0; /* ウィンドウ内に表示する左上位置のx座標 */
view_yport[1] = 0; /* ウィンドウ内に表示する左上位置のy座標 */
view_wport[1] = 640; /* ウィンドウ内に表示する横幅 */
view_hport[1] = 480; /* ウィンドウ内に表示する縦幅 */
view1からview0にもどしたければ、配列番号の1と0を入れ替えればよいです。
>>530 ファイルの読み書きをするには、ファイルを扱う最低限の知識が必要になります。(オープン>読み書き>クローズ)
それを踏まえて簡単な方法として、iniファイルを利用する方法があります。iniファイルの構文などは、ネットでお調べください。
・ini_open(filename) ファイルネームを指定してiniファイルを開きます。
・ini_read_real(section,key,default) [section]内にある文字列key に設定されている数値を読み込み、数値を返します。
・ini_close() 開いているiniファイルを閉じます。
この関数を、あらかじめルームに配置されているオブジェクトのクリエイトイベントやルームスタートイベント等で実行させましょう。
例:
ini_open("setting.ini");
global.difficulty = ini_read_real("main","difficulty",0); /* iniファイルからmainセクションのキーdifficultyの数値を読み込む */
ini_close();
独自形式なら、テキストファイルを読み書きする関数等を使いましょう。
・file_text_open_read(fname) テキストファイルを開きます。成功するとファイルIDを返します。
・file_text_read_string(fileid) ファイルIDのファイルから文字列として一行読み込みます。
・file_text_read_real(fileid) ファイルIDのファイルから数値を読み込みます。
・file_text_close(fileid) ファイルIDのファイルを閉じます。
最近質問が多いんで、GameMaker用まとめwikiサイトを作りかけてるんですが、需要あります?
wikiはgamdevにもあるけど、あそこは紹介程度にして詳しい情報はほかのところでまとめたほうが良い気がしますし。
内容がGMJapanと被ってしまうのも気になります……。
ページ
ttp://www.wikihouse.com/GameMaker/index.php?FrontPage まだGMLの変数一覧とか、関数一覧(数学関数以外ほとんど白紙)ぐらいしかないです……。
もし需要があるなら、補完してくれるとありがたいです。(GML関数の解説でも一人じゃつらい…orz)
あと、ほかにどんな情報がほしいのかとかもわからんです。公式チュートリアルの解説とかあるといいのかな?
>>532 どこかに一行入力?があると嬉しいです。
>>531 ありがとうございます。
狙っている動作は、各キャラクターのパラメーターをプレイ時に読み込む事です。
(移動力・攻撃力の差異等)
GML、iniのの項目では全体の設定として使用するような事がかかれてあったので
最後のテキストファイルを読み書きする方法でいきたいと思っています。
指定行の読み込みはできるのでしょうか。
534 :
532 :2007/11/03(土) 21:43:07 ID:zfNPIsFo
>>533 Topページにコメントを設置しました。
あとご質問ですけど、キャラごととなると iniファイルは不適切ですね。
テキストファイルの扱いですが、基本的に先頭から読み込みます。(読み込んだあとは、戻れない)
>>531 (=
>>532 だったり) では書かれていませんが、file_text_readln(fileid) を実行するとこで、次の行に移動します。
したがって任意の行を読み込むには、ファイルを開いたあと指定行までスキップしてfile_text_read_string() するということをしなければなりません。
例えば3行目を読み込みたかったら、次のようにします。(※インデントは全角スペースです)
fileId = file_text_open_read("filename.txt");
for (i=0; i<2; i+=1) {
file_text_readln(fileId); /* forループにより、file_text_readln() が2回実行される */
}
text = file_text_read_string(fileId); /* 変数textに3行目の文字列が入る */
file_text_close(fileId);
もしくは、一つのデータが1バイトで収まるのであればバイナリファイルを扱ってもよさげですね。以下、必要そうな関数を列挙しておきます。
file_bin_open(fname,mod) ファイルを開きます
fname : ファイルネーム
mod : 開くファイルのモード 0:読み込み 1:書き込み 2:読み込み/書き込み ※書き込むと既存ファイルを上書きしてしまうので注意
file_bin_read_byte(fileid) 現在位置から1バイト読み込み、1バイト移動します
file_bin_write_byte(fileid) 現在位置から1バイト書き込み、1バイト移動します
file_bin_seek(fileid,pos) ファイルの先頭からposバイトの位置まで移動します(先頭は0)
file_bin_size(fileid) ファイルのサイズを取得します
file_bin_close(fileid) ファイルを閉じます
こういうのすごいありがたいわー
ニコニコアクションゲーム うpってくれねぇかなぁ
kyara
ごめんなさい。 間違って送信してしまいました。 質問です。 ヘルスメーターをキャラクターの頭の上に表示したいんですが、 Drawイベントにセットしたら、キャラクターのスプライトが 消えてしまうのです。 キャラクターを含め、深度?の設定は何も弄っていません。 どうしたらいいのでしょうか。
>>538 drawイベントになにかアクションを置いてしまうと、設定されてるスプライトも描かなくなってしまうんだよね。
この仕様はおそらく、スコアやライフを自前で描くオブジェクトを用意したいときに、
エディタ中でルームに配置するときの識別アイコンとしてスプライトを使用することを視野に入れていると思う。
んなもんで、スプライトを表示したければ自前でやらなければなりませぬ。
drawイベントの一番上にでもオブジェクトに設定しているスプライトを描くよう、描画アクションを追加してください。
砲台を常に自キャラの方向に向けるのってどうやったらいいのでしょうか stepイベントとset varを使うような気がするのですが…
>>539 ありがとうございます。
スプライトを表示することができるようになったのですが、
イベント左キーでキャラクターを左向き、
イベント右キーで右向きに向くようアクションを設置していたのですが、
ずっと、drawアクションで設置したアクションのスプライトが
表示されつづけて変化しません。
自分は根本的に何か勘違いしているのでしょうか。
>>540 角度を求めるアクションがないし、自前でやろうとしても三角関数の知識がない無理だし、以下の手順で。
手順1.
Scriptリソース(advanced mode じゃないと見えないから注意)にgetDegree という名前でスクリプトを追加する。
そして以下の2行をコピペ。
// argument0 のインスタンスから見た argument1 のインスタンスの存在する角度を計算する
return radtodeg(arctan2(-(argument1.y-argument0.y),(argument1.x-argument0.x)));
手順2.
砲台のオブジェクトのステップイベントで、自キャラ(ここではobj_myshipというオブジェクト名)までの方向を示す
変数(ここではdirとする)にVarアクションで次のように設定する。
variable: dir
value: getDegree(id, obj_myship)
以上で-180°〜180°(0°で画面右方向)の数値が得られるので、それをどうにか処理してください。
>>541 表示を変えたいなら、draw spriteなアクションだと無理。コードで書くしかないかも。
以下に例を示すので適当に読み替えて試してみて下さい。
例:
表示するスプライト番号を記憶する変数drawSpr(名前は何でもよい)を以下のように使用する。
[createイベント]
Varアクションを追加して
variable : drawSpr
value : デフォルトのスプライト
[右入力イベント]
Varアクションを追加して
variable : drawSpr
value : 右向きのスプライト
[左入力イベント]
Varアクションを追加して
variable : drawSpr
value : 左向きのスプライト
[drawイベント]
codeアクションを追加して
draw_sprite(x,y,-1,drawSpr); //アニメーションするなら3つめの変数は左のように-1を指定する。0以上を指定すると固定される。
ごめ、訂正。↑の最終行は「3つめの変数は」ではなく「3つめの引数は」です。
ほんとにごめん、訂正その2 orz
>>543 の例だと表示はいいかもしれないが、当たり判定とかまずいな。
変数名はdrawSpr ではなく、 sprite_index としてください。
>>545 !!!
うごきました。 狙った通りの動きをしてくれました。
ありがとうございます。 コードってすごいですね。
splite_index で動作しました。
548 :
542 :2007/11/08(木) 00:13:09 ID:1Yl9ePE9
>>547 すっかり忘れてますた。。。吊ってキマツ....
λ.................
初心者です。 弾があたったらHPを減らすようにしたいのですがどうしたらいいのですか?
すいません解決しました。 ヘルスメーターを複数設置することってできますか?
質問です。 コードをうつ内蔵のエディターで、「Ok,Save Changes」のボタンのショートカットキーか 他のエディターを使用する等はないでしょうか。
内臓のコードエディタのウィンドウを閉じる動作をショートカットキーでやりたいって意味なら、無理かも…。 外部のテキストエディタを指定することは可能です。 FileメニューからPreferance を開くと、Script&code とあるので、 その一番下のところに外部エディタを指定するところがあります。
>>553 ありがとうございます。できました。
しかし、外部エディタを使うとgamemaker自体が閉じるんですね。
外部エディタを終了すると、gamemakerが戻ってきますが。
ファイルから文字列を取得する方法は上記のでてたやり方でわかったんですが、 それらを変数として扱うやりかたがまだわかりません。 kitai001.txt attack=50 move=5 pow=3 という内容で機体データを読み込んだ時に 変数として扱いたいんです。 どうすればいいのでしょうか。
>>555 一番簡単なのは、execute_file(fname)、もしくはexecute_string(string)かなぁ。
指定するテキストファイルや文字列がGMLの文法にのっとってることが前提だけど。
例に出ている
attack=50
move=5
pow=3
とかなら全然OK。変数を代入したいオブジェクトでexecute_file(fname)を使うと一気に代入されるはず。
キャラ毎にファイルを作っておいて、キャラ毎に実行してみるようにしてみては?
ついでに言うと、execute系の関数は実行時にコード変換されるから、処理が重い(と予想される)。
今回のような初期化処理に利用するぐらいにしたほうが良い。
もちろん、文字列を扱う関数を駆使してもできるけど、かなり面倒かな…。
敵が味方に向かってくるようにはできますか? 調べてもわからないので教えてくれるとありがたいです。
>>556 ありがとうございます。
やってみましたがエラーが出てできません。
fileId = file_text_open_read("chara/pc1/kitai001.txt");
execute_file(fileId);
file_text_close(fileId);
コードはこのようでいいのでしょうか?
gamemaker7を使用しています。
英語のヘルプには、execute_file(fname,arg0,arg1,...) と書いてましてarg0...というくだりが理解できません。
今更ですが、7をやめて5.3Aを使用したほうが良いのでしょうか・・・
execute_file()の第一引数はfileIdではなく、単純にファイル名でOK。
>>558 で挙げているコードは、次の1行が正しい。
execute_file("chara\pc1\kitai001.txt");
arg0 以降の引数の意味は、読み込むテキストファイル内で、GMLにおける引数をあらわすargument変数に代入される。
この仕様により、execute_file()は関数を呼び出すときと同じような感覚になる。
例えば、code アクションで
execute_file("hoge.txt", 100, "argtest", direction);
というコードを実行するとして、
---hoge.txtの内容---
// argument0 には 100、 argument1 には "argtest"、 argument2 には、呼び出し時におけるdirectionの値が代入されている。
var i;
for (i=0;i<argument0;i+=1) {
// ここは100回繰り返される。
}
strTest = argument1; // strTest には 文字列"argtest"が代入される
myDirection = argument2; // myDirectionには、呼び出し時のローカル変数 direction が代入される
---hoge.txtの内容終わり---
というようなことができる。
>>560 ありがとうございます。
file_text_open_readで呼び出したIDじゃないと受け付けないと思いこんでました。
無事、読み込みました。
・・・そのコードの実行時に、ファイル内部へarg001...を全部もっていき、
そのファイル内コードで実行、結果内容がそのまま実行?されるわけですね。
7から書かれてるということは6までは出来なかった事なのですね。
それとは別の事なのですが、やっていて不思議に思ったのですが、
1つのイベント内で記述した変数は、他のイベント内で使用できないのですね。
オブジェクト内すべてで(varやglobalを使わない)変数を使えると思ってました。
・・・連続ですいません。 今、ちょっと試しにexe化したんですが、上記の外部ファイルを読み込む方法だと exe化したあとでもその外部ファイルが必要なのだとエラーが出てしまいました。 全てを内包してexe化する方法はないのでしょうか。
今日レジストしました。 サクサクっと指示されままボタンおしてると、本体起動してないのに勝手にレジスト状態になってました。ビックリ。
え・・・
詳しくいうとpaypalで支払って、HTMLで指示にしたがって終了したあと 初起動でレジスト状態でした、ということです。
3日前にクレジットカードでGameMaker7を購入し、 「Confirmation - Purchase of Game Maker」というメールが届いたのですが、 ここからどうしたらレジストできるかわかりません。 どうしたら良いのでしょうか。
>>566 メールにアクチベーションコードが記されていましたか?
されていれば、それを入力することでLite版からPro版にアップグレードできます。
yoyogamesからLite版のgamemakerをダウンロードしてきてインストールし、実行すると
Upgrade to the Pro Edition という画面が出てきます。
[Enter Activation Code]とありますので、そこをクリックします。
(出てきた画面が英語なら、下のほうにlanguageとありますので、日本語に変えることができます)
[新しいライセンスをアクチベーション]の項にいき、必要な情報を入力すると完了です。
568 :
566 :2007/11/11(日) 16:52:35 ID:Ai+8m8uK
>>567 コードらしきものは
「Purchase Reference」というものしか記載されていませんでした。
試しにこれを入力しても、はじかれてしまいます。
このメールとは別に、暫く待てば
アクチベーションコードが記載されたメールが来るのでしょうか?
実は私はver6からアップグレードしたので、7.0の購入手続きはちょっとわからんのです。大して変わらないとは思うのですが。 私のときは、 Thank you for upgrading your copy of gamemaker to version 7. Your new activation code can be found below. YOY-UPG-XXXXXXXXXXXXXXXX To use this activation code download and install the Lite edition of Game Maker version 7.0 (if you have not done so already). Run the program. In the form that pops up select the button "Enter Activation Code". In the form that appears enter the code and provide your name and further information. The program will then be upgraded to the Pro edition. ote that you must be connected to the internet when upgrading the program. というメールが来て、アクチしたら画面が変わって Activation Successful Thank you for activating this title. License Holder YOY Purchase Ref 1-UPG-XXXXXXXXXXXXXXXX という画面が出てきました。XXXXXXXXXXXXXXXXは同じ文字列 でした。 その後OSを再インストールした際再アクチしたことがあるのですが、ReActivationで上記のライセンスで入力したらアクチ成功しました。 Licence HolderはみんなYOYのようです。 あと、これは記憶が曖昧なのですが、Purchase Refのはじめの1-は入力せずにUPG以下から入力したとき成功した気がします。
後一つ、[Enter Activation Code]で出てくる最初の画面では、 デフォルトでRe-Install Existing Lisence(既存のライセンスを再インストール)となってて、再アクチの入力画面ですので注意してください。 新しいライセンスは、上のActivate New Licence(新しいライセンスをアクチベーション)を選択した後入力してください。
571 :
566 :2007/11/11(日) 22:17:10 ID:Ai+8m8uK
569さんありがとうございます。 Dear ****** Please save this email and print a copy for safe-keeping as confirmation that you have purchased Game Maker for $ 20.00 License holder: (自分のメールアドレス) Purchase Reference: 1-**************(UGPという表記は無し、14数桁の数字・アルファベット) というメールでした。 英語がわからないなりに、検索して色々調べてみたところ、 GM7を購入すると「1-UPG-16ケタの英数字」が書いてあるメールが来るので、 1をYOYに変えて入力する、との記事があったのですが、 自分のところに来たメールには1-と14ケタの英数字しか書いてありませんでした。 「YOY-UGP-14桁の英数字」で入力しても、はじかれてしまいます。 どなたかわかる方はおられませんでしょうか…。
状況がちょっと違うようですが、
ある人が一週間ライセンスが届かない、とsoftwrap(ライセンスを管理しているところ)に問い合わせたところ以下のメールが返信された、という例がありました。
URL:
http://gmc.yoyogames.com/index.php?showtopic=280090&st=100about:blank >To re-activate your software, kindly open it once you have installed it and follow the steps below:
>
>- You will need to be connected to the Internet
>- Access the software
>- Select "Re-installation of License" or "Activate License" from the screen that appears
>- Enter your License Holder Name and Purchase Reference Number in the fields provided (if necessary click the tick box which says "Re-install Existing License")
>- The software will automatically reinstall and be activated
>
>You will be pleased to know that we have included your license holder details to proceed with the re-installation. Please copy and paste the details below:
>
>License Holder Name: INSERT (EMAIL ADDRESS) HERE
>Purchase Reference: INSERT (#-##############) HERE
>
>Should you require further assistance, feel free to contact Softwrap Support desk at
[email protected] >
内容を見る限り、Re-install Existing Licence からやるようですね。もしまだ試してないのであれば、試してみてください。
空気読まずにすみません アクションゲームでキャラがダメージを受けたとき一定時間無敵時間を作りたいのですがどのようにすればいいでしょう。
574 :
566 :2007/11/12(月) 02:57:08 ID:XPKJHwMR
>>572 わざわざ調べていた様で、ありがとうございました!
その方法で出来ました!
ずっとわからずに困っていたので助かりました。
>>573 空気は読まなくてもいいが、過去ログは読めよ。
このスレのログだけでもヒントは書いてあるぞ。
非公式の上級者フォーラムにトピック3投稿数13となってるけど、 開いたら何も無いんだけど、見えてないの俺だけ?
578 :
名前は開発中のものです。 :2007/11/16(金) 17:54:48 ID:UQAwVTd5
床と天井を1つの衝突の処理でできないでしょうか 床と天井のオブジェトを分けたくないのですが。。。
579 :
名前は開発中のものです。 :2007/11/16(金) 19:35:38 ID:i1di2c5T
広いroomで操作キャラに追従してゲーム画面に映す範囲が変化するとき、 その時々でゲーム画面に映している範囲の座標を取得する方法はないでしょうか? 操作キャラで座標を取得する場合、roomの端と中央付近では分岐して処理を作るのは手間と余計な負荷がかかるので・・・・・
581 :
541 :2007/11/17(土) 01:58:15 ID:6kTW/Ms/
すいませんご教授ください。
http://gamdev.org/up/img/10541.zip ver7 で作成中なのですが、コマの向きと動きについて。
欲を出して動く駒で表現しようとしたら、行き詰まりました。
移動している間は移動モーション(walk_right etc...)を表示し、
動きを止めると立ち(stund)モーションにしたいのですがうまくいきません。
どうしたらいいのでしょうか。
change spriteをキーボードイベントでやらない。キーを押し続けている間ずっと入れ替えるから。 key pressイベントとkey releaseイベントのタイミングで、スプライトを入れ替える。 key press <left> change sprite [left] key release <left> change sprite [stand] key press <right> change sprite [right] key release <right> change sprite [stand] ちなみに chnage spriteアクションは、各項で次のローカル変数を代入しているだけ。 sprite : 変数sprite_indexに代入 subimage : 変数 image_index に代入。 表示するサブイメージ番号(アニメーションのコマ)。0で最初。 speed : 変数 image_speed に代入。 1ステップで何コマ進むかをあらわすアニメスピード。0.5だと2ステップで1コマ変化する。
583 :
名前は開発中のものです。 :2007/11/17(土) 22:59:12 ID:ZhTdG7VC
Move towards a pointをGMLで書くにはどうすればいいんでしょうか ほかののコードも知りたいのですが 一覧表みたいなのがあれば教えてくださるとうれしいです
イベントの最中ウェイトのように時間をとめたいのですがウェイトを使うと背景やキャラの動きも停止してしまいます ウェイト以外で時間を止めるにはどのようにすればいいでしょう。
動かしたくないものをとめて動かしたいのだけ動かす。 そういう仕組みを作るんだよ。コマンド一つじゃあできない。
587 :
名前は開発中のものです。 :2007/11/19(月) 18:24:01 ID:Sx6ObIFS
マリオのブロックの様に下から殴れるブロックはどうすれば作れるのでしょうか?
>>587 if(obj.vspeed >= 0 && (obj.yprevious + obj.sprite_height - 1) > yprevious && place_meeting(x, y-1, obj))
たぶんこれでいけると思います
gml初心者なのでできなかったらごめんなさい
それはそうと俺も質問させてください
/modules/newbb/viewtopic.php?viewmode=flat&topic_id=48&forum=6
を参考に縦に移動する床はできたのですが
横移動する床ができません
自分なりにypreviousをxpreviousに変えたりしたのですが無理でした
教えてくださるとうれしいです
589 :
541 :2007/11/19(月) 23:07:23 ID:jkHOQwoD
>>582 ありがとうございます。
ドット絵とか、本当ゲーム作りは難しいですね。
GM7で、横スクロールアクションを作っています。 ボタンを押して剣を振るようにしたいのですが、 押している間、ずっとマシンガンのように連発してしまいます。 ロックマンX等に出てくるゼロのように単発で出したり コンボをつなげられるようにしたいです。 GMLは勉強中で、まだあまりわかりませんが、どうしたら良いのでしょうか。
>>590 keyboardじゃなくkeyPressでやるといいと思うよ!よ!
フォーラムにのってると思うんだけどな・・
上記でもでてきた ・GM7でmbText 1.4.0とjFont Maker 2.2.0を使って日本語表示しようとするとエラーでる という問題に関して自分の環境でもでました。 WinXP PRO sp2 VRAM32mb MEM1G GM7 スプライトサイズを削っていく方法でどのサイズでロードできるか試してみました。 結果、w:320 h:2054 サイズでRunできました。 漢字の京供あたりまで表示できているようですが、 描画するテキスト → 〜∵・・’々” と表示されました。
あるオブジェクトが、上昇中はスプライトA下降中はスプライトBで表示したいんですが、 落下する時の表示ができません。 移動する前の地点と移動した後の地点の変数を取得する方法はありますか? それよりスマートな方法はありますか?
>>593 乙です。
俺は初代スレを見る事ができないので、
そこでなされたQ&Aが見られる事は有難いことです。
>>595 移動する直前にいた位置を示すxprevious,yprevious、
移動した後の位置(現在の位置)を示すx,yという変数が
デフォルトで存在するので、それらを活用するといい。
>>588 横移動する床のうえに乗ったら、一緒に動かしたいってことかな。
自キャラの直下にあるインスタンスを調べて、動く足場だったら一緒に移動させるってことをさせればいいんだけど…
自キャラのステップイベントでこんな感じにしてみては?
必要に応じて、適宜変えてください。
[codeここから]
/* serch_x, serch_y : 調べたい足元の座標 */
/* 実際は自分の都合に合わせて数値を変えること */
serch_x = x;
serch_y = y+16;
ground_id = instance_position(serch_x,serch_y,[横移動する床のオブジェクト名]);
/* ground_id には、足元のインスタンスIDが入る */
if (ground_id <> noone) {
x += ground_id.hspeed; /* もし床が速度で管理されているなら、自キャラに床の水平速度を足し込む事で、一緒に移動しているようになる */
}
[codeここまで]
上記の例だと、 (serch_x,serch_y) 一点だけでしか判定しないから、精度は悪いかもね。
線とか矩形領域で判定したければ、collision_line() とか collision_rectangle() あたりを使用してください。
>>597 おおでけた\(^o^)/
ありがとうございます
>>598 移動キーで移動
スペースで発射
選択画面ではクリックで武器選んで
ス
見たいなところ押すと始まる
なんてつまらないゲーム\(^o^)/
>>552 AutoHotkey というソフトで解決できた。
http://lukewarm.s101.xrea.com/index.html 以下のコードを打ち込むとOK
;######### ココカラ #########
#IfWinActive Execute Code
F5::
CoordMode, Mouse, Screen
MouseGetPos,x,y
CoordMode, Mouse, Relative
MouseClick, left, 20, 45
CoordMode, Mouse, Screen
MouseMove, x, y
;######### ココマデ #########
F5キーでOKボタンをクリックする仕様です
非公式情報ページのアンケートでGM6利用者が圧倒的に多かったから 6をDLしようとしたら公式に前のバージョン落ちてない\(^o^)/
yoyogamesは7.0以降しか版権がないからね。
旧公式から前のバージョンを落とせるよ。
ttp://www.gamemaker.nl/old.html 下のほうに旧バージョンの一覧がある。
でも正直、6.xはお勧めしない…。整数でも24bit、およそ1678万弱までしか扱えないのはちょっと。
5.3Aと7.0ではこの問題がおきていない。
7.0 は、今年の3月リリースからバージョンアップとかの情報ないっすか? それと、EmEditorの構文ファイルを作ってみたけど需要ある?
格闘ゲームつくーるのような攻撃モーションの四角い可視当たり判定を作りたくて四苦八苦しています。 1ドットの小妖精を作って、image_xscaleで引き延ばしたオブジェクトを不可視指定。 Drawイベントで同じ大きさのdraw_rectangleを作って表示しています。 もっとシンプルにできますか? width = 10; height = 10; // 当たり判定の大きさ atariid = instance_create(x+10,y,obj_atarihantei); atariid.image_xscale = width; atariid.image_yscale = height; if (mode_visible) { //スプライト指定にすることで可視化 atariid.sprite_index = spr_attack; } Draw Event: draw_rectangle(x,y,x+width,y+height,true) ;
Draw Event: 内は削除して、if文のコードを以下のように変更、じゃだめかな if (mode_visible) { //スプライト指定にすることで可視化 atariid.sprite_index = spr_attack; atariid.visible = true; }
>>606 それですと、元スプライトが――小妖精から直すの忘れてました――
1ドット絵ですので、□でなくて■で表示されてしまうんです。
元スプライトを□で書いてみたんですが、オブジェクト拡大時
やたらと輪郭のボケた表示になってしまいました。
はっきりとした線(□)で表示したいのです。
ミックマンすげーな
>>608 俺は昨日遊んでショックを受けたよ…。
gamemakerってもっさりしたゲームしか作れないものだと思ってたから。
>>607 枠で表示したかったら、obj_atarihantei の Drawイベントで draw_rectangle() を使って表示するのが一番スマートかな。
塗りつぶされて見えないのが嫌だったんなら、半透明にする手もあるけど。
ローカル変数 image_alpha を0.5ぐらいに設定すれば、半透明になる。
起動が遅い・・・ GM5.3Aで7.75Mの容量くらい作ったけど起動のローディングが15秒くらいになった やっぱマシンがへこいとローディング長くなるんでしょうか? ルームは幅1000高さ700でスプライトは高さ300幅400とか多く、113個くらい作った まだ音入れてないのに動作確認だけで日が暮れる状態です・・・ ビデオメモリの使用をやめて遅延ロードとか考えた方がいいんで・・・しょうか・・・
いくつか遅延ロード入れればおk
ありがd とりあえず遅延を適当に入れて調整してみる
>>613 ゲームの途中でロードする背景とかスプライトとかを中心にね。
最初から使う奴は入れて
>>609 あれはスプライトのアニメーションでうまく見せてるんだろうね。
ドット絵を描けない俺としては尊敬するほどに羨ましい。
あれくらいの領域のゲームを作りたいと思って始めたんだがなかなか・・・
教えてください ver7のグローバルセッティングの翻訳で困ってまして Let <Esc> en&d the game &Treat the close button as <Esc> key ここの翻訳がわかりません。 一行目は、ESC で終了でいいのでしょうが2行目が・・・ どうか教えてください。
>>616 ヘルプを見ると、
When checked the close button of the window will generate an escape key event. When not checked the close button events are called instead.
→意訳:チェックが入っていると、閉じるボタンで<ESC>キーイベントを発生させます。 チェックをはずすと、代わりに Close Button イベントを発生させます。
とあるから、
『閉じるボタンで <ESC>キーイベントを発生させる』
でいいんじゃないかな。
で、翻訳とは違うんだけど、このClose Button イベントは、Win32API?の WM_CLOSE とは違うことに注意。
不用意に Treat the close button as <ESC> key のチェックをはずすと、×ボタンで終了しなくなる。(Alt-F4も効かないっぽい)
ゲーム内で Close Button イベントを拾って、End the game アクションを定義しておけばいいんだけど・・・。
ESCキーで終了させずに×ボタンで終了させたい場合は、次のようにするべし。(7.0 only)
・Global Settings の、[Let <Esc> end the game] のチェックをはずし、[Treat the close button as <Esc> key] のチェックもはずす。
・ゲーム中ずっと存在するオブジェクトとかで、Close Button イベントを定義し、そこで End the Game アクションを起こす。
>>617 おぉ、ありがとうございます。
E-WordChanger2000で変換がきかないところが多々ありますね。
E-WordChanger2000でした
>>619 全然翻訳できてねーじゃねーかwwww
俺も今同じく翻訳中だけど、あれなんだよな、有料版の部分の翻訳が出来ないorz
それと、ボタンが文字化ける
冒頭のアクティベート部分も化ける
文字化けさえ克服できれば後一歩なんだが
>>621 未レジストって事?
俺レジストしてるよ。
物ちょうだい。
時間がなくなったと、途中で放棄して、他人に丸投げするかと思えば すぐさま、他人の手柄を丸々よこせと言ってみたりする
寄越せといってみたりしたが別人だ
>>623 共有してくれる意志があるならしてもらえると助かるな。
と思ったけど自由意志だな。 すまない、今のは忘れてくれ。
620でてこいよ疑われてるぞ
氏ね!111!!11 うpる気ないなら初めから書くなバーカ!!!! どーせろくなもん作ってないんだろwwwww
>>626 何が自由意志だ! 格好良いとおもってんのかよ(プ
早くクソして寝ろwwwwwwwwwww
初めから、誰もうpするなんて言ってない件
つーか、
>>625 になら渡してもいいけど
でも本当は完成してからうpしたいな
ごめんなさい日本語ください 間違えられたのが悔しかったんだ 抜いたら落ち着いた
オマエモナー く、悔しくないからな
今度はGameMakerスレで沸いてるのか。 前はツクールスレだったな。
質問です。 ボタン押下時に instance_createで作成したオブジェクトをキャラクターに追従させるにはどうしたらいいのでしょうか? my_copy_id = instance_create(x-20, y-20, obj_my_copy); でやっているのですが、その場所で留まっています。
忘れていました。 その作成したオブジェクトは、シューティングのオプションでしてキャラの周り(1つめは上、2つ目は下)という風に出現場所を変えたいのです。
>>635 obj_my_copy が追従したいオブジェクト(obj_mychara とする) のインスタンスがルーム内に一つしかないなら、
obj_my_copy の step イベントで Var アクション を追加し、
variable : x
value : obj_mychara.x
もう一つ、
variable : y
value : obj_mychara.y-20
上記はキャラの上に配置されるようになる例。数値適当にかえてくれ。
あっと、よく読んでなかった。 オプションは複数置きたいけど、すべて同じオブジェクトにしたいってこと?そういう場合は、インスタンスによって配置を変えないとね。 上記の obj_my_copy の step イベントで追加した Var アクションのところを、 variable : x value : obj_mychara.x+optx variable : y value : obj_mychara.y+opty とかに変えて、ボタン押下時に instance_create()したときに、 my_copy_id = instance_create(x, y, obj_my_copy); my_copy_id.optx = 20; my_copy_id.opty = 0; とかすると、右側に出る、とかできる。if文で適当に条件分岐させて、optx と opty の値を決めればいい。
それはそうと、
>>601 のアイディアを元に、
>>552 の要望にこたえられそうなAutoHotKey のショートカットマクロが出来た。
Execute Code ウィンドウでも、 Script Properties ウィンドウでも、即確定して閉じる。
http://gamdev.org/up/img/10645.zip デフォルトでは Ctrl+W でウィンドウを閉じるようになってます。。
ファイル内の ^w:: を適当に変えることでキーカスタマイズ出来ます。
autohotkey.ini に追加するなりして利用してください。
・・・もう5時半かorz おやすみなさい
>>638 その記述でうまく予定通りの動作にすることができました。
ありがとうございました。
遅くまでお疲れ様でした。
お休みなさい。
ボタン連打による連続攻撃の判定をうまく組めないや。 if文でattack+=1によるatack何回目かで表示かえてるけど モーションの途中で次のモーションに変わるんだよね。(当然だけど 1回目のモーション中に押した判定があった時に、 2回目のモーションに移行したい。 ヒント教えてください
ダメージを食らった時無敵時間を作りたいんですが 「ヘルスが1以上減ったとき」というのはどう設定すればいいのでしょうか
>>642 俺も初心者だけど浮かんだので書いてみる。
・ステップ開始イベントで、現在のヘルスを変数(たとえば、henka_health)に格納
・ステップ終了イベントで、現在のヘルスとhenka_healthを比較
1以上変化があれば、無敵時間突入
という風にやるとかどう?
>>641 アニメーションが終わった時のイベントが End of animation というのは解ってるんだけど、
アニメーション中にatack(があったかの)変数を使って、
もしあれば次のモーションに移る。
って感じの「モーション中に何かあったか」を調べるGMLって何かある?
>>642 プレイヤーのヘルスを減らすスクリプトっていうのを作っておいて、
ダメージを与える時には必ずそのスクリプトを呼ぶようにする。
で、何か処理を追加したい時にはそのスクリプトに追加する。
ってやり方もあるよ。
>>644 アニメーション開始時に適当な変数を0に設定して
何かアクションがあったら変数を1に変える
アニメーション終了イベントで変数が1かどうかチェック
でどうかな。
>>645 連続攻撃にしたいんだ。それだと1・・・ ん?
1回目に atack=1 二回目に atack=2 ...
として、終了イベントで ってあれー?
うん、ありがと、何か閃きそうだ。頑張ってみる。
遅かったかも試練が、書いたので置いとく。
>>644 キープレスイベントかなんかで、イベントを拾えばいいんでないの?
>>641 zキーで攻撃するとして、
key press <z>
...
switch (attack) {
case 0: // 1発目
// ここにモーションを発動させる何かを書く。
attack += 1
break;
case 1: // 2発目
// ここにモーションを発動させる何かを書く。
attack += 1;
break;
// ...
}
...
モーションは、タイムラインで設定すればいいとおも。
もしくは、ステップイベントでモーションを設定してる自作スクリプトを呼び出す、のもアリかなぁ
例えば引数を、attackとモーションが始まってから経過したステップ数にして、
attackでモーションの種類を場合わけをして、
経過ステップ数でそれに応じた移動をさせたり、アニメーションさせたり、キー入力の可否を設定したり、等々...
ま、それだとタイムラインとあまり変わらんのだが。
>>647 thx
caseもやってみたけど、イメージ通りとはいかなかった。
(俺のやりかたが悪いのか
イメージとしては、モーションが終わらないと次のモーションが始まらないって事なんだけど、
どうしても、モーション途中でボタン押すと、モーション途中で放棄して新しいモーションが
始まるんだ。
一定時間内(連続二回とか)に同じキーが押されるって判断は、 タイムライン?とかアラームで判断させたほうが良い?(これもイマイチうまくいってない これができるとダッシュ判定とかできそうなんだよな。 うーん。
>>648 あ、動作キャンセルじゃないのか。上の例は、動作キャンセルっす・・・。
となると、俺だったらモーション中は攻撃キーの入力を無視するような仕組みを作るなぁ。
キー入力可否を表す変数(ableAttack)を一つ用意して、
if (ableAttack) {
switch (attack) {
// ここは
>>647 と同じ感じで...
}
}
こんなかんじで。モーションが終わったら、連続攻撃入力受け待ち期間になって、
次の攻撃キーの入力があったら、連続攻撃発動(attack が +1されてく)。
この期間はアラームで管理するといいかもね。
で、連続攻撃受け待ち期間も終了したら attack を 0 にもどす。
そんなイメージが沸いた。
>>650 thx
うーん、それだと小パンチ連続みたいな感じができないんだよね。
何カウントか待たないといけなくならない? というか成った。
モーション中にもっかい押されると連続攻撃発生みたいにしたい。
少し落ち着いてくる。
格闘ゲームの必殺技みたいにカーソルキーの入力待ちはどうすればできますか? 「↓・斜め→・右+A」のようなコマンドです。
連続攻撃判定うまくいかなーいorz
654 :
名前は開発中のものです。 :2007/12/06(木) 22:57:30 ID:g7KZCqa1
はじめましてこんばんわ。
最近gamemakerにはまりだした、新人です。
2D横スクロールゲームを作ろうと思って
>>305 さんのサンプルを参考にさせてもらい、
ちょくちょく進めてるんですが、途中で詰まってしまって、原因を探ろうにも
全くわかりません。どなたかご教授お願いします。
ttp://tonosiki.mbnsk.net/uploader/src/up6820.rar ←→キー;左右移動
Zキー;ジャンプ
Xキー;パンチ
エラー:
パンチを数回使うと、keyXで変数panchが見つからないとエラー表示される
また、移動しながらパンチをしてもkeyleftまたはkeyrightで変数panchが見つからないと
表示される。
途中、命令をコメント文で囲っていますが、気にしないでください。
動きのあるオブジェクトを動きのあるオブジェクトにチェンジすると スプライトが1から表示されない時があるのですが解消方法はありますか?
上のほうで言っていた翻訳の奴あげてホスィ paypalで1000円までなら支払ってもイイ
>>654 見たところ、unkown variable というエラーがでるような記述ではないと思います。
そこで、unknown variable gamemaker bug というキーワードでググったところ、
海外のフォーラムに、ごく稀にそのようなことが起こる、との書き込みがありました。
ttp://gmc.yoyogames.com/lofiversion/index.php/t300055.html 下から2番目に Alert Games という人が答えています。
どうやら、プロジェクトをセーブする際にバグがあるのかもしれない、といっていました。
その人はバックアップファイルで元に戻すことを勧めていますが、
私のほうで obj_main オブジェクトを丸ごと duplicate して(右クリックでできます) 再度ためしたところ、unknown variable のエラー表示はなくなりました。
こんなことが起こるんですねぇ・・・。
態度が悪いといって怒られるかも知れませんが助けてください キャラをスト3の豪鬼の必殺技みたいに、横にすべりながら攻撃する時に、思い通りに動かない。 Xポジションを変えると瞬間移動みたいになったり、 move_towards_point使うと、ずっと移動しつづけたり・・・ 3キャラ分横に移動させて止めるって方法教えてください
態度というか、結果だけを求める質問をされても、 前提となる部分が何もないと回答が無数にあるため、答えようがないというのが正直なところでして。 前提となる部分を回答する人が想像して答えようとしても、えらい長くなるから面倒だしスルーってなりやすいですし。 (というか、1から作るやり方をいうようなもんですし) こうやってるんだけどうまくいかない等、詳しい情報がないと手助けしてくれる人の可能性が低くなりやすいですよ。どうしようもないのが本音です。
ふぎゃΣ ええっと、前提となる部分・・・ 2D格闘ゲームを作ってまして、立ち状態から ボタンc(必殺技ボタン)を押したら、パワー消費して(これはOK) 立ち絵から、sprite(spr_special_wazaA ; サブイメージ数20) に変化させて、キャラを右方向ゆるやかに移動させたいんですが、 if keyboard_check_pressed(ord('C')) { sprite_index = spr_special_wazaA ; image_index = 0 ; image_speed = 1 ; x += 10 ; //←ここで移動を書こうとしている } こうすると、右に10ほど瞬間移動したみたいにコマ飛びして表示されます。 for でやってみても一緒でしたし、move_towards_pointすると地面となる オブジェクトと接触してる間はちょっしか移動しないし、ジャンプとかすると そのまま画面の端まで移動しちゃうんですよね。 ゆっくり移動して目的の場所でピタっと止める方法はありますか?
661 :
654 :2007/12/07(金) 07:17:58 ID:MOpCkhcY
>>657 わざわざ、調べていただいて、さらに海外フォーラムまで言っていただいて
ありがとうございます。
エラー表示が消えました。ありがとうございましたm(_ _)m
>>660 1stepごとに少しずつ移動させたければ、ステップごとに細かく移動させないといかんのよ。
何ステップでどれくらい移動するかあらかじめ決めて、
移動するステップ数(変数名 move_cnt)と1stepで移動する移動量(変数名 dx)を計算しておく。
で、ステップイベントで、
if (move_cnt>0) {
x += dx; //x 方向にdxだけ移動する
move_cnt -= 1; // 移動カウントを一つ減らす
}
こんな感じにすると少しずつ移動する。面倒だけど、仕方ない。
横移動制御には hspeed を利用する方法もあるけどね。
技発動したときに、move_cnt と dx (とスプライト(sprite_index)とアニメーションスピード(image_speed))を決めてあげればいいんじゃないかなぁ。
なお、for文は1step内で繰り返し終了まで処理することになるので、上のような意味にはならない。
技発動中に操作させたくなければ、キー入力を拾う部分でそういうフラグも設けること。
>>662 ものすごく死角から攻撃されたような衝撃です。
明日試して見ます。
そして新たに質問なんですけど、draw_sprite_stretchedでスプライトを下記の方法で表示すると一瞬で消えてしまうんですが、何が問題なのでしょう?
//X(攻撃)ボタン
if keyboard_check_pressed(ord('X')) {
attack = 1; ren += 1 ;
if ren == 1 {
if !muki_chk{ sprite_index = x1_r; }else{ sprite_index = x1_l; }
image_index = 0 ; image_speed = 1 ;
draw_sprite_stretched(spr_attack,0,x+10,y-20,50,20);
}else if ren == 2 {
if !muki_chk{ sprite_index = x2_r; }else{ sprite_index = x2_l; }
image_index = 0 ; image_speed = 1 ;
draw_sprite_stretched(spr_attack,0,x+10,y-20,30,40);
}
}
>>663 draw系の関数はdrawイベント中にしか効果がないよ。
画面に描画する機能なんだけど、drawイベントに入った最初に背景色や背景画像で全体を描画してしまうので、描いても消されてしまう。
スプライトを拡大表示させたければ、image_xscale image_yscale という変数で指定できる。
どうしても、キャラスプライトとは他に描画したいものがあるなら draw イベントで描画関数で描こう。
ただし、draw イベントに処理を施すと、自身のキャラ(sprite_index のスプライト)が自動で描画されなくなるので、忘れずに描画させよう。
>>664 ありがとうございます。
あ、すいません、これはdrawイベントに書いてます。
なのに一瞬で消えてしまうからナンダロウなーと。
深度を指定して試してみるっす。
draw_sprite_stretchedが if keyboard_check_pressed(ord('X')) { } の内側にあるから、キーを押した瞬間しか 描画されないんじゃないかな
深度変えてもダメだった。
が、今の問題とは関係ないけどobject_set_depth(ind,depth)って、どこで宣言してもいいのかな?
(最後の方にでてくるオブジェクトで、最初のほうにでてくるオブジェクトの深度変えるとか)
心配だから、ルームに必ずおくオブジェクトに設定してるけど。
>>666 なるほど!
では、タイマーイベントで試してみます。
ってダメだ。 drawイベントじゃなくなるorz 表示時間のばすか、消えないままにする方法ってないですか。
if文の外に出すんだ
攻撃回数でサイズを変えたいんでそれは・・・ って、そのための変数だ! if文の中で数字を変数に入れて下のほうで宣言すればいいんだ。 やってみます。
・・・そもそも攻撃した時だけ表示したいんだからダメか。 画面外に表示しておいて、攻撃時(x-key press)時だけ 目的の場所に移動させるという方法にしてみる。 他に良い手がありましたら教えてください。
>>671 何を表示したいのかいまいちイメージできないけど・・・・・別に1つのオブジェクトで処理してしまおうとしなくてもいいんでないかい?
表示用のオブジェクトを作成しておいて、アラームイベント2つ作成し1つ目にDestroy the instanceアクション(インスタンス破棄)を登録
2つ目に1つ目のアラームを起動させる記述をする。生成イベントでアラームイベントの待機時間用変数を宣言しておく
if keyboard_check_pressed(ord('X'))のブロック内のどこかでこの表示用オブジェクトを生成してやるとともにさっきのアラームイベントのタイマーセットを書き込んでやれば
このタイマーセットの間だけ表示されると思う。以下こんな感じのGML書いたらっていう案(表示オブジェ:obj_Disp 待機時間用変数:IntervalSet アラームイベントを1と2で設定したとする)
if keyboard_check_pressed(ord('X')){
//攻撃とか動作とかをずらずら記述してあるかと・・・
//-----------------
//ここより表示用オブジェ生成
var DispObjID;
DispObjID = instance_create(self.x, self.y, obj_Disp);//例として自分の原点に表示用オブジェのインスタンスを生成
DispObjID.IntervalSet = room_speed * 3;//例として3秒間表示
}
673 :
672 :2007/12/10(月) 15:45:44 ID:ey1ac3Xs
上の続き
○obj_Dispの生成イベント
var IntervalSet; //待機時間用変数の宣言
alarm[2] = 1; //破棄用アラームイベントを1ステップ後起動させるアラーム2を起動
○obj_Dispのアラーム2イベント
alarm[1] = IntervalSet;//破棄用アラームイベント起動
○obj_Dispのアラーム1イベント
>>672 の記述どおりDestroy the instanceアクションをセットし、自分自身(obj_Disp)を破棄する
後はobj_Dispの描画イベントにあなたが思ってる表示をさせる記述をもりもり書き込もう
実際試してないけど
>>672 は似たような事してるので多分大丈夫だとおもうよ?
674 :
672 :2007/12/10(月) 16:18:53 ID:ey1ac3Xs
すまない、書き込んだ矢先に的外れなような気がしてきた。でもなんで描画イベントなの?
>>672-674 どんぴしゃで目的の動作にできた!! マジありがとー!!
格闘ゲー+α(ファイナルファイトみたいな)の作成中、
どうしても汎用的な当たり判定枠を作りたくてやってたんだけど
すぐに消えるわ表示されないわで困ってた。
必殺技で自分の分身をつくってソイツに殴らせるのをやりたかった。
(コイツにのみ当たり判定有り)
で、ぶわーっと前にまっすぐ飛ばしたりもしたかった。
一応アラームも使ってデストロイ指定してたんだけど、
連続攻撃すると分身が画面に残ったりしてた。
(animation end でデストロイ指定+表示から秒単位でデストロイ)
言われた方法でやったら、連続攻撃してもキレイに消えてくれて
なんかもう、やっとムチ振りアクションに取りかかれるッス。ありがとー!
あ、描画イベントなのは draw_うんちゃらでしか表示する方法を知らないからでした。
すいません、GML初心者です。 if relative position (4,0) is collision free for Only solid objects move relative to position (4,0) else if relative position (4,-8) is collision free for Only solid objects move relative to position (4,-8) move in direction 270 at most 8 till a contact with solid objects と、ある場合GMLで記述するにはどうすれば良いのでしょうか。教えてください。
>>677 たぶん、こう。
if (place_free(x+4, y)) {
x += 4;
} else if (place_free(x+4, y-8)) {
x += 4;
y += -8; // y -= 8; でもいい
move_contact_solid(270, 8);
}
679 :
672 :2007/12/11(火) 18:12:40 ID:1veI1+hN
>>675 ぉ!できましたか。成功してよかったです。
ところで
>>667 のobject_set_depth(ind,depth)ですが、その使い方だとNGかと思われます。
平たくいえばオブジェクト=設計図、インスタンス=オブジェクトのコピーであり、F5,F6でデバックした時や実行ファイルで実際に表示されているものはインスタンスです。
object_set_なんちゃら()の関数はオブジェクトリソースを直接変更しにいく関数なので、ヘルプの冒頭に説明されているとおり、すでにオブジェクトのインスタンスが
生成されている場合インスタンスにオブジェクトのプロパティが格納されていて予期せぬ効果を引き起こす可能性があります。
深度を変えたい場合はインスタンスidを直接さして個々に変更するのが常套手段かと思います。
>>672 のobj_dispを使って説明すると
var DispObjID;//インスタンスidを保存する変数
DispObjID = instance_create(self.x, self.y, obj_Disp);//インスタンス生成instance_create()は返り値にインスタンスidを出力する
DispObjID.depth += 2;//例として設定されている深度より2奥に設定変更
こういった感じでしょうか。ヘルプによく書かれている引数のindはよく読まないと、インスタンスなのか、オブジェクトなのか、スプライトなのか混同してしまうことが
あるのでそこらへんを意識してないと「インスタンスが表示されない」+構文も間違えてないので「エラー表示がない」とかいうことになります。
自分も実際しょっちゅうやらかしてます・・・orz
>>678 ありがとうございます。
このようなアクションをGMLに対応する一覧みたいなものは無いのでしょうか。
>>681 ありがとうございます。
v7はあるようですが、v6はないようですね。
すいませんありました。 数字のないほうがv6でした。
ボタンを押すと動きのあるスプライトにチェンジするようにしたのですが チェンジの時たまに1から順にスプライトが再生されません。 何が原因でしょうか。
スプライトの表示番号を 0 にしてないんじゃない? change sprite アクションなら、subimage ていう箇所があるからそこで設定する。 GMLなら sprite_index = 変更したいスプライト名; image_index = 0; てな感じで。
全て0にしているんですがたまに動きがおかしいと思ったら5あたりから再生されてるみたいなので・・・
FAQにあるヘルスを二つ表示する方法がいまいち分からないのですが詳しく教えていただけないでしょうか。
688 :
名前は開発中のものです。 :2007/12/16(日) 13:32:59 ID:MjHgc/J/
「現在のビューに映っている敵をすべて破壊する」 というような技を作りたいのですがどのように設定すればいいのでしょうか?
>>688 テンプレのリンクからヘルプを拾ってきて with の項目を参照すると目的の動作ができると思う。
ボタンを押したとき400後ろ(x:-400)に何もない時そこにワープ、そこにsolidオブジェクトがあるときは何もおきないという風に できるようにしたいのですがif a position is collision freeを使ってもうまくいきません どう設定したらいいでしょう
>>690 relativeにチェック入ってる?
if a position is collision free (x:-400 relative:check)
Jump to a given position (x:-400 relative:check)
OCNから書き込めないので、携帯から失礼します。
GM7でアクションゲームを作っているのですが、
攻撃に設定したキーを一回押すと、離しても延々と攻撃が出続けてしまいます。
GMのフォーラムやここの質問で key_pressedイベントを使うと良いと書いてあったのですが
それを使っても攻撃が止まず上手くいきません。
単発で出したいのですがどうしたらいいのでしょうか。
どなたか解る方がいらっしゃいましたらご教授下さい。
文章だけではわかりにくいかもしれないのでソースをあげておきます。
http://www.uploadjar.com/818021
693 :
名前は開発中のものです。 :2007/12/17(月) 01:11:36 ID:d4jiuAy+
>>692 ・その状態だと、Left(Right)を押したら rol に変数が入る。
・zを押したら、向きがLeftの場合、攻撃スプライト(左)を表示する。
で終わってる状態です。
Key Release <Left> に Set variable rol to 0
Key Release <Right> に Set variable rol to 0
をそれぞれ追加してください。
694 :
名前は開発中のものです。 :2007/12/17(月) 01:14:21 ID:d4jiuAy+
695 :
名前は開発中のものです。 :2007/12/17(月) 01:46:13 ID:d4jiuAy+
>695 とても早いレス、ありがとうございます! 自在に攻撃が出来るようになり、左右移動まで作って頂いてとても嬉しいです。 本当にありがとうございました!
697 :
名前は開発中のものです。 :2007/12/18(火) 14:25:36 ID:KuzWpsao
下および横からはすり抜け可能で、 上からは着地可能、 かつ着地後下キーを押すと下へすり抜けられるブロックを、 Solidを外さず、かつブロック側の処理で実現したいのですが、 どうすれば良いでしょうか? Solidを外すと、その他の判定処理で不具合が生じるので、 なるべくSolidのままで作りたいのです。 また、同時に4人のキャラクターを操作するため、 下キーを押している間と上昇中は非Solidにするという方法は使えません。
698 :
名前は開発中のものです。 :2007/12/18(火) 16:44:34 ID:N2pESpOe
ttp://gamdev.org/up/img/10723.zip GM6でマリオの様なアクションゲームを作っており、乗ると落下するブロックを作ってみました。
が、普通のブロックから落下するブロックに空中移動無しで触れても落下せず、ブロックの上でジャンプしなくては落下しないのです。
原因もあまり解らずどうすれば良いのか解りません。ご教授お願いします。
>>698 歩いて落ちる床の上に来た場合は接触状態になっているんだが、これはコリジョンとは違うんだ。
だから、コリジョンイベントとは別に、プレイヤーと落ちる床との接触状態を調べて、条件を満たしたら床を落とす、様なことをしなきゃならん。
で、調べる方法だけど、アクションアイコンだとこれは無理。だと思う。
プレイヤのステップイベントに execute code を追加して、以下のように記述。
※空白は全角なので、コピペするなら半角に直すこと。
var id_floor; /*id_floor を、execute code 内だけ有効な変数とする */
id_floor = instance_place(x,y+1, object228);
/* instance_place()でプレイヤの直下に、object228 (落ちる床)が存在するかどうかしらべている */
/* もしプレイヤの下にobject228が存在したら、 id_floor にそのインスタンスID が代入される。 そうでなければ、 noone という値が入る */
if (id_floor != noone) {
if (id_floor.isDrop == false) { /* このif文を付けないと、接触中常にalam[0]が10になってしまうので、必ずこの条件を入れること。 */
id_floor.alarm[0] = 10; /* floor_id に対して、10ステップ後にアラーム0(落ちる動作)が発動するようにする */
id_floor.isDrop = true;
}
}
変数isDropで落ちるフラグを判定している。
これがないと、alarm[0]が接触中は常に10になってしまうんで、乗っている間落ちないことになってしまう。
変数isDropを使うことになったんで、初期化が必要。落ちる床の create イベントにvarアクションを追加、variable: isDrop、value: falseとする。
さらに、落ちる床のobj_redとのコリジョンイベント中に、varアクションを追加し、variable: isDrop、 value: true とする。
あと、コリジョンイベント中にある set vert.speed アクションは削除、でいいとおもう。
>>697 考えてみたんだが、結構無茶な要求・・・。
なぜなら、solidの仕様は、コリジョンイベントの前後で、2つのインスタンス間で絶対に「めり込み状態」を認めないような仕様になっているから。
solid なインスタンスとのコリジョンイベントは、以下のような流れになる。()内は solid の時だけ処理される。
[コリジョンイベント]
↓
(お互いのインスタンスが直前ステップの位置に戻される)
↓
[コリジョンイベントのアクション]
↓
(speed,gravity等でインスタンスの位置を調整後、お互いがコリジョンを起こしていたら、やはり直前ステップの位置に戻される)
↓
[end step イベント]
なもんで、その床とキャラとのコリジョンイベントでアクションを起こさないほうがよい。
てことになると、solidの意義が薄れることになるが・・・。
どうしてもコリジョンイベントも定義したいなら、コリジョンイベント中で xprevious yprevious を自前で変更してしまうか、
end step で通過可能にする処理を書くとかするしかない。いずれも、かなり面倒になりそう・・・。
それよりも、着地の処理をコリジョンイベントに頼らない方法で着地させ、
その床との接触中に下を押すと gravity を発生させ、
通過中はgravityを0にしないような処理を
キャラ側のステップイベントとかで記述するようにするようにしてみてはどうかな・・・?わかりにくかったらごめん。
solidは融通が利かないから すり抜け床には使えないな。
702 :
697 :2007/12/19(水) 00:13:09 ID:SlaPK2id
うーん、どうやら無理のようですかね。 なんとか工夫してみようと思います。
704 :
697 :2007/12/19(水) 18:35:50 ID:SlaPK2id
ありがとうございます。 うーむ。やはりキャラ側で処理した方が良いのか・・・。 頑張ってみます。
705 :
名前は開発中のものです。 :2007/12/19(水) 21:55:33 ID:+fFhIeoE
>>704 キャラ側で指定する時に都合が悪くなければ、
壁用判定オブジェクトを作り、
全キャラにそれを親指定するというのはどうだろう?
706 :
名前は開発中のものです。 :2007/12/20(木) 04:58:53 ID:Tb+MgVar
>>699 ありがとうございます。
アクションアイコンのみでしか作った事無かったので難しいですね・・・。
頑張ってみようと思います。
707 :
名前は開発中のものです。 :2007/12/23(日) 00:32:42 ID:U9AhK/mz
HPの他にMPのようなものをつくりたいんですがどうやったら二つゲージを表示できますか?
自前でスクリプトを書けばできるよ。
709 :
名前は開発中のものです。 :2007/12/23(日) 05:15:16 ID:ZiPFLJZ/
710 :
名前は開発中のものです。 :2007/12/23(日) 12:40:14 ID:U9AhK/mz
スクリプト作るのはよくわかりません…
「動きのあるスプライトA」を「動きのあるスプライトB」に、もしくは「動きのあるオブジェクトA」を「動きのあるオブジェクトB」に変えると 1フレーム目から正確に表示されず困っているのですが仕様ですか? 主人公が待機状態で攻撃キーを押すと「10フレーム目に攻撃判定を発生させる」主人公オブジェクト@に変化して アニメーション終了時に元の主人公待機状態に戻るように設定したのですが@が5フレームあたりから始まって攻撃が異常に早く発生してすぐアニメーションが終わってしまったり 11フレームで攻撃判定がなくなってからアニメーションが開始されたりして毎回正確なフレームからスタートされません。
712 :
名前は開発中のものです。 :2007/12/27(木) 18:16:42 ID:1ajxqRXW
もう少し伝わりやすく書いてくれると回答者は助かります。
待機状態というのは、何もボタンを押していない状態でしょうか。
その前に何か条件が発生しているのでしょうか。
そしてバージョンは何を使っているのでしょうか。
そしてヘルプは読んでいるのでしょうか。
>>1 のリンク先は見ていますか。
容易に仕様と言わないでください。
713 :
名前は開発中のものです。 :2007/12/27(木) 18:22:56 ID:1ajxqRXW
バージョン7及びGMLを使用している場合は、 sprite_index = spr_A image_index = 0 image_speed = 10 2番目の image_index を変化させてください。 これは subimage の始まりを変えます。 最後の image_speed を変化させてください。 これはスピードが変わります。 再度伝えます。 リンク先のヘルプや exsample を参考してください。
714 :
名前は開発中のものです。 :2007/12/27(木) 18:28:43 ID:1ajxqRXW
アニメーションの再生がおかしいと感じる時は、 step の実行順番を再認識してください。 step には順番があります。 それは Begin Step から始まり、最後は Drawing です。 また、イベントの Animation End Event をうまく活用してください。 よりよい Game Maker Life を。
715 :
HAL :2007/12/28(金) 14:58:17 ID:iAadBrLO
自分のキャラにHPを設定ってどうやるんですか あとオブジェクトを使ってHPを減らすようにするにはどうしたらいいんですか
ヘルスのほかにもう一つゲージを作りたいのですがスクリプトを使わずアクションだけでも可能でしょうか。
ゲージくらい変を数使えばできるだろう?
変数をですw 変を数ってなんだ…orz
描写のやり方がよくわからないんです 変数で二つ目のヘルスを作っても描写で画面に表示する方法がわかりません バージョンは5.3です
参考にさせてもらい無事完成させることができました。 ありがとうございます
722 :
ぺしゃみゅんち :2007/12/31(月) 22:39:11 ID:G7IwY3y8
はじめまして
私ロックマンエグゼのようなゲームを作ってみたのですが
変な異常を起こします
原因が一人ではわからないので皆さんに見ていただきたいのですが
これがそのファイルです
http://www.uploadjar.com/766112 バージョンは5.Aです
詳しいことはファイル内の問題点のテキストに書いてあります
よろしくお願いします。
>>722 意味が わからない
あとエンターでプレイヤー表示だけどpressにするのをお勧めするよ一瞬押しただけでも2、3召還されるわけで
変な異常って頭痛が痛くね?
725 :
名前は開発中のものです。 :2008/01/01(火) 15:05:07 ID:krtrP6kC
>>724 変と異常ってのは違う意味を指すからおかしくないんじゃね?
727 :
名前は開発中のものです。 :2008/01/01(火) 20:03:22 ID:krtrP6kC
728 :
ぺしゃみゅんち :2008/01/01(火) 21:13:12 ID:41An0v9b
>>726 さん おっしゃるとおりです
>>723 さん 修正しましたがパソコンの調子が悪く
アップロードに時間がかかるのでほかの修正箇所が
出てきたところでアップロードさせなおしていただきます
異常とは本来右左でキャラクターを選択するのですが
怪鳥から左を押すと獅子になるはずが怪鳥のままになっているのです
また次が獅子になるはずのところでは怪鳥に飛んでしまうのです
どうしてこんなことがおきてしまうのでしょうか?
去年の9月から考えています
しかし分かりません
助けてください
>>728 所々に音を鳴らす命令を入れて実験してみたところ、どうやら
オブジェクトEvsEのpress<left>を実行した後、すぐさまWvsEのpress<left>も実行しちゃってるみたい。
SvsEやNvsEのpress<right>での実行も同様。
原因は多分、1フレーム間でのインスタンス同士の実行順にあると思う。
これはもうおそらく仕様なので、次のような工夫が必要になってくる。
press<left>イベントを実行してオブジェクトを変化させたら、
変化後のオブジェクトのpress<left>イベントを、次のフレームに移りかわるまでの間は実行させないようにする。
……というわけで、フラグ変数をうまく使ってみると良いと思う。
730 :
ぺしゃみゅんち :2008/01/02(水) 13:25:34 ID:19fPmr/N
ありがとうございました 変数などは分からないので 押し上げイベントに変更してみました そのほかいろいろ改良しましたらもう一度アップロードします
5.3Aもう3年くらい使ってるけどオブジェクトの名前とか日本語でもいけるんだな あと描画イベントの使い途がいまさら解った 嘘みたいだろう?俺、いままで文字とかいちいちスプライト作って表示してたんだぜ?
732 :
名前は開発中のものです。 :2008/01/04(金) 17:38:30 ID:JG5m5wPm
日本語出力できていいなぁ・・・今から5.3Aに乗り換えようかな・・・
5.3AはVistaに未対応らしいけど、単独実行が出来ないということ? GM自体は動くみたいだけど…
ビスタでフツーに作ってるけど? 実行形式はまだ試してないけど
スコア表記を 「スコア:○○」のように前に出すのではなく「○○点」のように表記したいのですが可能ですか?
>735 '' + string(スコア) + '点' でできた
素早い返答ありがとうございます。
なんかボールが坂をころがっていくような物理シュミはこれでつくれますか?
739 :
名前は開発中のものです。 :2008/01/08(火) 20:46:53 ID:HXQlUjj3
シミュレーションな
GMJにここの書き込み反映されてるんだなスゲー
741 :
ぺしゃみゅんち :2008/01/15(火) 21:32:09 ID:hN1kqTH6
押し上げにしても同じことがおきました
しかし変数などが分からないのですが
誰か5.aで開ける
>>729 さんのいっていたようなフラグ変数
をつかったサンプルもしくは私のアップしたものに手を加えたものを
アップしてくれるとうれしいです。
ここで説明していただいてもかまいませんが
サンプルなどをアップしてくれたほうがうれしいです。
よろしくお願いします
>741 簡単なやり方としては ・今キーイベントに置いている内容をアラーム0イベントに移動 (「イベントの変更」を使うと楽) ・かわりにキーイベントに「Set an alarm0」を置いて値を1にする これでインスタンスの変化が1ステップおいて起こるようになる
追尾ミサイルを作っているのですが 直角や180度いっきに回転してしまうんですが クルーってかんじに遠回りして追尾させたいんですが どうすればできますでしょうか
登録するのが嫌で5.3Aを落としてきたけど、XPで不便な事って有るのか?
745 :
名前は開発中のものです。 :2008/01/19(土) 02:10:04 ID:pvbjWxud
>>744 あるとすれば
・6以降の新しい機能が使えない
・レジスト機能使う時に、登録しにいかなくちゃダメ
ってくらいだな。
746 :
名前は開発中のものです。 :2008/01/19(土) 06:44:46 ID:lpPp39mj
なるほど、日本語訳付きで練習する分には問題ないと思っても良いって事か
749 :
名前は開発中のものです。 :2008/01/22(火) 21:17:39 ID:ocbbdzjm
7が出てからもうすぐ一年かぁ 本家では新しいの出るんかな
>>748 いきずまってます\(^o^)/
動いてる方向を取って1/3ステップ進ませて今進んでる方向がうんたらかんたら
751 :
名前は開発中のものです。 :2008/01/23(水) 02:48:32 ID:Q1tjyTbC
>>750 すまんが現状どうやってるのかよくわからん
角度を常に変数でもたせておくなりして三角関数使わないと難しいんじゃないだろうか
俺ならミサイルの単位時間に動かせる角度と距離固定して目標追わせるかな。
前回692です。
また製作の壁にぶつかってしまい困っています。
GM7でアクションゲームをつくっています。
現在、ロックマンのように、自キャラが移動をしながら攻撃ができるようになっています。
これを魔界村のように、移動中に攻撃ボタンを押したら、立ち止まって攻撃するようにしたいのですが、どうすれば良いでしょうか?
ソースをあげておきますので、
どなたか解る方がいらっしゃいましたらご教授下さい。
ttp://www11.axfc.net/uploader/20/so/He_66684.zip.html Keyword(DLパス)は0011です。
754 :
748 :2008/01/24(木) 12:00:40 ID:gZRHXEEh
>>750 自分
>>34 なんだけどうpしてるやつの最初の方にホーミングミサイル撃つ敵
つくってあるんだけどこんな感じの作りたいの?
>>753 obj_usagiオブジェのキーボードイベント<left><right>のアクション全体をcan_attack変数が1の時だけ実行するように
If a variable has a valueを置いてみたらいいんじゃない?
756 :
753 :2008/01/27(日) 02:40:32 ID:v3yvH1+7
>>755 すばやい回答ありがとうございます。
無事自キャラが止まって攻撃が出来るようになりました!
半月間も悩んでたので本当に助かりました。
ありがとうございました。
757 :
729 :2008/01/27(日) 04:15:44 ID:PCXtfTLD
>>742 あ……なるほど。
pressKeyで即オブジェ変更するんじゃなくてAlarmイベントで実行させれば
複雑にフラグ変数を使わずに済みますね。勉強になります。
Scriptのエクスポートみたいに、 オブジェクトのソースを出力ってできますか? オブジェクトがたくさんあると手作業ではちょっと厳しい...
Editメニューの最後にある「Show Object Information」 名前からは想像がつかないが、全オブジェクトの情報を 一気に出力してくれるというすぐれモノだ。 オブジェクトたくさん作りすぎてるとエラーで死ぬけどな!
>>759 止まった\(^0^)/
450個もオブジェクトがありゃそりゃ固まるか。
>761 ばーか
763 :
名前は開発中のものです。 :2008/02/01(金) 00:34:05 ID:a4c4UVam
761 名前は開発中のものです。 [sage] 2008/01/31(木) 18:22:51 ID:fnpWL05f - NEW! -
>761
ばーか
762 名前は開発中のものです。 [sage] 2008/01/31(木) 22:04:15 ID:TXruG4et - NEW! -
>>762 ( ^ω^)…
うーん・・以前にも聞いたので また聞くのはちょっと気が引けるんですが、 Solidのチェックを外さずに下からすり抜けられる床ってのは やっぱり無理なんでしょうか。 諸事情で「キャラがブロックより上にいる時だけSolidにする」という方法が使えません。
マニュアル読んできた。 solid Whether the instance is solid. This can be changed during the game. (solid インスタンスがsolidかどうか。ゲーム中に変更可能) solidかどうかの判定は変更できるようなので、キャラのy値を取得して、 「キャラのy値がブロックのy値よりも低いとき、solidをfalseにする」 「else {solidをtrueにする}」 って組んだらどうかな?
>>765 前提として4キャラ同時に操作するということを書いてませんでした、すいません。
1キャラ操作のアクションゲームならそうするんですが、
多キャラを操作するときなどに、他のキャラがブロックの上にいるときとかに
Solidを解除すると乗っているキャラが落ちてしまうので悩んでいます。
>>766 ifを何個か重ねたらだめなのか?キャラごとに
そうすると1Pが乗ってて4Pが下にいるときとかに、 4Pが床(足場)にしたからすり抜けようとしたときにぶつからない? 1Pが上にいるからSolidはONになってるはずだし
ifを重ねて場合分けしようにも、キャラ別に判定用オブジェクトを作るにしても、 Solid同士の衝突は貫通しない以上、1つでもSolidがあったら下のやつは上にあがれなくなると思うぞ。そのためのSolidなんだし。 オブジェクト別にアクションを変えたいのなら、Solidは解除しておいて、状況に応じて通行可/不可が切り替わるように考える必要があると思う。 〜チラシの裏〜 発想を逆転してみた。 ブロックはSolidで固定。キャラのSolid判定を変えてみるという考え。 キャラがブロックの上にいるときはSolid、下ならNon-Solid。 これなら下から上ならすり抜け、上から下なら止まるというのを実現できるのじゃないかと。 ……でもこれをやると、ブロックは縦方向に見て1つまでしか置けない。 ついでに多分、キャラも床もSolidにして床の上を自由に歩けるようにしてあるんだと思うから、 これをやると床をすり抜けどこまでも落ちていく。 うん。駄目だ。 〜チラシの裏〜
あ。
自己解決した・・!
結局「キャラがブロックより上にいる時だけSolidにする」という方法が使えるということに気がついたというオチ・・。
Solidに設定しててもCollisionイベント設定しなかったら素通りするから、
4人いたらそれぞれのプレイヤー用の床を作って4つ重ねればいいのか。。
2ヶ月くらい悩んだけどなんか思いついてみれば簡単だった・・・。
ttp://www.uploda.org/uporg1239813.gm6.html 考えて頂いてありがとうございました。
ってなんだ、Solidでも素通りするのか。
>>766 4キャラ同時に操作ってニコニコアクションの人か?
違っても製作頑張れ。完成するといいな。
>>770 このレスはアクションの人だったんだな(´・ω・`)
いろんなroomを表示させることはできますでしょうか?
>>777 ヴァージョンが5だったことを忘れてたんだぜww
sprite_replaceで外部からファイルを読み込みまくってたら、 ロード時間が半端なく長くなった上にメモリ浪費が激しすぎる・・。 時間とメモリを節約する方法ってないですかね・・・
一度に全部読み込んでる? もしそうなら、room内で使う分だけ読み込むようにしてみるとか。。。 たしか、使用していない画像や音声のリソースをメモリから消去するような関数が用意されていたと思うんで、 roomを変更する時などに、必要がなくなったリソースをメモリから削除するようにしてみるとか。。。
メモリ消費は
>>780 を参考にいろいろやってみて軽減は出来ました。
しかしロード時間が死ねる・・。sprite_replaceを使う以上仕方ないのかなぁ。
ゲーム内に組み込もうにもキャラ数が40人くらいいるから、
exeにまとめると実行ファイルサイズとスプライト数がすごいことになる。
>>781 読み込むものを減らしたらどうでしょか
2つか3つ本体作って
全部読み込みバージョン
ちょっと読み込みバージョン
最小限バージョン
とか(´・ω・`)
データを外部から取り込むようにして実行ファイルを小さくすると、 ・起動が早いかわりに、リソースの読み込みでやや時間をとる。 ・修正、アップデートが軽量化できる。(新しい実行ファイルと追加データを上書き) 逆に全部をexeにまとめると、 ・起動が遅いがその後のロードは不要(または軽減?)。 ・中に詰め込んだデータに容易にアクセスできない(ユーザーからのリソースの書き換え防止) ・しかし、アップデートは差分の書き換えではなく「新しいバージョンを丸ごと入手」 ……といった解釈で合っていますか? 間違っていたり、もっと詳しい説明があったら是非お願いします。 (もしこうだったら、修正/拡張パッチとかが作れるように、外部からの取り込みの方がいいのかなぁ)
ホモの友達がいるんだが そいつベッドの下にビンに入った液体チョコレートと筆を置いてて これなんだ?って聞いたら 「これで彼といっしょにお互いの体に塗ってなめっこするの♪」 って言われた。
失礼します。 GML上において、score(GM側にデフォルトで設けられているスコア変数)に 値を代入させる方法がわからず、困っています。 ヘルプは一通り読んだつもりで、私は次のような記述を行いましたが… score =(適当な値); global.score =(適当な値); エラーになってしまいます。 GMLを使ってscore変数の値を変えるにはどのようにすれば良いのでしょうか?
788 :
787 :2008/02/17(日) 11:10:44 ID:wXzkSK3W
あぁ、言い忘れていました… バージョンは6.1です。
>>787 やったことないが
グローバルいらないんじゃね?
790 :
787 :2008/02/17(日) 14:13:20 ID:wXzkSK3W
"global."の有無に関わらず、"Variable name expected"というエラーメッセージが出てきます。 試しに今、新規作成でscore+=1と記述してみたところ、これは難なく動作しました。 ということは、このエラーの原因は別の箇所にあると考えられそうですので 一旦ソースを見直してこようと思います。 ……何処がダメなのか想像がつかないけど……
score = ?; score=?; 両方試してみた? 後スペルチェックとか
"Variable name expected" が出るのはたいてい "score" をすでに変数名以外に使っちゃっているとき。 変数名が青じゃなくて紫になってたらそれだ。 オブジェクトとかスプライトに "score" って付けてない?
793 :
787 :2008/02/17(日) 19:47:57 ID:wXzkSK3W
>>792 確かに紫になっていました。でも"score"なんて名前を付けた覚えはない……
と思ってたらありましたよ、"score"という名のルームが!
気をつけて名前を付けてきたはずだから、こんな間違いはしていないと思い込んでいました…
>>791 そのようなスペースの有無によって引き起こされるバグは
ほとんどないと思っていますが、どうなんでしょう?
お二人方、どうもありがとうございました。
>>786 ありがとうございます
そして重ねて質問なんですが、
マスクの使い方も教えてもらえないでしょうか?
796 :
779 :2008/02/18(月) 14:05:15 ID:wD+9YlvR
ロード時間の件ですが、 スプライトのロードよりも、 キャラ変数の用意に膨大な時間がかかっていることが判明。 execute_fileで大きなファイルをロードすると時間かかるんですね・・
>>556 でも指摘されてたけど、
ゲーム実行時に GMLコードの書かれた文字列(またはテキストファイル等)を実行するのはかなり時間コストがかかるよ。
単純に考えても、gmソースにあらかじめ組み込んでおくのに比べて、
exe側がコードを解析して、(GM流の)バイトコードに変換する処理が増えるんだし。。。
変数の代入程度なら、自前でデータファイルを作って処理をしたほうが良いだろうね。
バイナリ形式のほうがよいかもしれない。
>>795 解決できました!
ありがとうございます!
799 :
名前は開発中のものです。 :2008/02/18(月) 22:39:56 ID:tcJyICZc
>>796 変数を使いまくるとロード長くなる?
どのくらい変数使ってるの?
800 :
779 :2008/02/19(火) 22:43:31 ID:x/RhMfeZ
あー、いや、変数の用意自体は一瞬なんだけど、 execute_fileでやってるから変数が多くなるとテキストも長くなって 時間がかかってしまうわけで。ゲーム内部に入れてしまえば0.1秒もかからないし、 配布時には内部に入れてしまおうかなぁと思ってる。 今数えたら5000個くらいだった。それ×4。 なんかこの設計自体に問題がある気がしてならない。
801 :
名前は開発中のものです。 :2008/02/21(木) 10:47:14 ID:QLrlpKAR
すいません、擬似的に空間の歪みを表現しようと思い、 sprite_create_from_screenとsprite_assignで ゆがませる空間のスプライトを作成し、 sprite_set_alpha_from_spriteをかまして そのスプライトを用いたオブジェクトを拡大/縮小しながら表示させ、 オブジェクト消失時にsprite_deleteってやってるんですが、 この処理するたびに物理メモリが一定量ずつ減っていってしまいます。 sprite_deleteしてるからメモリは開放されるはずなのに… 何故でしょうか。
>>801 書かれていることだけをこちらでver 6.1にて実験してみたけど、
処理するごとにメモリ消費されてしまう現象は確認できなかった....
ちなみに、こんなソースです。レジストバージョンしか動きません。F1キーで略説でます。
ttp://gamdev.org/up/img/11107.zip sprite_create_from_screen() で作成したスプライトも全て sprite_delete() されてるか再度確認されてみては。
803 :
801 :2008/02/21(木) 13:03:03 ID:QLrlpKAR
素早い返答有難うございます。 帰宅してから試してみることにします。
804 :
801 :2008/02/21(木) 18:05:02 ID:hrX+JUXR
>802 只今帰宅し、サンプル確認してみました。 おおおおーーーメモリが減らない!! 背景からスプライトを置き換える際にsprite_delete(ind);を 入れてなかった点と、preloadがtrueになっていた点あたりが 問題…だったのかもしれないです。 さっそく作ってるゲームに入れてみて更に確認してみます! 有難うございました!!
805 :
802 :2008/02/22(金) 00:23:23 ID:9TIiCCE7
おお、お役に立ててよかった。 おそらく原因は、sprite_delete() を入れていなかった、もしくはタイミングが悪かった点でしょうね。 問題が解決できそうで何よりです。開発がんばってください。
806 :
名前は開発中のものです。 :2008/02/22(金) 00:58:19 ID:GgtMRHOI
公式は、7正式出てから動きまったくなし?
807 :
名前は開発中のものです。 :2008/02/22(金) 22:28:56 ID:EnGdlCfo
>>806 だね
もうあれでほとんど安定してるし
得にバグとか更新とかもないし
更新されるのは8が出てからかもね
8が出るのも相当後だと思うけど
ところでGameMakerって外部ファイルtxtとかって読み込めたっけ
808 :
名前は開発中のものです。 :2008/02/22(金) 23:22:21 ID:GgtMRHOI
>>807 今出先だからわかんないけど、上の方で外部ファイルから変数を読み込んでって話題があったときにためしたら出来た記憶がある。
809 :
名前は開発中のものです。 :2008/02/23(土) 21:16:37 ID:3ZZOv+FT
Draw the value of scoreの使い方がよく分からない・・・ 誰か詳しく説明してください。お願いします。
>>809 使い方と言っても、xとyにスコア表示したい座標入れるだけなんだけど…
とりあえず(0, 0)のままでも画面左上に何かしら出るでしょ。
アクションをDrawイベントに置くこと、Visibleにチェック付けておくこと、
オブジェクトをルームの中に置いとくこと、以上3点忘れずに。
811 :
809 :2008/02/24(日) 10:24:15 ID:+SnWXLhW
>>810 Visibleにチェックをつけるという意味がよくわからなかったが、
ちゃんと動きました。ありがとうございます。
Object Properties
Name: [ ]
Sprite
[ ]
[ New ] [ Edit ]
□Visible □Solid
Depth: [ ]
(以下略)
↑のVisibleのチェックボックスのこと。
デフォでチェックが入ってるから問題無かったんだろうけど。
これにチェックが入ってなかったら、例え何をしても何も表示されない。
動いたらしいしもういいんだろうけど、一応念の為。
うっかりしてると
>>810 が言った3つを忘れてしまいがち。
見直してて原因を見つけたとき「そりゃ表示されるわけねーわなw」となる。
オブジェクトのイベントにある outside view が働いていない気がする
>>813 バグだろうねぇ。公式のコミュニティにも話題が出てたよ。
ttp://gmc.yoyogames.com/index.php?showtopic=316899 現状だと、outside view イベントのかわりに boundary view イベントを使って、
そこで以下のコードを書くと、期待通りに動くようだ。
/* view 0 に対して、処理する場合 */
if (x-sprite_xoffset+sprite_width < view_xview[0]
|| x-sprite_xoffset >= view_xview[0]+view_wview[0]
|| y-sprite_yoffset+sprite_height < view_yview[0]
|| y-sprite_yoffset >= view_yview[0]+view_hview[0]) { // スプライトが完全に view から外に出たかどうかを判定している
// ここにコードを書く
}
コードが書けないなら、 if の()内の式全てを
Test Expression (?の描いてある八角形のアイコン) の expression に貼り付ければOK。
ステップイベント内で同様にやっても多分OKだが、
毎ステップ判定処理をしてしまうんで、処理コスト的に不利だろう。
815 :
名前は開発中のものです。 :2008/02/27(水) 15:04:31 ID:imokwZIU
ちょっと興味あるけど自機の移動も作れないしGMLとかわけわかめでもうだめだ
強制はしないけど、興味があるんだったら、いきなり作りたいものを作ろうとせずに、まずはチュートリアルに沿って一度作ってみるといいよ。 逆に、作りたいものを作るためにはどんなことを覚えなきゃいけないか、って感じで入ると滅入ると思う。 チュートリアルの通りに作って、わからなくなったらExampleを見て、どうやってるのかを参考にしたり。 GMLを使わなくても、シンプルなゲームなら十分作れるから、GMLに触れるのはある程度慣れてからで十分。 最初のうちは、「何が起きたらどれをどうする」といったことを決めていく、と考えるといいかもね。 右を押したら右に行く、弾が自機に当たったら爆発する、とか。 「チュートリアルなんて面倒」とか思わずに。無駄にはならないよ。
818 :
名前は開発中のものです。 :2008/03/07(金) 01:56:07 ID:/zU2Jm/L
これ商用で配布とかは可能なの? どこに書いてあるかわかんないんだけど
確か可能なはず
821 :
名前は開発中のものです。 :2008/03/07(金) 21:49:20 ID:/zU2Jm/L
親インスタンスの設定と当たり判定の設定がまとめを見てもわからない・・・ GM7だとやり方が変わってるのでしょうか? もしそうなら誰か設定の仕方を教えてくれませんか?
別に変わってないはずだけど ParentとかBounding Boxが見つからないって話だったら まず File >Advanced Mode にチェックつける
>>824 d
advanced modeにチェックを入れたら見れるようになりました
ありがとうございました
インスタンスIDを使って、当たり判定の位置調節をしているのですが、 存在するIDを指定しているのに、時々そんな変数しらねぇよといわれてしまいます。 おそらく、instance_changeの時に何か起こっているのだと思うのですが・・ 立ち状態のインスタンスのIDを保存して、攻撃やダメージの際に、 instance_changeを利用しています。 立ちインスタンス←ここのIDを保存している └攻撃1インスタンス └攻撃2インスタンス └ダメージインスタンス if(adjust){ if(player == 1 && global.cpu_1){ x = (global.com1).x + (global.com1).hspeed + posx; y = (global.com1).y + (global.com1).vspeed + posy; }else if(player == 2 && global.cpu_2){ x = (global.com2).x + (global.com2).hspeed + posx; y = (global.com2).y + (global.com2).vspeed + posy; }else if(player == 3 && global.cpu_3){ x = (global.com3).x + (global.com3).hspeed + posx; y = (global.com3).y + (global.com3).vspeed + posy; }else if(player == 4 && global.cpu_4){ x = (global.com4).x + (global.com4).hspeed + posx; y = (global.com4).y + (global.com4).vspeed + posy; } }
インスタンスを変更すると、1ステップの間そのインスタンスは 「存在するけど存在しない」みたいな不安定な状態になるらしくて 「instance.variable」みたいにドット使って変数を参照するとエラーになる。 やっかいなのは、インスタンス自身は存在するので instance_existsとかでチェックできないこと。 対策としては、with使ってその中で変数使えばエラーは出ない。 with (global.com1) { other.x = x + hspeed + other.posx; other.y = y + vspeed + other.posy; } みたいな感じで(withの中ではotherが元のselfになるのに注意) インスタンスの変更は変数の継承がらみでもややこしい問題があるので、 できるだけ使わずにすませた方がいいよ。 この場合、オブジェクト一つだけでよくない? 当たり判定はmaskで変えられるよ。
>>827 なるほど・・わかりやすい説明ありがとうございます。
ダメージモーションの種類が4、攻撃の種類が40、その他死亡モーションや、
予備動作などがあって、一つのオブジェクトで作ると、
俺の頭がこんがらがってしまったので分けましたが、
実際のところは分けないほうが最終的にわかりやすいんだろうなぁ・・。
やっぱり自分の力量に応じて仕様というか、
ある程度妥協した方が結果的にいい場合もあるんでしょうね。
モーションってのがただ単にスプライトのことだったら、スプライトの入れ替えだけで済むし(sprite_indexの変更)、 全てのスプライトを1つにまとめて、subimageの値を決めることでも解決する。(image_indexの範囲指定) スプライト以外だとしても、そのインスタンスの状態(ダメージ、攻撃中、移動中等)で場合分けをするといいだろうね。(step内でswitchを使って場合分け) インスタンスを変えるということは、今あるインスタンスを削除して、新しくインスタンスを作るということ。 敵を攻撃したり、ダメージを受けたりする度に自分が生まれ変わるってのも変な話だよね? インスタンスを変えていると、システム的なエラーだけじゃなく「エラーメッセージは出ないけど、自分の意図した通りにならない」というエラーも起こりやすい。 だから、場合分けをインスタンスの変更でするんじゃなくて、オブジェクトの中で場合分けをするように作っていく方がいいよ。
さっきレジストしたんですが、バックアップCDってのは別にいらないですよね?
特定のボタンを押したり画面内のボタンをクリックしたらいったんその画面の動きを止めて 画面上に別のメニュー画面などを表示させたいのですがどうすればいいでしょうか。
>>831 お手軽なのはshow_menu。当然メニューとしてはしょぼいけど。
キー操作だけでよければ、keyboard_waitでループ回しつつ
キー処理をしてメニューをがしがし描き変えるという方法がある。
サンプルで付いてくるasteroidsが参考になるかな。
ただ、このやり方はメニューの構成が複雑になると厳しい。
一般的なのはポーズする時にグローバル変数を設定しておいて、
他のオブジェクトはその変数が立っている間動きを止めるというもの。
ただ、止めないといけないものは意外とたくさんあるので(gravityだとか
alarmだとかアニメーションだとか)、ゲームが複雑になるにつれて
ちゃんとメンテするのが難しくなってくる。正直労力に見合わない。
本格的にやるなら、background_create_from_screenで
今の画面を背景画像に設定してから
instance_deactivate_allでインスタンスを全部非アクティブにしてしまう。
それからメニュー用のオブジェクトを配置する。
これならマウス使ったりメニューオブジェクトを動かしたりするのも自由だし、
メニュー抜ける時の後始末さえしっかりやれば一番実装しやすいと思う。
833 :
名前は開発中のものです。 :2008/03/23(日) 14:48:57 ID:CEb9FX4l
タイトル画面のメニューとして使うスプライトを外部から読み取ろうとしているのですが、 (Start/Option/Endの3項目があるとして) 1) あらかじめ3つの項目を横一列に並べた画像「title.gif」を作っておく。 ゲーム実行時にtitle.gifから、3つのサブイメージを持ったスプライト「sprite_title」を作る。 3つのオブジェクト「obj_start」「obj_option」「obj_end」のスプライトを全て「sprite_title」に設定する。 image_singleを、obj_startは0、obj_optionは1、obj_endは2に設定する。 (つまり、3つのサブイメージを持った1つのスプライトを使い、表示させるものを変える) 2) あらかじめ3つの画像「start.gif」「option.gif」「end.gif」を作っておく。 ゲーム実行時にそれぞれの画像をロードして、「sprite_start」「sprite_option」「sprite_end」の3つのスプライトを作る。 オブジェクト「obj_start」に「sprite_start」を割り当てる。他二つも同様。 (このとき、1つのオブジェクトに対してサブイメージは1つだけ) 1と2でメモリ浪費等で違いはありますか? できれば1の方法を使いたいのですが、そうするとそれぞれのオブジェクトが、 表示されないサブイメージを2つずつ持っていることになり、これは無駄になるのかなと。 ならないのであれば、不要になったときに消すスプライトが一つで済むのですが。 詳しい方、教えてください。
試してないからわからないけど、多分同一スプライトを複数のオブジェクトから参照しても、 メモリ上にスプライトを複製するようなことをしない、と思う。。。 1の方法でいいんではないかな。
その「sprite_title」がグローバル変数で、ロード(sprite_add)を1回しかしないなら スプライト1つ分のメモリしか使わない。ローカル変数でそれぞれのオブジェクトが 個別にsprite_addするなら、当然スプライト3つ分のメモリを使う。 なので(1)と後者の方法の組み合わせだとメモリを無駄に使うことになる。 他の組み合わせだと使用量は同じかな。 でも、メモリの節約だけが目的なら、単にスプライトのプリロードをオフにする (GM5の場合は遅延ロードをオンにする)で十分だと思う。 これだと必要な時に自動的にロードして、ルームの終了時に自動的に解放もしてくれるよ。
837 :
名前は開発中のものです。 :2008/03/24(月) 17:37:42 ID:M/9alYxD
複数の地面になるオブジェクトを並べてジャンプ後に着地するように設定したんですが、 横一列に並べているのに着地位置が縦1マス分ほどあいまいになってしまいます。 bounding boxも隙間なく設定しているんですがなぜでしょうか?
言語ファイル対応させろよ・・・
>>837 地面にぴったり着地しなくて、宙に浮いた状態になるってこと?
Collisionイベントに「move to contact」のアクションは入れてる?
>>837 >>840 の解説。
衝突が起きたとき、相手がSolidだと自分は衝突前の位置に戻される。
例えば床との距離が5あって、自キャラが3の速度で落下していたとき、
次のステップで床との距離が2になって、さらに次のステップでは床にめり込む。
このめり込んだ瞬間に、床にSolid判定がついていたのなら、
衝突が起きる一つ前のステップ、つまり床との距離が2の時の位置に一旦戻される。
たまに浮いてしまうのはこのため。
Collisionイベントに「move to contact」のアクションを入れてやることで、
「(めり込んだ後、一旦1ステップ前の位置に戻してから)床に接する位置に移動させる」
という過程で、床にぴったり着地させることができる。
842 :
名前は開発中のものです。 :2008/03/25(火) 04:38:59 ID:6z3i9o/6
質問に答えていただきありがとうございます
843 :
名前は開発中のものです。 :2008/03/26(水) 21:43:48 ID:paW4cEkf
すいません、質問で今アクションゲームを作っているのですが、 スマブラのAボタンのコンボみたいなものを作りたいと思っています。 どうすればできるでしょうか。GMLじゃないとできないとかなんでしょうか。 もしGMLじゃなくてもできるのであればご教授お願いします。 下手糞な文章ですいません。
844 :
名前は開発中のものです。 :2008/03/26(水) 21:45:56 ID:paW4cEkf
すいませんVer.5.3Aです。
845 :
名前は開発中のものです。 :2008/03/26(水) 21:46:16 ID:paW4cEkf
すいませんVer.5.3Aです。
スマブラのAボタンのコンボみたいというのが、漠然としすぎてよく分からない もっと具体的に
847 :
名前は開発中のものです。 :2008/03/26(水) 22:17:44 ID:paW4cEkf
1個目の攻撃のモーションが出た後につづけて攻撃ボタンを押すと、 2個目の攻撃モーションがつづけて出るみたいのにしたいんです。 パンチ→パンチ→キックみたいな。
>>847 アクションあまり詳しくないからこれでいいかわかんないけど
アラームイベント2個組み合わせてコンボ入力受付期間を作ってみたらどう?
まずオブジェクトにコンボアクション発動許可用変数を用意し”0”を初期値に。
攻撃ボタン押したら1回目の攻撃を行わすとともに1つ目のアラームを起動させる。
1つ目のアラームがタイムアップしアラーム内アクションにコンボアクション発動許可用変数を”1”にして2個目のアラームを起動させる。
2個目のアラームがタイムアップしたらコンボアクション発動許可用変数を”0”に戻す。
攻撃ボタンはコンボアクション発動許可用変数が”0”の時と”1”の時で攻撃が変わるようにIf a variable has a valueで分岐させる。
とかそんな感じだと思うけど・・・まずはアニメーションスプライト用意して通常攻撃モーションとコンボモーションを作成してみては?
そこらへんはもうできてるかもしんないけど・・・
849 :
名前は開発中のものです。 :2008/03/27(木) 08:42:25 ID:bXR6vAZf
ご丁寧な返答ありがとうございます。 またわからないことがあったら聞きに着ます。
850 :
名前は開発中のものです。 :2008/03/27(木) 09:37:30 ID:bXR6vAZf
「攻撃ボタン押したら1回目の攻撃を行わすとともに1つ目のアラームを起動させる。」 の部分でアラームイベント内にどんなアクションを入れたらいいんでしょうか。 ご教授お願いします。
851 :
名前は開発中のものです。 :2008/03/27(木) 13:17:57 ID:bXR6vAZf
解決することができました。ありがとうございます。
852 :
名前は開発中のものです。 :2008/03/27(木) 20:38:31 ID:bXR6vAZf
質問なのですがアニメーションをループさせず一週でとめるにはどうすればよいのですか?
>>852 アニメーションエンドイベントで
image_index を最後の番号(絵が18枚ならindexは0〜17なので、17にする)にして、
image_speed を 0 にする、とか。
背景をタイル張りにせずにビューについてこさせるためには どうすればいいのでしょうか?
一枚絵の背景画像を view についてこさせたいってことなら、 背景画像の表示位置は、background_x[0..9] と background_y[0..9] の変数で管理されてるんで、 0番目の背景を0番目のview左上角位置に調整したければ、 ステップイベントで以下のコードを記述すればよい。と思う。 background_x[0] = view_xview[0] background_y[0] = view_yview[0] 背景画像がタイル化指定していたら、無効かもしれない。
特定のインスタンスを常に手前側に表示させるって方法がありましたっけ? あったら教えてくださると嬉しいです。
>>856 文にミスがあったので修正
×方法が
○方法って
depthを小さくさせる、かな。 depthが小さいほど手前、大きいほど奥に表示される。 例えば-10、0、10の3つがあったら-10が一番手前に表示される。 手前に表示したければ、その特定のインスタンスのdepthを他より小さくすればいい。 デフォでdepthは0になってるから、特に何もしてない限りdepthを-1にすれば済むはず。
>>860 落として見たわけじゃないけど、viewの座標は
「End stepイベントの後」かつ「Drawイベントの前」に更新されるので
StepイベントやEnd stepイベントで他の座標をviewに合わせても
描画の時点でずれてしまうという問題がある。たぶんそれじゃないかな。
一般的な解決法は「Drawイベントでviewに合わせて描画する」なんだけど、
背景の描画はDrawイベントより前に実行されるのでこのケースでは厳しい。
この場合、ルームの背景自体はなし<no background>にして、
かわりにうんとdepthの大きいオブジェクトを一つ用意し、
そいつに背景を描画させるのがいいと思う。
Drawイベントの中で
draw_background(background0, view_xview[0], view_yview[0]);
みたいな感じで。
862 :
名前は開発中のものです。 :2008/03/31(月) 06:36:23 ID:/Z2PGPfr
アクションゲームで被ダメージのイベントを作りたいのですが、 敵の様々な攻撃を「敵の攻撃」と、一つにまとめられないでしょうか。 「このオブジェクトに衝突したらダメージ、このオブジェクトにも衝突したらダメージ」と オブジェクトの数だけ記述しているような状態を何とかしたいのですが。
>>861 解決しました。
ありがとうございます。
>>862 そのためのparent
適当なオブジェクトを一つ作ってobj_damage_parentとでも名付ける
ダメージ元のオブジェクト全部でそいつをparentに指定する
(Advanced modeをオンにしないとparentの設定は出てこないので注意)
後はobj_damage_parentとの衝突イベントだけ作ればOK
865 :
名前は開発中のものです。 :2008/03/31(月) 23:28:59 ID:/Z2PGPfr
>>863 >>860 のファイルちらっと見たけど1つだけ
オブジェクトとかスプライトとかサウンドのリソース名が同じものがいくつかあるけど
別の名前にしておいた方がいいよ
あっとそれから名前に”-”や”?”をつかうのもダメだったと思う メニューの「Scripts」→「Check Resource Names」で チェックしてみ <No name conflicts were found>と出るようになったらok
868 :
名前は開発中のものです。 :2008/04/03(木) 12:01:14 ID:LCg7Ks7Z
ライフバーの機能を使ってみようと思い、マウスの位置に合わせて描画されるように作ったつもりなのですが全く描画されません。 どこら辺が間違っているのでしょうか? Sprite: <no sprite> Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Step Event: set the health to 50 draw the health bar with size (mouse_x,mouse_y,mouse_x+200,mouse_y+30) with back color white and bar color blue
drawアクションはdrawイベント内で実行しよう
870 :
名前は開発中のものです。 :2008/04/03(木) 12:26:59 ID:LCg7Ks7Z
単純なことであるのに質問に答えていただき誠に感謝します。
871 :
名前は開発中のものです。 :2008/04/03(木) 15:31:34 ID:hpoNHotE
livesのイメージって縦に出来ない?
>>871 draw Livesアクションは横方向でしかならべられないのね。GMLでかいたらこんな感じかな?
drawイベントに「Execute a piece of code」で
for(i = 0; i < lives; i +=1)
{
draw_sprite(ライフ表示用スプライト名,-1,先頭のスプライトイメージのX座標,
先頭のスプライトイメージのY座標+sprite_get_height(ライフ表示用スプライト名) *i);
}
Draw Live Images アクションだった^
874 :
名前は開発中のものです。 :2008/04/04(金) 05:13:29 ID:xKOenXkz
おー、縦にできた。ありがとう
875 :
名前は開発中のものです。 :2008/04/04(金) 05:21:13 ID:xKOenXkz
ってこれ減らした時に下から減っていくのは仕様なのか
+を-にしたりすれば上下逆もできるんじゃ?
877 :
872 :2008/04/04(金) 06:59:11 ID:GCwfYrIO
>>875 氏
仕様というかそういうんじゃなくて
draw_sprite()は描画イベントでスプライトを表示させる命令
sprite_get_height()は指定したスプライトの高さを調べる命令
そんでdraw_sprite()命令をfor文を使って単にライフの数だけ繰り返してる
for()の中で”i”は初期値が”0”で1回処理されるごとに1づつ増えていくからsprite_get_height()*iとすることで
スプライトの高さだけずれて描画されていってる
>>876 氏のいう様に”sprite_get_height(ライフ表示用スプライト名) *i”の前の符号を-にしたら下から上になる
878 :
名前は開発中のものです。 :2008/04/04(金) 08:31:17 ID:xKOenXkz
なるへそ。 ちょっと考えればわかることだね、お恥ずかしい。 勉強になります、ありがとう
879 :
名前は開発中のものです。 :2008/04/04(金) 11:47:17 ID:UN21xGR5
クリックした時にそのクリックした位置が そのオブジェクトより上だったならそのオブジェクトの画像を後ろ向き、下なら前向き、左なら左向き、右なら右向き・・・ってな感じで変える方法は無いでしょうか? 右斜め下とか8方に作りたいのです。 それとクリックした位置にオブジェクトを移動させる(一瞬でじゃなくそこまでの道程を通って)のはどうすれば良いのでしょうか? 初歩的な質問ですみませんがよろしくお願いします。
880 :
名前は開発中のものです。 :2008/04/04(金) 23:37:08 ID:atXFd6s2
881 :
名前は開発中のものです。 :2008/04/04(金) 23:44:49 ID:atXFd6s2
882 :
名前は開発中のものです。 :2008/04/05(土) 01:54:06 ID:28WyvbPP
>>881 すみませんがGM6なので開くことができません・・・。
それともGM6で開く方法もあるのでしょうか?
883 :
名前は開発中のものです。 :2008/04/05(土) 04:41:45 ID:/7lMTMqT
Object1 Step Event: set variable image_angle to direction Object2(追尾させたいスプライト) Step Event: if left mouse button is pressed for all honoo: perform a step towards position (mouse_x,mouse_y) with speed 10 stop at solid only GM6だと開けないのか〜
俺普段はGM5使ってるけど 中身見る用にGM7も入れてる
885 :
名前は開発中のものです。 :2008/04/05(土) 05:54:37 ID:/7lMTMqT
書き間違えました。 上から7行目のhonooってのはObject2のことです。
ここの住民的にニコニコ動画(VS)ってどうなんだ? 外部データからキャラクターの追加とか 結構システム設計まわりをがんばってるみたいだが。
887 :
名前は開発中のものです。 :2008/04/05(土) 13:27:36 ID:/7lMTMqT
なかなか良いと思ってるよ。 キャラを後から追加できるなんて良心的だよね。 俺ならキャラデータを丸ごとexeにブチ込んでアップデートのたびに 大容量のデータをいちいちダウンロードさせてる所だよ。 開発が長引いたのはうp主が忙しかったからかな?
888 :
名前は開発中のものです。 :2008/04/05(土) 14:18:21 ID:28WyvbPP
後から外部からデータ追加とかどうやってるんだろ
889 :
名前は開発中のものです。 :2008/04/05(土) 14:52:56 ID:/7lMTMqT
Replace a sprite from a fileを使えばおk
890 :
名前は開発中のものです。 :2008/04/05(土) 21:57:34 ID:/7lMTMqT
自らを生成したオブジェクトを指定する関数っていうのはありますか?
>>890 ないので自分で誰が作ったか覚えておかないといけない。
・instance_createは生成したインスタンスのIDを返す
・自分自身のインスタンスIDはidでとれる
ので
aaa = instance_create(x, y, object0);
aaa.createor = id;
としてやると、object0の中からはcreatorで自分を作ったインスタンスを参照できる。
892 :
名前は開発中のものです。 :2008/04/06(日) 14:46:53 ID:+Z1B7XWC
893 :
名前は開発中のものです。 :2008/04/06(日) 15:05:43 ID:EU0AU+S4
オブジェクトBの位置までオブジェクトAが移動して、オブジェクトBの位置についたら移動を停止する。というのはどうすればよろしいのでしょうか?
894 :
名前は開発中のものです。 :2008/04/06(日) 17:03:33 ID:+Z1B7XWC
>>893 step towardsのx座標に「ObjectB.x」y座標にも同じく「ObjectB.y」って入れれば
ObjectBが目標の座標になるよ。
895 :
名前は開発中のものです。 :2008/04/06(日) 17:45:37 ID:EU0AU+S4
>>894 おお・・・こんな簡単に・・・ありがとうございます><
896 :
名前は開発中のものです。 :2008/04/06(日) 18:30:55 ID:EU0AU+S4
すみませんがもう1つお願いします。
現在このようなゲームを作っているのですが↓
http://gamdev.org/up/img/11284.zip クリックした時、オブジェクト0が進行方向(オブジェクト1のある方向)と
同じ向きの矢印スプライトに変化する様にするにはどうすれば良いのでしょうか?
解り難い説明ですみませんが、ご存知の方よろしくお願いします。
897 :
名前は開発中のものです。 :2008/04/07(月) 00:07:19 ID:ip9v6GLB
898 :
名前は開発中のものです。 :2008/04/07(月) 05:30:29 ID:wG6ko/jv
>>896 zip落せなかった;;
image_angleの値をdirectionにすれば楽にできるけどレジストバージョンしか出来ないかもしれないから、
レジストじゃなかったらdirectionの角度ある程度の範囲になったらになったらChange the spriteを使う方法があるよ
大雑把な説明だけどzipがどんなのか確認できたらもっとわかりやすく書くかも。
899 :
名前は開発中のものです。 :2008/04/07(月) 09:53:52 ID:PrCqy7fg
900 :
名前は開発中のものです。 :2008/04/07(月) 13:17:17 ID:wG6ko/jv
私のはGM7なのであえて記述させてもらいます Information about object: object0 Sprite: sprite2 Step Event: perform a step towards position (object1.x,object1.y) with speed 5 stop at solid only set variable image_angle to direction Information about object: object1 Sprite: <no sprite> Mouse Event for Glob Left Button: move to position (mouse_x,mouse_y) なお、これはレジスト用です、レジストでない場合はimage angleが使えないので Ifステートメントとchange spriteを組み合わせるしかないでしょう。 私はまだ日が浅く、その場合の方法は考え付かなかったので非公式サイトあたりで聞いてみてください。
某東のほうのSTGの魔女っ娘みたいな極太レーザーを表現したいんですけども どうすれば極力ゲームが軽く仕上がるでしょうか?
>>901 いまどきのマシンスペックなら少々無茶やっても速度落ちないと思うけど?
ただimage_xscale,image_xscaleでスプライトを拡大すると処理負荷がかかるっていうのはあるのかな?
以下gamemaker helpの「ゲームの仕上げ」→「ゲームの速度について」より引用
>ほとんどのグラフィックカードは、効果的に画像を拡大することが出来ますが、その処理のために重くなります。
だそうです
自分は400×480のルームに画面半分近いぐらいのボスを作ってみたけど
PVマシンでもルームスピードが落ちることはそうなかったですよ?
んで純粋にレーザーの作り方はというと
普通に弾撃たす処理と対して変わらないかと思います。
要はレーザー発射源オブジェクトのインスタンスよりレーザー用のインスタンスを切れ目なく生成して
その時一緒にdirection,speedの数値をレーザー用のインスタンスに与えてあげたらいい。
切れ目なく生成するというのはアラームイベントを使えばよくて、この時「number of steps」の数値が大きすぎると
レーザー1コマ1コマの間が長くなるから隙間が生じる。
答えになってるかどうか心配ですが。一応ここまででレス切っておきます。
GMに興味あるんだけど、ここ見てると書式結構独特ぽいな… やってる人はけっこうサクっと順応できたのかな。
>>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;
>>902 後者で試してみようと思います
ありがとうございました!
906 :
900 :2008/04/09(水) 03:31:08 ID:R1oJ6a1A
>>904 ああ、そうなのかー…なるほどなあ…
わざわざ丁寧にありがとうございます。
以前豆乳システムとかもいぢってたんで、
C言語に似てるなら結構早めに覚えられそうですね。
907 :
名前は開発中のものです。 :2008/04/09(水) 06:41:45 ID:n+SEEGKi
自分はhspでゲームが簡単に作れるって聞いたもんだから実際に触ってみたらサッパリ理解できなかった。 それに比べてGMなら2週間くらいで大体使えるようになった。
908 :
名前は開発中のものです。 :2008/04/11(金) 18:09:33 ID:AT/nfPM9
>>900 遅くなりましたがありがとうございます。
レジスト、というのがどのような物なのか解りませんが・・・。
それとスレ違いかも知れませんが非公式のフォーラムに書き込むことが出来ないのですが私だけでしょうか?
909 :
名前は開発中のものです。 :2008/04/11(金) 20:34:53 ID:LqedxyKD
非公式サイトはユーザー登録してからフォーラムで「新規に投稿」押せば書き込めるよ。 あとレジストは料金を支払って制限解除したバージョンのこと。 良く分からない単語使ってゴメンネ
910 :
名前は開発中のものです。 :2008/04/11(金) 20:37:53 ID:EEx5djbh
>>908 レジストとは、お金を払ってプロダクトキーを貰い、使用制限を解除することです。
おおう、更新すれば良かったorz
912 :
名前は開発中のものです。 :2008/04/12(土) 11:01:55 ID:eNZFgCaH
>>909 ,910
ありがとうございます。
なるほど、有料登録ですね
ちょっと参考までに、日本語圏でのGM作品を見てみたいんだが、 有名所で、GM作品を公開してる人っているかい?
914 :
名前は開発中のものです。 :2008/04/18(金) 20:35:49 ID:xHO8JEqh
ニコニコのミックマンXやニコニコアクションゲームとかなら知ってるけど。 ニコニコでgamemakerを検索するとちょっぴり出てくる。
これダウンロードできなくね?
916 :
名前は開発中のものです。 :2008/04/27(日) 11:06:31 ID:CLNLyEnS
英語だらけだから難しいよね 俺もダウンロードするのに一日かかった
登録しねーとDLできないのか?
6.1で3Dポリゴンにテクスチャを張りたいのですが、色々試しても黒く表示されるだけでどうにも…… どうコードを組めばうまく表示されるか誰かアドバイスくれませんか?
その「色々試した」の中身が重要なわけだけども。 まあ、仮にテクスチャはちゃんと取れているものとして。 描画するのにcolorが付かない方のd3d_vertex_textureを使ってるとすると その場合テクスチャは現在設定している色でブレンドされる。 draw_set_colorしてないと初期値は黒だから、結果も真っ黒になるよ。 もしそうだとしたら、先頭でdraw_set_color(c_white)してみて。
>>920 ありがとうございます!
まさしくそれでした(^^;
こんな簡単なミスだったとは……
すごい漠然とした質問なんですが 画像を1、2、3って表示させるときに 1の画像が前面、3の画像が背景側に表示させる方法ってあります? GML非公式サイトでdraw関連のコードがあまり説明されてなかったので。。。
簡単なのは 画像1 画像2 画像3 をスプライトに持つオブジェクトを作って、 depth で指定する方法。 depth の数値が大きくなると上に重なる。はず。 draw イベントで処理したいなら、基本的に画面上に上書きされるので、下になるほうを先に描画すればいい。
305をそのまま使って、新しいオブジェクトを作って設置し 、すり抜けてみたんですが、solidにチェックがついてない のに、接触した状態で立ち止まると、壁にはまったときと 同じ動作になってしまいました・・・ 座標チェック時に、対象インスタンスIDがSolid属性の場合のみ 壁判定という動作にしてみようかと、以下のようにやってみんですが うまく動かないようです・・・ nulld = !place_empty(x-1,y) if nulld.solid == 0 { 壁回避コード } うーん。。。コリジョン難しい
place_emptyが返すのはIDじゃなくてtrue/falseだから…… 相手のIDが欲しければinstance_place使う。 solidの判定も逆のような気がするけど、それ以前にそもそも place_free使えばsolidのオブジェクトだけチェックしてくれるよ。
>>925 なるほど。。。そうだったのか。
ありがとうございます。
うー、日本語マニュアルがほしぃ。。。
逆に考えるんだ、「英語の勉強になる」。そう考えるんだ。 トェェェェイ ところで、これで某有名同人弾幕シューティングの二次創作tkっているが 弾幕ww、弾幕が再現できねぇwwww
仲間発見
>>927 俺は某同人弾幕STG風オリジナルSTG(つまりパクり)作ってるが、まずはn-way弾を発射するスクリプトを書くんだ!
ロードの際「セーブデータのフォルダがある」「ゲームのセーブデータがある」時だけロードボタンを押せるようにしたいのですが そういったデータの有無を内部で確認させる方法はありますか?
exist系のを使えばできるはず。directoryとかfileとか。 マニュアルで検索かけてみ。
>>927-929 こんなに俺がいたとは
今ではn-wayを手動でやってたときが懐かしいです
板違いなんでしょうが、 シューティングとかで弾を撃つアクションはどれになりますか? 誰か教えてくださいな〜
「シューティングで弾を撃つアクション」とか、「RPGで敵を攻撃するときのダメージ設定」とか、 そういった類のアクションはなく、自分なりにデザインして、自分で一から作るのがGM。 簡単に言えば、弾を撃つってことは、弾というオブジェクトを作り、それをある速度で飛ばせばいい。
……でも、もし弾幕STG作るんだったら、弾幕風で事足りる気がする。連投失礼。
>>934 なるほど。。オブジェクトを作って飛ばす訳ですか。
大体解りました〜ありです。
今934さんに教わった後頑張って色々やったのですが、 何点か分からない点や仕方のわからない点が出てきました。。 もし良かったら教えてください。 ・弾の発射に間隔を付ける方法 ・一部状況下(俺の言いたいのはジャンプ中)での発砲不可 ・一定の数の弾を発射後何秒間か使用不可(要するにリロード) ・↑の間モーションが入るようにする方法 教えてください〜
>>937 は変数について理解してるか?
上三つは、変数が必要になる。
・弾の発射に間隔を付ける方法 → 発射可能を表す変数
・一部状況下(俺の言いたいのはジャンプ中)での発砲不可 → ジャンプ中かどうかを表す変数
・一定の数の弾を発射後何秒間か使用不可(要するにリロード) → 残弾数を表す変数
そして条件分岐だ。上から順に、
・弾を撃つ際に、発射可能変数を条件分岐に使い、可能の値だったら(例えば1)弾を撃てるようにする。そうでなければ何もしない。
で、弾を撃ったら 変数を不可能を表す値(例えば0)にして、タイマーイベントを発動。(アクションのタイマーを利用する)
タイマーイベント中で変数を可能状態(1)にする。
・着地状態からジャンプに移行したときに、ジャンプ中を表す変数の値をジャンプ中の値(例えば1)にする。
ジャンプの状態から着地状態になったときに、変数の値を着地状態(例えば0)にする。この変数を使った条件分岐を、撃つ時の条件に加えよう。
・弾を撃つごとに残弾数を減らす。弾を撃つときに条件分岐を付け加え、残弾数が0ならリロードモーション(自作するべし)を起こすようにする。
リロードのモーションは、モーション専用のオブジェクトを作って、オブジェクト変更アクションを利用するのがいいかもしれない。
そのときは、モーション専用オブジェクトで、モーションが終わったら元のオブジェクトに戻すことを忘れずに。
アニメーションエンドイベントをうまく利用すると楽かもしれない。用語とかでわからないことは、
>>1 の非公式サイトで調べてみ。
長文・乱文失礼。
>>938 なるほど
それを行っている事を変数で表して、可能不可能をその変数の状態で判断させるわけですか
変数はあまり得意ではありませんが、色々やってみます。
ありがとうございました。
あ、後ここでこうやって質問して良い物なんですか?
板違いじゃないかとずっと気がかりでして。。
>>939 まあ、過疎ってるし個人的にはいいんじゃないのかなとは思うけど。
質問以外の話題がほとんど無いし。。
教えてクレクレ君だらけになったらなったで、つらいんだけどねw
やっていく内にわからなくなってきました。。 発射可能を表す変数 これはなんと表すことになるんですか? 例として教えてください
n = 3 これを発射回数として 一回打つたびに-1してやって 0の時には打てなくすればいいのかな・・・ 俺も初心者だから参考にならないかも;
>>942 返答ありがとうございます。
そういうのの総合的な並べ方がわからないんですね〜
>>941 の文が分かりづらくてすみません。。
{ n = (n-1) if n > 0 { instance_create(x,y,bullet) } } こんな感じでしょうか・・・ もっといい方法があると思いますが自分にはわかりません;
>>944 ありがとうございました。
早速いじってきます〜
クリエイトイベントで isshootable = 1; //弾が撃てるか isjump = 0 ; // ジャンプしてるかどうか bulletNum = 3; //残弾数 [弾を撃つイベント] { if (isshootable==1 && isJump == 0) { if (bulletNum > 0) { instance_create(x,y,bullet); bulletNum -= 1; } else { } }
ゴメンミスッタ クリエイトイベントで isshootable = 1; //弾が撃てるか isjump = 0 ; // ジャンプしてるかどうか bulletNum = 3; //残弾数 [弾を撃つイベント] { if (isshootable==1 && isJump == 0) { if (bulletNum > 0) { instance_create(x,y,bullet); bulletNum -= 1; } else { // リロード 弾を撃つボタンでリロードする場合にはここに記述 // 他のタイミングでリロードしたいなら、この部分は要らない。 {リロードするアクション} bulletNum = 3; } } こんな感じで。
>>947 なるほど
そういう並べるのですか
また困ったらよろしくお願いします。
ありがとうございました〜
あ、あと撃ったときにタイマーイベント発生させるの忘れてたorz bulletNum -= 1; の下に、 alarm[0] = 30; // 30ステップ後にアラーム0イベントが発生。 としてくらさい。 インデントはかきこ時の見た目重視で全角スペース使ってるので、コピペだと動かないので注意。
いつもお世話になっております。
教えてほしいのですが、
>>853 がうまくいきません。
image_speed = 0にしてGifのアニメを一周で止める動作をさせたいと考えています。
Stepイベントにて以下のコードを動かしてみたところ、アニメがループしてしまいました。
//5枚目でストップ。
if image_index == 4 {image_speed = 0}
ご教授いただきたくお願いします。
951です。 書き込みをした直後、試行錯誤を続けたところ 原因が分かりました。 gifをゆっくり動かしたかったことから、以下のコードを入れていました。 image_speed = 0.2 これを以下の値に直したところ、「5枚目でストップ」が動作することを確認しました。 image_speed = 0.25 うーん、ただここでひとつ疑問が・・・ なんで「0.2」では動作しなかったのか・・・うーん 板汚し、すいませんでした orz
>>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の数値は全て浮動小数扱い。だが、整数のまま扱ってる分には問題ない、はず。
(私はプロじゃないんで…かじった知識程度で申し訳ない、間違ってたら指摘ヨロ)
まあでも、853で言ってるとおり Other > Animation End イベント使えば image_index判定する必要ないんだけども。 ちなみにあくまでStepイベントで判定するなら if (image_index + image_speed >= image_number) で Animation End イベントと等価になる。
FEっぽいゲームを作りたいんですが 移動範囲の求め方がわかりません; 1マスごとに-1するということだと思うんですが 具体的に書けなくて・・・ 教えていただけたら嬉しいです
>>956 そのサイトも見たんですがsearch関数というのがよく分からないです;
自分で作るものなのでしょうか・・・
>>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の場合は保存速度に戻す
}
>>958 image_indexじゃなくてsprites_indexでした。
あと、このコードじゃうまく動作しませんでした。
うーん。難しい・・・。
なんだかやりたいことが混乱してないか?
「困ったときは原点に戻る」
プログラム的なことは置いといて、まず何をしたいのかを考えてみ?
この場合はアニメーションが終わったら止める、だったよね?
Animation End Eventでimage_speedを0にすればアニメーションはとまるんじゃない?
多分これだけだと一枚目に戻って止まるかも知れないから、
止めた後にimage_indexを最後の数字にする。
つまり、
「アニメーションが終わったら、
・まずアニメーションを止めて、
・最後の画像を表示させる」
……
>>853 が言ってることと全く同じなんだが。
これで出来ないってなると、Step eventで毎回毎回image_speedを設定してるんじゃない?
もしそうだったらいくら止めても止まらないんだけどw
もしimage_speedが一定で、終わったらそれを止めたいってだけなら、 image_speedをCreate Eventで設定した方がいいよ。
>>960 ,961
なんていうか、いろいろとすいません。
うーん、そうですねぇ。「やりたいこと」…
「一定条件のみアニメを止める」っていう動作をさせたいんだと思います。
Object内で条件毎にコロコロspritesを入れ替えておりまして
spritesに一定の画像が使われている時に限り、「アニメを一周」させたかった訳です。
(キャラが走行中に立ち止まった時、着地した時だけ服が揺れるアニメ…等)
1、sprites変更後、「アニメ停止変数」生成
2、Animation Endにて「アニメ停止変数が1の時のみ、image_speed=0」
でやりたいことが実現できました。
うーむ。確かに原点に返ってみれば、単純な事だったのですね…。
板汚しすいませんでした orz
なにげにレス伸びてる・・・そろそろ次スレの季節なのかな?
>>950 です。
また質問に来ました。
HPを準備するまでは出来たのですが、HPの減らし方(ダメージ)がわかりません。。
後、自分的にはゾンビのような敵と戦わせたいので、
近づいたら(正確には近づかれたら)ダメージという形での使用方法も教えてください。
よろしくお願いします。
>>964 サンプルとか、
>>1 チュートリアルとかサイトに色々書いてるから自分でも調べてから書き込むことをオススメする。
>>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 :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)
>>965 >>967 さん
ご返答ありがとうございます。
なるほど、そういう風な式を立てればいいのですか〜
わかりました。ありがとうございました
>>968 一応聞いておくけどヘルプファイルもってる?
>>969 だいぶ遅れた返答ですみません。
F1のあれの事ですか?
英語で読めないです。。
971 :
名前は開発中のものです。 :2008/05/06(火) 12:57:24 ID:ndOoddgE
gamemakerで作った拡張子exeのゲームをPSPで遊ぶ事は出来ないのでしょうか?
GameMakerはWindows専用だ。マルチプラットホームなわけねぇだろ。
英文読んで試行錯誤してる者なんですが、仕様について質問です。 ルームに存在するオブジェクトをそのままにしてルームを移動した時って 移動前のオブジェクトはルームに取り残されるんでしょうか? 残ってしまうと、メモリとか変数管理によく無さそうな印象がありまして; また、もし破棄されないで残ってしまう可能性があるならば、っとルームに存在する 全てのインスタンスを破棄する時のコマンドを探しているのですが いまいち分からない状態です。 instance_destroy() ↑ all.xxxxとか?…。 ご教授お願いいたします。
マニュアルから一部抜粋。 ルーム関連(ルームの移動の際) 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文を使ったらいいんじゃないかな。
シェア版買った人いる?天候エフェクトが個人的に気になってるんだが… わざわざ一から天候を作るか、あるいはエフェクターに頼るか悩んでるんだ。 というか、普通背景の天候ってどう表現している?
>>970 >
>>969 だいぶ遅れた返答ですみません。
> F1のあれの事ですか?
> 英語で読めないです。。
遅れて返答ごめんねぇ
えっと、ヘルプファイルの日本語訳版があるのよ。yoyoにかわって7になってから
公式ではどこにあるかわかんなくなっちゃったけどhogehigeさんとこにもあるねぇ
6バージョンだけど十分使える
GMJ非公式情報サイトのリンク集↓
ttp://gamemaker.main.jp/modules/mylinks/ このページの下から4つ目がhogehigeさんとこにリンクしてる。
内容は1,2日程度で読めると思うからざっくり読んでみ?
役に立つと思うよ〜
>>976 組み込みのエフェクトはオマケ程度に思っといた方がいいかな。
あまり融通きかないし(大きさ3段階と色くらいしか変更できない)、
縦に長ーいルームだと下の方まで届かないみたいな不具合もあるし。
もちろん、自分でパーティクルを組めばけっこうなことができる。
でも、画面中火花で埋めつくすような派手なことしなければ
通常のスプライトとオブジェクトでも十分用は足りる。
一応レジストしといた方が、加算合成とか使える分だけ表現力も上がるけどね。
>>977 ここまで事細かに書いてあるのですか
教えていただき、ありがとうございます〜
鎖のような"たるんでる"感じになるように 連続した"鎖"オブジェクトを配置したいと考えているのですが なかなかうまい方法が思いつきません。 物体Aと物体Bの間を鎖オブジェクトが結んでいるような配置にするとして 物体間の距離が短い時は、鎖をたるませて 距離が長くなると、鎖が引き伸ばされるような演出ってできますでしょうか? お願いしますorz
>>978 大中小で色だけ、しかも切れるのか…レスサンクス。ちょっと残念だな。
独自に用意したスプライトを天候に適合できるってのなら、まだ良い演出つくれたかも。
それはそうとシェアじゃないと加算合成はできなかったのか、
そりゃ困るな…、シェア版買ってみるかな…
>>980 それはGMというより、数学の知識の方が必要だね。
「カテナリー曲線」で調べてみ?
>>982 うぅ、調べてみましたが、難しいんですねぇ。。。
紐の長さ、X軸間の距離からY軸の高さ(たるみ具合)を算出したかったけど
私の頭ではどうも・・・
ありがとうございましたm(__)mペコ
みなさんは衝突判定ってどうやってます? 衝突判定用コードを作るのはいいんですが オブジェクト(敵キャラ)の種類が増えた影響で オブジェクト毎に個別のコードを作らなくてはならないので 管理が難しくなってしまっています。 条件分岐で「何かのオブジェクトから衝突された」が「真」の場合 衝突してきたオブジェクトのインスタンスIDを抜き出して「真」の動作を 行わせたいのですが、何かよい方法はないでしょうか?
オブジェクトの継承を利用するのがよいかと。 例えば敵キャラが複数あるなら、次のように改造してみては。 敵キャラオブジェクト(obj_teki)というのを一つ作る。 しかし、obj_tekiには何も実装しないで、実際の敵キャラは別オブジェクトで作る(これは作ってあるものでOK)。 そして、その敵キャラオブジェクトの親オブジェクト(parent)に、obj_tekiを選ぶんだ。 こうした後、自キャラで obj_teki との衝突判定を設けることで、 obj_teki を親オブジェクトに設定した全ての敵キャラとの衝突処理が行えるようになる。 オブジェクトのタイプで条件分岐したければ、other.object_index の値をみればよい。 ※ 継承はアドバンスドモードじゃないと使えない とはいうものの、個人的には、 継承を利用した処理では共通のものだけに留めておいて、 敵キャラに応じた特別な処理がある場合のみ、 敵キャラのほうで処理させるほうがいいような気もする。
>>985 そんな方法が…、ありがとうございます。
なるほど、やっぱりレジスト必要なんですねぇ。
レジストで使いたい機能が増えてきたんで
さっき、決済してきました。
うーん、プロダクトキー発行って結構時間かかるものなんですかねぇ?
クレジット決済なら即発行ってイメージを勝手に持ってたので
未だに届かなくて不安ですねぇ
アドバンスドモードはレジストする必要がないぞw
6.1Aなんですが object_set_parent(id,obj_mob) で 「This function is only available in the registerd version.」を 吐かれているんですが、これってレジスト限定では?と思ったのですが いずれにしても、「image_angle」とか使いたかったんで 早とちり決済ではないんですが むしろ、さっきやった決済画面で入力ミスってないかどうかが心配… プロダクトキーまだかな。。。
>>988 ゲーム実行時にリソースを変更する機能は、確かにレジスト限定ですね。
parent設定は、オブジェクトの編集画面の左側でできますよ。
レジスト関連については、
>>566-572 >>574 が参考になるかと…。
日本ってノベルやRPG作るツールは結構作られてるんだよな まあ探せば色々ジャンル別に製作ツールあるんだが
1000も近くなんですが、質問させてください。 コマンドには「if」と「else」がありますが 「elseif」ってコマンドは存在しないでしょうか? ヘルプにも無さそうだったので… いつも以下のような書き方をしていまして、見た目がよろしくない状態です。 if { ---A--- } else { if { ---B--- } else { ---C--- } } 何か他にうまい方法は無いでしょうか?
else if でいい。 あと、場合によってはswitch文の方がいいときもある。念の為。
>>992 ( ゚Д゚)Σ
そうすれば{}でわざわざククル必要も無くなるっと…
そんなに簡単な事だったのですか… orz (イママデノクロウハ…)
ありがとうございます!助かります!
>>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の値によってイメージを選ぶようなコードを書かなくちゃいけない。
>>995 お疲れ様です
>>996 なるほど。ご返答ありがとうございます。
早速いじってきます〜ありでした〜
やっててわからないので再び聞かせていただきます。
もう1000近いので、いざという場合は次スレに返答をよろしくお願いします。
>>996 さんの文の
1番目のアイコンは使うにはレジストが必要という解釈でいいですよね?
レジスト。。してみようと思います。
そして、
>で、2番目はGM6以上使ってるなら image_angle = direction で終わり。
>GM5以前、あるいは向きによって複数のイメージを使い分ける必要があるなら
>directionの値によってイメージを選ぶようなコードを書かなくちゃいけない。
との文章がありますが、そのimage_angle = direction はどこに書き込めばいいのでしょうか
返答をお願いします。
>>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)」に変えてみて。
>>999 大体すべきことはわかりました。
ゲームオプションでマウスを消す方法って物がわからないので、
それを次スレで聞かせていただきます。
なお、このレスが1000であればGame Makerでゲームを作っている人は技術が向上します。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。