【2D】ゲーム作成ツー ..
417:名前は開発中のものです。
07/09/19 00:24:58 K3MABk9U
>>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
07/09/19 00:30:17 K3MABk9U
うは 先答者いたw
419:名前は開発中のものです。
07/09/19 07:42:02 PrEtAf1p
>>416-417
ありがとうございます
変数は一応使っていたのですが速度を変数にするのは気づきませんでした
420:名前は開発中のものです。
07/09/20 21:56:13 4DzNB1VD
横から視点のゲーム作ろうとしてるんだが乗れる床が作れない
ジャンプしたら着地したときに少し滑るって動きをさせてるんだが普通の横移動で突っかかったようになる
バージョンは7GMLなんて聞いたことない過去ログは読んでない
アドバイスくれ
421:名前は開発中のものです。
07/09/20 22:31:17 5F1p/CW6
度々すみません
強制スクロールにすると画面下のアイコンや上に表示したスコアがついてこず画面外に取り残されてしまいます
現在のビューにアイコンやスコア等を固定するにはどうしたらよいのでしょうか
422:名前は開発中のものです。
07/09/21 00:11:25 FZFc4C4q
>>420
引っかかる現象は落下処理に問題がある場合が多い気がする。
コリジョン(めり込み)状態だと横に移動するときに引っかかるよ。いったん床にコリジョンしたら、
『めり込してないが、接している状態にする』処理と、
『床に接している状態では落下しない』処理を
きちんと為されているか、見直してみて。
条件やタイミングによっては抜けてしまっているとか、結構アリガチ(俺だけかなorz)
>>421
スコアの表示位置をビューの相対座標にしてみて。横スクならviewのx座標、縦スクならviewのy座標斜めならどちらとも)
423:422
07/09/21 00:12:19 FZFc4C4q
すまん、途中で送信してしまった、
>>422
ビューのx座標、y座標を スコアの表示位置に加えてみて。
424:名前は開発中のものです。
07/09/21 07:17:49 Md866hct
レジストしていないgamemakerで作ったゲームは
配布しても、大丈夫なんでしたっけ?
425:名前は開発中のものです。
07/09/21 07:51:14 7psMFQgC
>>423
ビューの相対位置にするにはどこを設定すればいいのでしょうか。
それと画面下に能力アイコンを表示しておきたいのですがそちらも流れる画面に固定するのは可能でしょうか
426:422
07/09/21 11:07:48 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])
という式が成立するはず。よくわからんかったら、色々やってみて理解を深めてください。
長い説明ですまんです。
427:名前は開発中のものです。
07/09/22 00:59:29 GELRMyyp
てっきり、レジストしてないと配布してはいけないと
思い込んでいました。
428:名前は開発中のものです。
07/09/22 10:45:04 PfhgUac3
自キャラの真上に分身のようなものを出して自キャラと同じ動きをさせるにはどうしたらいいでしょうか。
429:名前は開発中のものです。
07/09/22 12:48:31 597IuagT
>>428
分身となるオブジェクトのSTEPイベントにJump to position アクションで以下のように設定してみては。
(自キャラのオブジェクト名をmyshipとします)
・x に myship.x とする。(myship と x とのあいだにピリオド( . ) を忘れずに!)
・y に myship.y - [自キャラオブジェクトの高さ幅]
xの値や、yのマイナス幅とかだけど、これはキャラの原点(origin)や画像のサイズに依存するんで
自分なりにアレンジして設定してみて。
430:名前は開発中のものです。
07/09/23 14:06:15 DKctpgDf
>>406のやり方だと画面上と左にははみ出ないのですが下にはみ出てしまいます。
これはどうすればいいのでしょう。
431:名前は開発中のものです。
07/09/23 16:53:43 x9nNhXjf
現在STGを作っており、自機を追尾するミサイルのような敵を
作りたいのですが、やり方がわかりません
どうすればいいのでしょう、ちなみにGMLはわかりません
432:名前は開発中のものです。
07/09/23 17:07:20 aQRdOqe9
>>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:名前は開発中のものです。
07/09/23 18:06:04 x9nNhXjf
>>432
成功しました、ご指導ありがとうございました
434:名前は開発中のものです。
07/09/24 14:43:07 rIfQxbjS
ウィンドウキャプションに文字を打つと後ろにスコアが表示されてしまいます。
スコアを表示させない方法はありますか?
435:名前は開発中のものです。
07/09/24 19:00:34 wo/XJGT8
スコアキャプション アクション (ウィンドウっぽいアイコンでSLHと書かれているやつ)
で、show score の部分を don't show に変更しよう。
同様のことをコード(GML)で記述するならば、
score_caption = false;
でOK。
いづれも、最初のイベントのほうでやれば良いと思うよ。
436:435
07/09/24 22:06:25 Avl9+fei
>>435での訂正。
GMLでの記述が間違っています。正しくは
show_score = false;
でした。また、score_caption という変数名は無く正しくは caption_score です。
caption_score は、キャプション部分で点数の直前に表示する文字列(デフォルトで Score:) を設定する変数のようです。
混乱させてごめんなさい。
437:名前は開発中のものです。
07/09/25 14:18:30 juBklLfh
ボスキャラなどにひたすら上下に往復する動きをつけたいのですが何を設定すればいいのでしょう
パスの使い方はいまひとつわかりません。
438:名前は開発中のものです。
07/09/25 23:10:07 wgthl9NZ
>>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:名前は開発中のものです。
07/09/28 22:00:48 +Qz3cTwT
>>422
遅くなってスマンがサクンス
Precise collision checkingってとこのチェックを外したら解決した
根本的解決にはなってないかもしれんが何とかなったww
もひとつ聞きたいんだが、gamemakerを使う上であればいいスキルってなにがある?
440:名前は開発中のものです。
07/09/29 01:28:10 OUsPaiyV
>>439
もしかしたら、キャラアニメのフレーム間で地面と接する位置が一致してなかったのかもね。
Precise collision checking がオンだと、キャラのドット絵自体が当たり判定になるから…。
チェックを外すと ドット絵に依らず Bounding Box が当たり判定となります。
GameMakerを使う上でのスキル、とは漠然とした質問(汗
まぁドット絵と音楽がある程度自作できると、楽しいかもね。(俺は満足に出来ん…orz)
GameMakerで色々したければ、GMLはやったほうが良いよ。ソースの見通しもよくなるし。
一番良い練習は、自分で作ってみたゲームのアクションをなるべくGMLで置き換えてみる作業かな。
また、Wikiにあがってるもの以外にも海外のサンプルとか漁って、
ソースを読むことが出来ればなおよいかと。(若干の英語力が必要)
441:名前は開発中のものです。
07/09/29 14:45:12 4bes+mi5
坂、というか斜面へのコリジョンやりたいんだけど
GameMakerってそういうの簡単に出来る?
これって基本はタイルベースでのマップ管理だよね?線分のリストとか逆に面倒そうだし
しょぼいサンプルじゃなくて、滑らかに坂を登ってそのまま平地を進む
みたいなの作れるレベルの人はいますか??
442:名前は開発中のものです。
07/09/29 19:23:42 9lJHmvQD
>>440
ドット絵とか音楽か・・・ちょっと本屋でいろいろ探してみますね
GMLも頑張ってみるw
英語力は辞書で補うwwwwwww
443:名前は開発中のものです。
07/09/29 20:01:59 F32aXzae
背景のちょっとした部分を動かしたりしたいのですが背景画像はアニメーションにはできないのですか?
444:名前は開発中のものです。
07/09/30 01:17:15 OYPKWvpr
>>441
こんな感じでいいかい?かなり粗い作りだけど。(バージョン 7.0)
URLリンク(gamdev.org)
スペースキーでボールが動くよ。
Precise collision checking に頼ったやり方だけどね。GMならではのやり方ともいえるんじゃないかなぁ。
ただ、Precise ... なコリジョンだと、実質タイルベースから開放される反面、融通の利かない場面もでてくるし、処理も重くなると予想されるね。
参考になれば。
>>443
背景画像は基本的にアニメーション出来ないよ。動かしたい部分にオブジェクトを配置するのが簡単な解決方法です。
スプライトによるアニメがどうしてもいやなら、動かしたい部分をタイルチップであらわして、
タイル管理オブジェクトを用意するなりして、そこから命令を出してタイルチップを定期的に変更して、アニメーションを表現する方法もあるにはあるけど、
結構手間がかかりそうな割りに、前者の方法に比べてメリットがあまり見出せません…。
445:444
07/09/30 08:23:59 J186ada5
度々ごめん。上で挙げたサンプルで、多少ギザついていた問題を修正した。
URLリンク(gamdev.org)
446:名前は開発中のものです。
07/10/01 02:57:41 uYTipwhK
>>444-445
おおー ありがとうございます
早速参考にさせてもらいます
これって本家や日本フォーラムでも話題にならないんですかね?
みんな矩形のカクカクしたマップで妥協してるのかな
447:名前は開発中のものです。
07/10/01 10:39:32 /4FfCvcD
てか最新版の日本語訳キボン
448:名前は開発中のものです。
07/10/01 13:21:12 m2qQgTFJ
ここにおられる人はゲーム作るのに数学は出来た方が有利だと思いますか?
僕は数学が苦手で2次方程式がようやく解けるくらいです。
449:名前は開発中のものです。
07/10/01 15:33:00 aKVg/NXF
>>448
出来なければ無理、というほどではないと思うけどある程度
数学の基礎知識はあったほうが有利だと思う。コマンドの幅が広がるはず。
あとはこのスレでよく言われてるGML、興味があれば勉強してみるといいかも。
勿論単純な作りのミニゲームとかをつくるならそういったことは気にせずに
直感的に組んでいっていいとおもうよ。それがGameMakerの長所でもあるしね。
450:名前は開発中のものです。
07/10/01 21:53:37 CZos6bFb
GameMakerってネット対戦できるものとか作れる?
451:名前は開発中のものです。
07/10/03 00:54:58 EFi7sI/b
バックグラウンドを途中で差し替えることは可能ですか?
452:名前は開発中のものです。
07/10/05 01:56:10 4xeppq1Q
>>450
できると思われ。公式のチュートリアルに、チャットとPongゲームのサンプルがあります。
ソースのみなので、実行するには GameMaker 7.0 Pro が必要になるけど…。
ダウンロード先 :
URLリンク(www.yoyogames.com)
>>451
背景画像は、background_index[0..7] という変数で設定されています。
ちなみに、0..7 は 0〜7 までのいずれかの数値がはいる、ということ。(配列)
また、背景は 0〜7番の8段階のレイヤで管理されているんで、最大8枚の背景を重ね合わせることができます。
たとえば、background1 という背景画像がリソースに登録されているとして、
背景レイヤ0番の画像をこれに変更したいときは、適当なイベント中に VARアクションを追加し、
variable に background_index[0]
value に background1
とすれば変更が可能です。
453:名前は開発中のものです。
07/10/05 03:26:55 wSCRnqHh
というかライセンスやらが絡んで日本語化が難しいんなら
メニューやらを日本語訳したテキストを製作者に渡せばいいんじゃねーの?
454:名前は開発中のものです。
07/10/05 17:34:54 g6B1FYU5
>>452
ありがとな
455:名前は開発中のものです。
07/10/05 21:13:00 hQr7IoXo
GM7でmbText 1.4.0とjFont Maker 2.2.0を使って日本語表示しようとするとエラーでるんですけどできないんですか?
456:名前は開発中のものです。
07/10/05 23:14:26 2NkJ/cbT
>>455
エラーの情報を詳しく書いてほしいです…。
どんなタイミングでどんなエラーがでたのか書かないと、何もわからんです。
あなたのPCでエラーが起きた現場を見た人はネット上にはいない。
少なくとも私の環境では GM7 Lite でも表示できましたが…。
457:名前は開発中のものです。
07/10/05 23:26:39 2NkJ/cbT
あー、わかった。多分。
mbtext_setfont() を呼んでないのではないでしょうか。
文字表示をする前に mbtext_setfont() 関数を呼んで、設定しないといけないです。
(リソースにスプライト用意しただけでは、実行時にどのスプライトがフォントとして使用するのか、また、どんなサイズなのかわからないから)
どっかのオブジェクトのクリエイトイベントかなんかで、Execute Code アクションを加えて、
mbtext_setfont( [全角のスプライト名] , [半角のスプライト名] , 「フォントメーカーで設定したサイズ(数値)」) ;
の1行を、加えてみてください。
これが違うなら、わからんです。。。
458:名前は開発中のものです。
07/10/05 23:28:05 PKPevRDs
タイピングゲームって作れますか?
>>1のサイトをざっと見てみたんですが、
キー情報の取得に関する関数がない気がするんですが。
459:名前は開発中のものです。
07/10/05 23:29:16 qYq6QO0A
できないものだとおもって書きませんでした。すいません。
実行してロードが完了すると
Unexpected error occured when running the game.
とでてきて、あとは
Access violation at addres..........
などというエラーがたくさんでてきて終了します
オブジェクトのコードはこんなんです
{
mbtext_setfont(spr_zen, spr_han, 20);
mbtext_draw("描画するテキスト", 0, 0);
}
なにがだめでしょうか?
460:名前は開発中のものです。
07/10/05 23:48:54 2NkJ/cbT
>>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 のチェックをはずしたり、
それでもだめなら、記号とひらがなだけ残して消して、ひらがなだけ表示させてみて、実験してみてください。
それで動けば、メモリ関係が原因かと思われます。
461:名前は開発中のものです。
07/10/05 23:52:58 2NkJ/cbT
訂正 : User Interfection でなくて、 User Interaction です…
誤字が多くてすまんです
462:名前は開発中のものです。
07/10/06 00:01:45 mQ8ag/BB
あ、すいません
最初から読み直してやってみたらできました
すいませんでした
463:名前は開発中のものです。
07/10/06 00:19:17 YdfEd/7r
>>460
ヘルプまでは読んでいませんでした。
あるんですね。どうもありがとうございました。
464:名前は開発中のものです。
07/10/08 16:04:54 4SbO/Zc7
画像をdraw_sprite_stretchedなどで拡大表示したときに、
当たり判定も一緒に拡大する方法はありますか・・?
当たり判定用の矩形オブジェクトを用意して、
オブジェクトを生成するときに大きさを引数で指定できるようにしたのですが、
肝心の当たり判定の大きさが拡大する前と変わらないままなのです。
128x64の判定を作りたいのに、32x32の判定しか作ることができない、といった状況です。
当たり判定の左上・右下座標を変数などで指定することはできるのでしょうか。
465:名前は開発中のものです。
07/10/08 16:48:44 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()
}
466:名前は開発中のものです。
07/10/08 17:34:48 qKmaq3uh
>>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)
URLリンク(gamdev.org)
F1 キーで簡単な説明でます。
467:名前は開発中のものです。
07/10/08 18:13:57 4SbO/Zc7
あれー・・?
解決するまではその方法を試してたんですが、
当たり判定が広がらず困ってました。
6.1だったからかな・・・?それともこっちの勘違い?
なんにせよ、ありがとうございました。
468:名前は開発中のものです。
07/10/08 18:30:38 qKmaq3uh
ごめん。7.0 のヘルプ に以下の一文が。
> Solved a bug in collision checking with scaled instances.
> 訳 : 拡大縮小されたインスタンスのコリジョン判定にあったバグを解決した
6.1以前だと、拡大されないみたいだね。こちらも 6.1 5.3A にて、動作しないことを確認しました。すみませぬ。。。
469:名前は開発中のものです。
07/10/08 18:56:22 NYq6HAI6
いえ、こちらこそバージョンを明記してなかったので申し訳ないです。
というかバグだったのか・・・。
470:名前は開発中のものです。
07/10/08 21:13:04 xMzu6E+i
厳密にいうと、スプライトを拡大した場合に当たり判定が
幅×image_xscale になるべきところが (幅-1)×image_xscale
になるバグがある。元のスプライトが大きければ目立たないが、
小さいスプライトだと顕著に。特に元が1ピクセルだと……
471:名前は開発中のものです。
07/10/10 07:59:27 xHCyvWv9
場面切り替えの際などに画面をだんだん暗くしていく方法はありますか?
472:名前は開発中のものです。
07/10/10 08:05:16 uuly2Ro8
>>471
画面のフェードアウト機能がないみたいな話があったはず
詳しくはこのスレのログを見ていって欲しいけど、代用としては
ディザ処理で透明から徐々に黒くなっていくアニメーションスプライトをつくって
それを表示、全体黒くなったところで画面切り替えってのがある
473:名前は開発中のものです。
07/10/10 18:44:46 clWDHbW4
劣化ウイイレのようなゲームを作ろうと思っていて、HSPかgamemakerで悩んでいるんですが、
gamemakerは、コートを固定しているカメラで見るように表示できるんでしょうか?
コートが常に四角く見えるんじゃなく、端っこのほうを見るときは台形のように見えるってことです
分かりにくくてすいません
474:473
07/10/10 20:49:07 clWDHbW4
考えてみたら2D作成用だし無理ですよね、
自己解決です、ありがとうございました
475:名前は開発中のものです。
07/10/10 21:23:33 4H4UcSWi
>>471
バージョンによるけど、GM7だと最初からRoom transitionに
フェードアウト・フェードインというのが用意されているよ。
GM6だと黒い四角を画面全体に半透明で描画するやり方がある。
まとめWiki↓にあるMs.PADDLERあたりを参考に。
URLリンク(gamdev.org)
GM5、あるいは未レジストなら>472かな。
>>473
レジストすれば3D機能も使えるんだけど、まあ3D向きでないのは確かだw
476:名前は開発中のものです。
07/10/11 00:10:35 bfULkcnK
GMLの文法ってC#に似てるみたいですが、
実際に使ってる人から見て似てると思いますか?
477:名前は開発中のものです。
07/10/11 02:26:20 MiBouJ8+
オブジェクトのプロパティとかアクセスするのは似てるかもしれない。
ただ、オブジェクトに任意の関数を持たせて
[object].[関数名](引数...)
というようなことはできない。(そもそもそういう文法がない)
※ ユーザーイベントとか駆使すれば似たようなことは出来なくはないと思うが、煩雑だし機能的にも制限が厳しい。
なもんで、完全なオブジェクト指向っぽい設計は難しいと思われ。
誤解を恐れずに言うと、個人的にGMLは、
構造体無し、変数のポインタや参照受け渡しの出来ないC言語っていう印象。
ただ、文字列操作はCよりかはマシかな。
478:名前は開発中のものです。
07/10/11 07:28:19 lfKlsL3a
いままでGM5で作っていたデータをGM7で起動して製作する場合消えたり変更されたりするデータはありますか?
479:名前は開発中のものです。
07/10/11 23:29:34 j9EjwRAb
>>478
スプライトとかオブジェクトとかは一応ちゃんと残るよ。
ただ、一部のアクションは「古いアクション」とか
「不明なアクション」てやつに置き換えられてしまって
中身が見えなくなる。7で編集を続けるつもりなら、
元のgmdをとっておいて見比べながら直さないと辛いかも。
いずれにせよ、5から6で色々削られたり変更になったり
してるから、それなりに書き直さないと動かないと思う。
480:名前は開発中のものです。
07/10/16 08:31:52 KDtruK3Z
これランゲージファイル対応してないの?
481:名前は開発中のものです。
07/10/17 13:07:25 NOHDADh4
「ボスの目の前一直線上に主人公が来たときボスが攻撃する」や「主人公がボスの上に移動したときボスが攻撃する」
など範囲を指定してそこにキャラクターが来た時行動を起こさせることはできますか?
482:名前は開発中のものです。
07/10/18 11:13:19 zjjlkNBl
>>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
07/10/18 11:16:42 zjjlkNBl
細かく誤字がある・・・まぁわかるかと・・・
484:482
07/10/18 11:43:05 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
07/10/18 12:01:37 zjjlkNBl
今日ズタボロだす
横の場合はx座標ではなくy座標でした・・・・・
本当にごめんなさい
486:名前は開発中のものです。
07/10/18 15:58:06 2p+G78pK
一定時間無敵という状態を作りたいのですが十数秒自キャラのあたり判定をなくすことはできますか?
半透明で当たり判定のないオブジェクトを作ってそれにチェンジするといろいろ変数を追加しないといけないので面倒なのdすが・・・
487:名前は開発中のものです。
07/10/18 18:41:17 HP36It3Q
>>486
自キャラに無敵フラグを追加、で解決するような...。駄目な理由があるのかな。
自分だったら、当たったときにフラグチェックして無敵だったらコリジョン処理しない(即座に抜ける)ようにし、
タイマー使って一定時間後に無敵フラグ消失、というような感じにする。
488:名前は開発中のものです。
07/10/18 20:07:50 8B1FDJnb
>>487
シューティングならそれでいいかもしれない
横視点アクションとかで地面とかが関わるならもう少し工夫しないとだけかも
このスレのログを辿ると似たよう話に当たるかもしれない
489:名前は開発中のものです。
07/10/18 20:40:28 vfcbVUIf
面倒がってる奴に教える意味有るのか?
490:名前は開発中のものです。
07/10/18 21:42:24 6eGl9S9Q
過疎よかいいじゃないか
491:名前は開発中のものです。
07/10/19 07:37:01 MUFGtR6o
492:名前は開発中のものです。
07/10/19 18:06:04 Vl0npn9t
bGMについての質問なのですが
曲Aが流れているときにちょっとした短い曲Bを流したいのですが
「曲A一時停止>曲B再生>曲B終了>曲Aを一時停止の時点から再開」という風にするにはどうしたらいいのでしょう
493:名前は開発中のものです。
07/10/19 22:59:25 6RGcBw98
公式のゲームは起動する時create with game makerって出てこないけど
これを消すのはliteでもできる?
494:名前は開発中のものです。
07/10/20 00:33:48 hAmk06Ct
>>492
一時停止は、関数 bGM_pause(sound_id) でできる。sound_idに曲AのIDを指定しよう。
その後、bGM_play(曲Bのファイルネーム, [設定]) を呼び出し、曲Bを再生する。
曲Bの終了検知は、今のところ無理っぽい。曲Bが終わる時間を見計らって、一定時間後に曲Aに復帰させるしかないかな。
なお曲Aに演奏を復帰させるときも、 曲AのIDを引数にして関数 bGM_pause()を呼び出す。
関数リファレンス
URLリンク(gamemaker.main.jp)
>>493
無理です。
495:名前は開発中のものです。
07/10/21 00:27:43 1O8dqLnR
これって日本語化出来る5.3使った方が良いのか?
496:名前は開発中のものです。
07/10/23 20:19:08 1Dn54OyY
7について説明してくれているサイトとかありますか?
7は日本語化できますか?
497:名前は開発中のものです。
07/10/23 20:39:07 1Dn54OyY
すいません。
日本語のヘルプはどこでダウンロードできますか。
>228さんのchmでは、書かれていない部分があります。
それを補うにはどうすればいいですか。
498:名前は開発中のものです。
07/10/24 18:24:35 CNVx+st/
止まってるな、1を見たら2年前だし
499:名前は開発中のものです。
07/10/24 21:53:11 WgthXhdI
>>477
Cの簡易版みたいな感じですね。
500:名前は開発中のものです。
07/10/24 23:12:03 3bv97O32
もう少し突っ込んだ内容のチュートリアルとか
日本語の資料があれば人気出ると思う。
501:名前は開発中のものです。
07/10/24 23:16:00 IY/D3Nkk
2Dのアクションゲームを作ろうとしているのですが、キャラクターを地面や足場に吸着させて動かすにはどうすればいいのでしょうか。
GM7です。
502:名前は開発中のものです。
07/10/25 00:18:31 vNqY00up
ご指導ください
bGM.exe を使用して音楽をならそうとしてるのですが
デモの通りに設定しているはずなのに変なのです。
どんちゃどんちゃ というのが二重再生みたいに
ドドンチャチャドドンチャチャ とせわしなく再生されます。
しかも終了した後に、ノイズがいつまでも残ってる状態です。
(プロセルには何も残っていません)
何が悪いのでしょうか。
503:名前は開発中のものです。
07/10/25 00:56:28 vNqY00up
すいません解決してしまいました。
一度すべてのオブジェクトをクリアして再設置した所、無事期待通りの反応を返してくれました。
・・・何故治ったのか原因が掴めないので不安ですが、また似た状況なった場合、
動作報告させて戴きます。
504:名前は開発中のものです。
07/10/25 05:08:36 AiXecA9K
今、必死でE-WordChanger2000を使って7の日本語化を試みてるけど、めんどくさいったらありゃしない
もう少し頑張ってみるか
505:名前は開発中のものです。
07/10/25 10:12:51 /6XVTfMT
俺もやってみたことあるけど、文字化けでおかしくなったりしない?
日本語化できない部分もあるし……。
506:名前は開発中のものです。
07/10/25 12:51:49 kOwmLgcJ
フォント変えてないんじゃねーのか
507:505
07/10/25 13:46:16 gKkUjDf5
E-WrodChanger2000が変更してくれない部分もある。
イベント追加するときのイベントの種類とか、アクションを追加するときの OK や Cancel の文字とか。
GameMaker側でフォントの設定もできないようだった。スクリプトのコードや、GameInformation の部分では変更可能だったけど。
……もしかして、俺のやり方が違っていたのだろうか。
508:名前は開発中のものです。
07/10/25 13:59:20 gKkUjDf5
↑の話は、文字は変更できるがフォントが変更されないってことっす。
Cancel → キャンセル はE-WordChanger2000側でデフォルトで変換しているようで、何も設定していなくても変換され、文字化けしてしまう。
デフォルト変換をやめるよう設定できるのかな。途中まで作ってたんだけど、そのやり方がわからんからやめてしまったんだ。
なおGameMakerはデフォルトのフォントは MS Sans Serif(海外ソフトではお馴染み) が使われているようだ。
509:名前は開発中のものです。
07/10/25 21:45:38 vNqY00up
クレジットカードを持ってないのですが、レジストするにはyoyoサイトのどこを見ればよいのでしょうか?
簡単に決済する方法はありますか。
510:名前は開発中のものです。
07/10/25 23:06:27 oTzrknN0
>>509
まず、yoyoサイトのアカウントを取得します。※メールアドレスが必要。無料のものでかまいません。
ログインしたら、URLリンク(www.yoyogames.com)にアクセス。
クレジットカードかPayPalで決済するとすぐにレジストできます。
ですが、PayPalでもクレジットカードが必要になりそうですよね…
それ以外の方法となると、上記のページ下にあるように、helpdeskに問い合わせをしなければならないようです。
511:名前は開発中のものです。
07/10/26 19:58:39 owvMBGHB
>>510
丁寧にありがとうございます。
やっぱりクレジットカードが必要になるのですね・・・
フリー版でやれるところまで頑張ってみます。
512:名前は開発中のものです。
07/10/27 04:42:33 bo72z7qT
x160〜480の間にランダムにインスタンスを出したいのですがどうしたらよいでしょうか。
x0〜ならできるのですが><
513:名前は開発中のものです。
07/10/27 05:51:00 b7zQv7OS
壁に設置したハシゴをキャラクターを上らせるというアクションを取りたいのですがうまくいきません。
ハシゴ(3x16ドット)あるのですが、キャラとぶつかって「ハシゴ」に乗ってしまいます。
キャラがハシゴと接触したときにボタンを押すと掴む、何もしなければ素通りさせるという処理をしたいのです。
何か良い方法はないでしょうか。
514:名前は開発中のものです。
07/10/27 06:52:36 UL5QEHWV
>>508自分の作った辞書以外のチェックを外して、更にdicフォルダの辞書を自作辞書以外全て削除
515:名前は開発中のものです。
07/10/27 14:25:15 47eNMq37
>>512
使ったことないがx0〜320を出してそれに160足せばいいんじゃね?
516:名前は開発中のものです。
07/10/27 14:38:37 szgPSdg7
特定のインスタンスを変更するにはどうすればよいのでしょう・・?
通常のChange the instanceアクションで、Apllies toを使って
変更したいオブジェクトを指定すれば良いのはわかるのですが、
同じ事をGMLでやろうとしても、インスタンスを変更する命令が
instance_change(obj,perf)とposition_change(x,y,obj,perf)しか見当たらないのです。
オブジェクト名を指定してそのインスタンスを変更するというGML命令は無いのでしょうか…?
517:名前は開発中のものです。
07/10/27 15:43:28 JBeAIlon
>>516
つwith文
with (obj) {
// このブロックではobjのインスタンスすべてに適用される
// with文を呼び出している元々のオブジェクトに対しては other を使用する。
// x = 0; // これはobjのインスタンス全てのx座標が0となる。
// other.x = 0; // これはwith文を実行しているインスタンスのx座標が0となる。
//
// 特定のオブジェクトのインスタンス全てではなく、一つのインスタンスに適用したいなら、
// with文の指定でオブジェクト名ではなくインスタンスIDを使用すること。
// Tips : with文は、繰り返し処理である。対象となるインスタンスIDの若い順に実行されているようである。
}
518:名前は開発中のものです。
07/10/27 18:29:37 mK85JoeL
あぁー。
ようやくwithが理解できました。
言われてみれば簡単でしたね。
ありがとうございました。
519:名前は開発中のものです。
07/10/27 19:06:11 MYcBDy56
2Dアクションを作っているのですが通り抜けできない障害物の作り方がよくわかりません。
上に乗れるが横からは通れないようなものを作りたいのですが何を設定すればいいんでしょう
520:名前は開発中のものです。
07/10/28 01:05:44 4H1O2wN3
>>511
つ VISAデビット
521:名前は開発中のものです。
07/10/28 02:22:00 eDM7pNaz
>>519
それだと上からも横からも通らないオブジェクトだから普通のオブジェクトじゃない?
522:名前は開発中のものです。
07/10/28 10:38:07 cbYdgwGn
ヘルスの上限を100にしたいのですが上限を設定するにはどうしたらいいのでしょう。
523:名前は開発中のものです。
07/10/28 11:40:24 leAMyaxz
>>519
マリオやロックマンのような2Dアクションは意外に敷居が高いです。GameMakerなら、ソリッドオブジェクトとか、それに関するアクションの理解がいろいろ必要です。
公式のチュートリアルのソースを良く見てみましょう。
URLリンク(www.yoyogames.com)
この中の platform_1.gmk が基本的な部分になると思います。
>>522
100より増やしたくないなら、100超えたときに100にしてしまえばよい、というようにします。
ヘルス増した後に次のコードを追加。
if (health>100) health = 100;
Actionなら
if health is larger than 100
set the health to 100
のようなかんじで。
524:名前は開発中のものです。
07/10/28 21:14:01 cbYdgwGn
ありがとうございます
もうひとつ聞きたいのですがルームで設定したview1やview2を切り替えるにはどうしたらいいのでしょうか。
525:名前は開発中のものです。
07/10/29 05:01:09 zuWao6Bl
ver7 についての情報はありませんか。
526:名前は開発中のものです。
07/10/30 11:56:12 G3KKfzgr
日本語化パッチまだ〜?
527:名前は開発中のものです。
07/10/31 17:07:35 kICjS8bb
ver7を使っています。
ウインドウサイズについて困っています。
Settingでwidth:640 height:480にしています。
ゲーム起動してそのままのサイズで始めたいのですが、モニター画面めいっぱいに広がって起動してしまいます。
どこを設定すればよいのでしょうか。
View in room
528:名前は開発中のものです。
07/10/31 17:11:22 kICjS8bb
すいません途中で送信してしまいました。
View in room は、見せる範囲ですよね。そこは w:640 h:480 にしています。
port on screen でも同じく w:640 h:480 にしています。
ですがport on screen のサイズを変えると、ウインドウサイズは小さくなるのですが、絵が潰れてしまいます。
どこを設定すれば、元の絵のまま w:640 h:480 で綺麗に表示できるのでしょうか。
529:名前は開発中のものです。
07/10/31 17:28:18 kICjS8bb
すいません解決してしまいました。
grobal game settings の graphics > scaling のfixed scale が 200% になってました。
お騒がせしました。
530:名前は開発中のものです。
07/11/01 22:33:50 4l261QOy
テキストファイルに記述した キー=値 を起動時に読み込んで、
変数として扱うには、どうすればいいですか?
ver7 未レジスト
531:名前は開発中のものです。
07/11/02 04:01:27 qbEUBjbm
>>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のファイルを閉じます。
532:名前は開発中のものです。
07/11/03 19:29:28 zfNPIsFo
最近質問が多いんで、GameMaker用まとめwikiサイトを作りかけてるんですが、需要あります?
wikiはgamdevにもあるけど、あそこは紹介程度にして詳しい情報はほかのところでまとめたほうが良い気がしますし。
内容がGMJapanと被ってしまうのも気になります……。
ページ
URLリンク(www.wikihouse.com)
まだGMLの変数一覧とか、関数一覧(数学関数以外ほとんど白紙)ぐらいしかないです……。
もし需要があるなら、補完してくれるとありがたいです。(GML関数の解説でも一人じゃつらい…orz)
あと、ほかにどんな情報がほしいのかとかもわからんです。公式チュートリアルの解説とかあるといいのかな?
533:名前は開発中のものです。
07/11/03 19:59:03 Z5CTQc/a
>>532
どこかに一行入力?があると嬉しいです。
>>531
ありがとうございます。
狙っている動作は、各キャラクターのパラメーターをプレイ時に読み込む事です。
(移動力・攻撃力の差異等)
GML、iniのの項目では全体の設定として使用するような事がかかれてあったので
最後のテキストファイルを読み書きする方法でいきたいと思っています。
指定行の読み込みはできるのでしょうか。
534:532
07/11/03 21:43:07 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) ファイルを閉じます
535:名前は開発中のものです。
07/11/04 03:55:29 7Uhxdtas
こういうのすごいありがたいわー
536:名前は開発中のものです。
07/11/06 01:19:01 IQqW+3zu
ニコニコアクションゲーム うpってくれねぇかなぁ
537:名前は開発中のものです。
07/11/07 00:08:08 mZ/mosz1
kyara
538:名前は開発中のものです。
07/11/07 00:10:02 mZ/mosz1
ごめんなさい。 間違って送信してしまいました。
質問です。
ヘルスメーターをキャラクターの頭の上に表示したいんですが、
Drawイベントにセットしたら、キャラクターのスプライトが
消えてしまうのです。
キャラクターを含め、深度?の設定は何も弄っていません。
どうしたらいいのでしょうか。
539:名前は開発中のものです。
07/11/07 01:24:51 k+N2ubak
>>538
drawイベントになにかアクションを置いてしまうと、設定されてるスプライトも描かなくなってしまうんだよね。
この仕様はおそらく、スコアやライフを自前で描くオブジェクトを用意したいときに、
エディタ中でルームに配置するときの識別アイコンとしてスプライトを使用することを視野に入れていると思う。
んなもんで、スプライトを表示したければ自前でやらなければなりませぬ。
drawイベントの一番上にでもオブジェクトに設定しているスプライトを描くよう、描画アクションを追加してください。
540:名前は開発中のものです。
07/11/07 10:27:56 lUo/Ckqn
砲台を常に自キャラの方向に向けるのってどうやったらいいのでしょうか
stepイベントとset varを使うような気がするのですが…
541:名前は開発中のものです。
07/11/07 22:06:45 mZ/mosz1
>>539
ありがとうございます。
スプライトを表示することができるようになったのですが、
イベント左キーでキャラクターを左向き、
イベント右キーで右向きに向くようアクションを設置していたのですが、
ずっと、drawアクションで設置したアクションのスプライトが
表示されつづけて変化しません。
自分は根本的に何か勘違いしているのでしょうか。
542:名前は開発中のものです。
07/11/07 22:09:58 HXVYqugh
>>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°で画面右方向)の数値が得られるので、それをどうにか処理してください。
543:名前は開発中のものです。
07/11/07 22:20:34 HXVYqugh
>>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以上を指定すると固定される。
544:名前は開発中のものです。
07/11/07 22:21:53 HXVYqugh
ごめ、訂正。↑の最終行は「3つめの変数は」ではなく「3つめの引数は」です。
545:名前は開発中のものです。
07/11/07 22:27:00 HXVYqugh
ほんとにごめん、訂正その2 orz
>>543の例だと表示はいいかもしれないが、当たり判定とかまずいな。
変数名はdrawSpr ではなく、 sprite_index としてください。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5331日前に更新/345 KB
担当:undef