トップページgamedev
981コメント340KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2010/12/05(日) 09:57:49ID:AN26SQm8
無料Windows用2Dゲーム作成ツール"Game Maker"について、色々と語り合うスレッドです。

●本家(英語)
 ttp://www.yoyogames.com/
●GameMaker Japan - 非公式情報サイト(日本語)
 ttp://gamemaker.jpn.org/v1/(現在一時閉鎖中)
●The Game Maker's Apprentice
 ttp://book.gamemaker.nl/

前スレ
【2D】ゲーム作成ツールGameMaker part4【マンセー】
 ttp://hibari.2ch.net/test/read.cgi/gamedev/1240441868/
0278名前は開発中のものです。2011/05/01(日) 07:37:06.68ID:Q9izUd83
>>272
もちろんエロいブロック崩しなんだろうな?
0279名前は開発中のものです。2011/05/01(日) 10:16:25.94ID:19Yqwfe7
やっぱプログラムってところで壁を感じてるんじゃないかな?
やってることはアクションと変わりないんだけどね
0280名前は開発中のものです。2011/05/01(日) 17:07:17.89ID:24HhuA0O
>>277>>279
そうなのか?
Cやろうとして失敗した奴なんだけどね俺は

>>278
そりゃもちろん!

で、バーが壁にめryは何とか回避したんだが、
崩す前の絵をブロックにする方法が良く分からない。
一個一個別のオブジェクト作らないとダメなの?
0281名前は開発中のものです。2011/05/01(日) 17:18:15.95ID:Q9izUd83
ブロックに使うインスタンスオブジェクトAに
一定区切りでバラバラにした1枚の画像をsubimageに当てはめておいて
インスタンスオブジェクトA生成→生成したインスタンス群のsubimage変更
みたいな感じでいけると思うが
0282名前は開発中のものです。2011/05/01(日) 17:24:20.44ID:24HhuA0O
>>281
アドバイスdクス
早速やってみる
0283名前は開発中のものです。2011/05/01(日) 19:10:07.81ID:24HhuA0O
>>281
元気良く飛び出したのはいいんだが、早速二行目で詰んだ。
「一定区切りでバラバラにする」って分割画像って奴の事?
0284名前は開発中のものです。2011/05/01(日) 19:26:16.23ID:GZUIxE+L
>>283
そうそれ
1枚の画像をそれで分割して、subimageを何枚も作っておく
あとはメインアクションのChange the spriteでブロックごとにsubimageの画像を変更すればいいだけ
0285名前は開発中のものです。2011/05/01(日) 20:28:48.12ID:24HhuA0O
>>284
アドバイスdクス
一応脱衣ブロック崩しにはなったよww
0286名前は開発中のものです。2011/05/01(日) 20:36:04.77ID:v4vaMhb8
ブロックの座標に合わせてdraw_sprite_partしたら分割する手間が省けるかなと思ったり
楽をするための仕組づくりに手間かけるのもプログラミングの醍醐味よ
0287名前は開発中のものです。2011/05/01(日) 20:42:32.65ID:24HhuA0O
>>286
それをExcuteCodeの中にぶち込んでどうにかすれば
あの長ったらしいIfのアイコンを並べなくて済むわけですね、わかります

今度は同じ物をGMLで作ってみるよ
0288名前は開発中のものです。2011/05/01(日) 23:14:11.68ID:U7TmMKRc
頑張れ、風邪ひく前に頼むよ
0289名前は開発中のものです。2011/05/02(月) 00:16:28.55ID:D5lQKg2j
>>288
ゴメン…画像は勝手にパクってる奴だからうpるの無理
パンツ穿いてこい

ヘルプやら>>257やら見てたら何とかGMLで出来たよ。
何とかやれそうだ、おまいらありがとう。

で、日本の非公式だとかwikiは現在では忘れられてる状態?
長らく更新されてないけど
0290名前は開発中のものです。2011/05/02(月) 02:04:01.93ID:UL0eJI8Q
>289
Wikiは更新されてない箇所多いけどある程度役には立つから見て損はないよ
日本非公式はわかりづらいし、イベントのことまで書いてあるからどうだろうなあ
役に立つのはmbtext関連かな。
公式フォーラムを翻訳しながら眺めてるだけでも割と有意義だと思う
0291名前は開発中のものです。2011/05/02(月) 18:11:25.40ID:D5lQKg2j
>>290
そーなのかー
教えてくれてdクス

そろそろレスしすぎかと思うんで
自重して一人で修行の旅に出てくるよ。
わかんないことあったらまた聞くかもしれんが、
よろしくお願いします
0292名前は開発中のものです。2011/05/02(月) 18:12:41.36ID:gIJtv+AV
訊く前にまずバックアップ取ってから試すのを忘れるな
0293名前は開発中のものです。2011/05/02(月) 21:13:01.66ID:ai/+YG7h
初心者ですみません、どうしてもわからなかったので質問させてください。
もしも気に障ったならスルーしてもらって構いません。
現在GML無しで横スクロール型のアクションゲームを作っているのですが、ジャンプした後や、高い所から落下した時に落下モーションを取ろうと思っています。
ジャンプして上昇中に上昇モーションを取ることはできるのですが、落下モーションに移行させるコツがわかりません。
何卒ご指導いただけるとありがたいです。
0294名前は開発中のものです。2011/05/02(月) 21:35:41.85ID:gIJtv+AV
上昇時と落下時のspeedの違いでモーションを変えればいいだけ
負の値ならモーションAに正の値ならモーションBに
0295名前は開発中のものです。2011/05/02(月) 21:47:52.17ID:ai/+YG7h
>>294
なるほど!
わざわざ回答頂き、ありがとうございました。
0296名前は開発中のものです。2011/05/02(月) 23:07:06.15ID:n75L3pQw
マルチプレイの方法について質問です
日本語版ヘルプを読んだのですが

親側
mplay_init_tcpip(mplay_ipaddress())
mplay_session_mode(true)
mplay_session_create(sesname,playnumb,playername)

子側
mplay_session_join(numb,playername)

こんな感じのを適当なオブジェクトにでも入れれば接続出来るのでしょうか?
接続されたとして互いのデータはどのように共有されるのでしょうか?
mplay_data_writeで変数?の共有は出来るのでしょうか、
しかしルーム、オブジェクト、操作、など普通のゲームと同じ様に作っては複数人でのプレイはとても出来るように思えません
非常に単純な通信だけでも作ってみたいのですが、もし良ければご教授願いたいです。よろしくお願いします
0297名前は開発中のものです。2011/05/03(火) 01:36:42.32ID:/zL0KSIx
専門外だが何度も呼び出すようなモノでもないんだろうし、user_definedイベントとかに入れちゃって接続する時とかホストを立てるときに呼び出せば楽そうだね
変数の共有だけど1,000,000の共有領域があるって書いてある。
番号を指定してやれば「親側の指定番号に含まれる内容を共有」することになる、という印象

単純な通信なら、インスタンスAを親側で動かして、子側で同じインスタンスAが動くか試してみるとか
親側のルーム移動で子側も移動されるのかとか、これは通常じゃ多分されないけど。
mplay関数が結構多いから眺めてても楽しいね 今度何か作ってみよう
0298名前は開発中のものです。2011/05/03(火) 08:30:07.55ID:Lm+aiDTQ
共有領域にルーム情報とかがあれば、それを各々の固体のオブジェクトが参照して色々とできるんじゃない?
固体Aが動く→共有領域の情報に差異があれば→共有領域に位置情報格納→描画前に各々の固体で情報更新

マルチプレイなんて触ったこともないし、ヘルプ見て思ったことを書いただけだけど
0299名前は開発中のものです。2011/05/03(火) 11:04:50.01ID:gTNZKyvs
スレがやけに伸びていると思ったら質問ばかりか
と思ったらエロいブロック崩しか


いいぞもっとやれ
0300名前は開発中のものです。2011/05/04(水) 13:42:26.84ID:4/6+Iz6C
マルチプレイでエロいブロック崩しとか胸が熱くなるな・・・
0301名前は開発中のものです。2011/05/05(木) 01:03:13.97ID:MgqdZdKE
負けると1枚着せられるのか
オチオチ抜いてる暇もない

こんな糞下らない発想を素人でも容易くゲーム化出来るのは最高の旨み。マルチプレイは訳分からんけど
こんな感じのツールでコンシューマー用のゲームが作れればゲーム業界は活発になるだろうし斬新な作品も沢山出そうだ
何より素人がコンシューマーゲーム開発出来るなんて夢みたいな話じゃないの
0302名前は開発中のものです。2011/05/05(木) 01:09:17.48ID:JBnJO6ov
まぁあるけどな。ロイヤリティが高かったりと色々問題がある。

日本は特に鎖国文化だから技術共有はしたがらないし、ブランド力を大切にするから自社開発エンジンとか作っちゃう大手が多いよね
結局作ってもハードがポンポン出るからそれにも追いつかないといけないわけだし 問題は多いみたいね

このあたりでもどうぞ
ttp://ja.wikipedia.org/wiki/%E3%82%B2%E3%83%BC%E3%83%A0%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3#.E4.B8.BB.E3.81.AA.E3.82.B2.E3.83.BC.E3.83.A0.E3.82.A8.E3.83.B3.E3.82.B8.E3.83.B3
0303名前は開発中のものです。2011/05/05(木) 09:45:30.25ID:1FhwUPBo
負ける・・・?ナニを言っているんだ
協力してブロックを崩すに決まっているだろう

ゲーセンであったような
壁からの自機移動範囲を四角で囲んで
切り取っていくと裏の絵が表示されるタイプのゲームのがマルチにはよさそうだけどな
0304名前は開発中のものです。2011/05/05(木) 11:51:18.22ID:dzP8cXHV
クイックスか
0305名前は開発中のものです。2011/05/05(木) 12:52:19.10ID:2lG465FO
ギャルズパニックじゃねーのか?
0306名前は開発中のものです。2011/05/05(木) 14:00:01.13ID:WPSiIO8D
お前ら詳しいなw
もう作っちゃえよ

マルチプレイ用のDLLならフォーラムで公開されてた気がする
0307名前は開発中のものです。2011/05/07(土) 11:53:33.37ID:icn1PkuP
>>302
MMDとかがそうだけど、ネットでの集団製作文化みたいなのができると今後面白くなると思うだよなー
0308名前は開発中のものです。2011/05/08(日) 02:42:21.59ID:wBtB3c8Q
たしかにGM単体でもいいから大きなコミュニティがほしいとは日々思う
公式フォーラムがまさにそんな雰囲気だけど日本にない・・・共有する感覚が少ないし、著作権の主張が強いからな
0309名前は開発中のものです。2011/05/08(日) 13:29:47.01ID:zV8xakJA
描画した図形を回転させるのはPROじゃないと無理なのでしょうか?
0310名前は開発中のものです。2011/05/08(日) 18:43:24.87ID:CZaxrsDW
>>308
pro版クレカ必須、日本語使いにくいで新規の人が入りづらい
使い慣れた人には折々のアップグレードは話題にするような追加機能がないってことで
結局人もネタもそれほどないんだよ
非公式フォーラムが廃れたのは惜しい反面しょうがないとも思う

>>309
お勧めしないけれど、最新lite 8.1 は回転できる
それ以外は回転画像を用意する必要があり
0311名前は開発中のものです。2011/05/08(日) 18:44:17.76ID:A0zRpvOC
8.1Liteは広告が異常に多いとか聞いて触ってもいないわ
0312名前は開発中のものです。2011/05/09(月) 13:09:59.63ID:cjimXQQf
GMで敷居が高いって事はないと思うけど、まぁ色々あんだろね

>309は描画した「図形」の回転だよね スプライトじゃないんなら出来るんじゃないかな。
まぁ面倒だけど、計算させるとか
0313名前は開発中のものです。2011/05/10(火) 20:34:03.75ID:Xl95nJbq
スプライトのアニメーションが、EditSpriteのSpeedもRoomのSpeedも同じ30なのに、実際にプレイすると本来より早く動くのですが、これはどう修正すればいいですか・・・?
0314名前は開発中のものです。2011/05/10(火) 21:03:12.31ID:T8uqKylv
EditSpriteの方のSpeedはあくまでプレビューだから関係ないと思う。
どっかでimage_speedをいじって1以上とかにしてるオチじゃないの?
image_speed = 1で早いと感じるなら0.2とか0.3とか
0315名前は開発中のものです。2011/05/10(火) 21:27:12.48ID:Xl95nJbq
>>314
回答いただき、ありがとうございます。
EditSpriteとRoomのSpeedが同じでもプレビューの速度が実際に一致するとは限らないのですか。そういうもんなのですね。
左右移動時にアニメーションを左右使い分けているのですが、どうも挙動がおかしいのです。
アニメーションの変更は、別途歩行アニメーションのオブジェクトを用意してChange instanceを利用しています。
通常時は普通に動作してくれるのですが、特定の条件でインスタンスの親を変更させた後(プレイヤーキャラの変身で見た目と挙動を変えるためです。)、
移動アクションのコマンドを通常時とまるまる同じにしたのに、今度はアニメーションの最初の数コマまでしか表示されずにまた一コマから動くという妙な動きしかしないのです。
コマンドが同じなのに異なった挙動を取るので、もうさっぱりです・・・・。
わかりづらい内容でごめんなさい・・・。説明しづらいので、もしも回答しにくかったら、スルーしてください;
0316名前は開発中のものです。2011/05/10(火) 21:43:52.91ID:T8uqKylv
個人的で悪いんだけど、アニメーション如きでインスタンスを消したり生成したりするのはお勧めしない。
アニメーションを切り替えるだけならsprite_indexでスプライトの指定を変えた方が遥かに楽だしバグを回避できる。

アニメーションについてはバグなのか仕様なのかわからないけど、スプライトのサブイメージ数がチェンジする前のインスタンスのものを引き継いでるとかそんな香りがする
よくわからんけど
0317名前は開発中のものです。2011/05/10(火) 21:50:01.83ID:Xl95nJbq
>>316
こんな説明に、丁寧に回答いただき、重ね重ねありがとうございます。
まさしくおっしゃる通り、サブイメージ数を引き継いでました。親の枚数を増やしたら通常通り動きました!
本当に感謝いたします。
実はまだGMを触って2週間程の初心者でして、スレ汚し大変失礼しました。
sprite_indexですか。ちょっとわからないので調べてみます。
0318名前は開発中のものです。2011/05/10(火) 21:50:53.80ID:Mg3KGJhG
subimageの切り替えをimage_speedじゃなくて変数を用いて使えば
A状態だとsubimageの0-6を使用、B状態だと7-12を使用みたいな感じにもできる
まぁ>>316のやり方が楽だと思う
0319名前は開発中のものです。2011/05/10(火) 21:57:47.26ID:T8uqKylv
>318
なるほど 1個のスプライトで全部のアニメーションをカバーするのか
管理がダルいけどありな方法だなぁ

>317
sprite_indexはそのオブジェクトが指定しているスプライトIDだよ
ヘルプ読め ttp://www.geocities.jp/hogehige2005/
0320名前は開発中のものです。2011/05/10(火) 22:47:22.72ID:Xl95nJbq
>>319
なるほど、sprite_indexの意味がちょっとわかりました。
こっちの方が管理が楽そうですね。
ちょっと工事してきます。
回答いただけた方、本当にありがとうございました。
0321名前は開発中のものです。2011/05/10(火) 23:34:40.50ID:PCGaliPA
>>316
instance_changeすると、オブジェクトのプロパティで設定できる項目
(depthとかvisibleとか)は新しいオブジェクトのデフォルト値に置き換わる。
それ以外の変数は、チェンジ前のものがそのまま引き継がれるというルールっぽいです。

というわけで
sprite_index は新しいものに変わるが
image_index, image_speed は今の値をそのまま引き継ぐ。
インスタンスの変更を使うなら、これらの変数は
createイベントあたりで初期化しておくのが無難。
0322名前は開発中のものです。2011/05/15(日) 16:44:15.62ID:N6qdRXUq
アンドゥ機能って無いんですか?
0323名前は開発中のものです。2011/05/16(月) 01:01:44.11ID:vRUdEGoj
>322
アンドゥは個別にあるだろ アイコンまであるのに。
何に対して言ってるのかまったくわからん
0324名前は開発中のものです。2011/05/16(月) 10:11:31.38ID:lDJNj9Lq
アンドゥトロワ
0325名前は開発中のものです。2011/05/16(月) 20:25:59.31ID:ytgKQB8D
プレイヤーを左(もしくは右)の方に置いた状態で横スクロールするために

//プレイヤーが右向きならglobal.muki=1
if(global.muki == 1) x = 120 + obj_player.x;
else x = -100 + obj_player.x;
y = obj_player.y;

というコードをstepで実行するオブジェクトを作って一応うまくいったのですが
なんだかスクロールが微妙になめらかじゃない感じがします
原因わかる方、ご教示してくださると幸いです
気のせいだったらすみません

room設定は
width 960
Height 480
View in room X 0 Y 0 W 480 H 320
Port on screen 同上
Hbor 240 Hsp 9
Vbor 160 Vsp -1
としています
0326名前は開発中のものです。2011/05/16(月) 20:56:02.31ID:CFVi0QEm
どういう状態かよくわからない
プレイヤーオブジェクトの向きによって、見える視界範囲をスクロールする?
それとも強制スクロールでプレイヤーオブジェクトを画面外に出ないようにする?
0327名前は開発中のものです。2011/05/16(月) 21:08:15.11ID:ytgKQB8D
すみません

目指しているのは、マリオのような通常横スクロールで、プレイヤーが画面の真ん中より進行方向逆側をキープしつつの
スクロールです
進行方向(プレイヤーオブジェクトの向いてる方向)の画面を多く見せたいのです
プレイヤーが逆方向を向いたときは、向いたがわの画面を多く見せたいのです


○をプレイヤーとすると、
右向きの時はこんな感じで、プレイヤは画面上はその位置をキープして


  ○
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

左向きの時は、実際の位置は変えずに、こういう感じにするのを目指しています


                         ○
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

う〜む…なんかうまく説明できません
申し訳ない
0328名前は開発中のものです。2011/05/16(月) 21:10:34.71ID:ytgKQB8D
>>326
>>プレイヤーオブジェクトの向きによって、見える視界範囲をスクロールする?
すみません。見逃していました
たぶん仰る通りのことを目指しています
0329名前は開発中のものです。2011/05/16(月) 21:58:08.71ID:CFVi0QEm
たぶん透明のオブジェクトを作って
viewはそれを追従するようにしてるんだと思うけど
それならHspの値を変更すれば追従速度が変わるんじゃないかな
少数点とかの細かい値は指定できなかったと思う
0330名前は開発中のものです。2011/05/16(月) 22:00:28.57ID:sywNYm8h
Step じゃなくて End step に置くっていうのはやってみた?
0331名前は開発中のものです。2011/05/16(月) 22:17:00.33ID:ytgKQB8D
ご教示ありがとうございます
End stepに置いたら上手くいきました!
原因は実行の順番にあったのかな

>>329
ずばりその通りにしています
原因は透明のオブジェクトの方にあるようでした
ありがとうございました〜

>>330
イマイチStep系統の使い勝手を分かっていませんでしたが、ちょっとわかったような気がします
ありがとうございました〜
0332名前は開発中のものです。2011/05/17(火) 07:32:08.70ID:73LY8Wv3
皆は外部ファイル(セーブデータやミッションデータなど)はどうしてる?
自分はミッションクリア式のゲーム(例えばイキキ様のはかいマン)を作っているけれども、外部ファイルをどんな風に扱えば良いのかなと

携帯からすまん
0333名前は開発中のものです。2011/05/17(火) 11:17:17.96ID:VvMqXX45
どうしてるってどういう意味?
セーブデータならexeと同じフォルダに適当なフォルダ作ってその中に入れてるな
暗号化したければお好みで
0334名前は開発中のものです。2011/05/17(火) 13:46:18.19ID:i8OzSkbD
exeのあるフォルダにsaveフォルダ作って暗号化して放り込んでる
03353322011/05/17(火) 16:56:20.38ID:73LY8Wv3
>>333,>>334
ありがとうございます。
暗号化ですか…調べてみます
0336名前は開発中のものです。2011/05/19(木) 03:23:58.02ID:7W9fWkhX
スプライトを読み込むとメモリ上ではbmpになるけど、メモリ上でもpngのまま扱う方法ってないのかな?
連番画像を読み込んだ時のメモリ使用量が辛くなってきた
ちょっとdllの作り方調べるくらいじゃ判断がつかない
0337名前は開発中のものです。2011/05/19(木) 03:24:59.59ID:7W9fWkhX
ごめん、上のはpngを読み込むならpngのまま、gifを読み込むのならgifのままってことね
0338名前は開発中のものです。2011/05/19(木) 03:56:58.93ID:+PTB5Jtq
ファイル形式のままメモリ上で保持するっていうのはない
読み込む画像データを少なくする手段を考えるほうが手っ取り早いはず
シーン毎に必要な画像だけ裏で読み込んでいらん画像は破棄するとか
0339名前は開発中のものです。2011/05/21(土) 00:19:10.49ID:FrjLYHtD
8.1になってから半角カナ使えなくなった?
0340名前は開発中のものです。2011/05/22(日) 02:23:55.82ID:DGEjNdCf
突然すみません、質問させてください。
アニメーションgifの特定のsubimageの時にwaveを鳴らすって処理はできますか?
例えばアニメーションの4番目と8番目が拳を振り下ろすシーンで、その時に打撃音を鳴らすといった事は可能でしょうか?
素人の質問で恐縮です。
もしよろしければ回答頂けるとありがたく思います。
0341名前は開発中のものです。2011/05/22(日) 12:22:40.30ID:Q11em/4c
俺のやり方

効果音が鳴ったかどうかの変数を作っておき、image_indexが3以上になったら変数をtrueにして効果音を鳴らす

if image_index < 3
{
se_flag = 0;
}
else if image_index >= 3 && se_flag == 0
{
sound_play(効果音);
se_flag = 1;
}
0342名前は開発中のものです。2011/05/22(日) 12:25:46.90ID:Q11em/4c
あ、8番目も鳴らすのか、ならこうかな

if image_index < 3
{
se_flag = 0;
}
else if image_index >= 3 && se_flag == 0
{
sound_play(効果音);
se_flag = 1;
}
else if image_index >= 7 && se_flag == 1
{
sound_play(効果音);
se_flag = 2;
}
0343名前は開発中のものです。2011/05/22(日) 13:15:26.08ID:UUQ6TMbs
他にも効果音を鳴らす行動があるなら、配列とかも作ってどこで鳴らすかとかもやるといいかもね

a[0] = 2;//鳴らす箇所の数
a[1] = 3;//鳴らすimage_indexその1
a[2] = 7;//鳴らすimage_indexその2
sound_ids = 効果音1

if(!sound_isplaying(効果音1)){//効果音1が再生中では無いなら
for(i=1;i==a[0];i+=1){
if(image_index==a[i]){//image_indexがa[1~a[0]]の値ならば
sound_play(効果音1);//効果音を鳴らす
}
}
}
0344名前は開発中のものです。2011/05/22(日) 13:17:04.98ID:UUQ6TMbs
ありゃ、修正ミスだ
たぶんこれで大丈夫なはず

a[0] = 2;//鳴らす箇所の数
a[1] = 3;//鳴らすimage_indexその1
a[2] = 7;//鳴らすimage_indexその2
sound_ids = 効果音1

if(!sound_isplaying(sound_ids)){//sound_idsが再生中では無いなら
for(i=1;i==a[0];i+=1){
if(image_index==a[i]){//image_indexがa[1~a[0]]の値ならば
sound_play(sound_ids);//sound_idsを鳴らす
}
}
}
0345名前は開発中のものです。2011/05/22(日) 23:48:09.68ID:DGEjNdCf
>>341-344
回答ありがとうございます!
おかげで出来ました。ありがとうございました!
0346名前は開発中のものです。2011/05/23(月) 15:59:21.06ID:AtLcnK/y
延々と右にスクロールするボスステージを作りたいのですがステージをループさせるのは可能なのでしょうか?
またボスが登場するときなどに画面を揺らす効果を付けたいのですがよくわからないので教えていただけないでしょうか?
なんとなくviewに関係ある関数を使うのだとは思うのですが・・・
0347名前は開発中のものです。2011/05/24(火) 08:00:36.19ID:TE7zmycQ
ループの方法はいくつか思いつくけど全部力技だからもっと賢い人のレスに任せた

画面を揺らすのはviewで合ってるよ
view_*portとview_*viewの区別が最初はつき辛いから注意

簡単に言うなら、view_*viewがビデオカメラのレンズで
view_*portはビデオで撮った内容を映写するためのプロジェクターだと思えばいい

view_enabled = true; //view機能をONにする
view_visible[0] = true; //0番目のviewを使う

//まずはカメラで撮りたい場所を決める
view_xview[0] = 0; //ルーム内の座標x=0と
view_yview[0] = 0; //座標y=0から
view_wview[0] = 640; //幅640pixel
view_hview[0] = 480; //高さ480pixelの範囲をカメラで映す

//撮った内容をスクリーンのどこに映写するか決める
view_xport[0] = 0; //座標x=0と
view_yport[0] = 0; //座標y=0から
view_wport[0] = 320; //幅320pixel
view_hport[0] = 240; //高さ240pixelの範囲に映写する
0348名前は開発中のものです。2011/05/24(火) 08:02:35.70ID:TE7zmycQ
こうすると、カメラで撮った範囲がスクリーンの左上に320*240に縮小されて写るはず
(スクリーンの大きさは640*480ってことにしとく)
ここまで出来たら、view_xportとかview_wportとか色々変えて
何が起こってるのが自分で理解してみるといい
丁度プロジェクターをいじってるような感じだね

次はview_xviewとview_yviewを変えてみる
これはカメラを動かすことと一緒だってわかるはず

それが出来たらあとは簡単
画面を揺らすってことは、つまりカメラを揺らすってことだから
view_xview[0]とview_yview[0]を適当に変えればOK

昔苦労したから色々書いたけど、とりあえず自分で色々触ってみるといいよ
ちなみにGMLじゃない方法は知らない
0349名前は開発中のものです。2011/05/25(水) 02:30:01.55ID:ZZ2I1X7r
特定オブジェクトのインスタンス数を調べるにはどうすればいいのかしら
0350名前は開発中のものです。2011/05/25(水) 10:10:27.96ID:j/e14whg
>>349
つ instance_number(obj)
0351名前は開発中のものです。2011/05/25(水) 14:05:01.90ID:opsyaCmR
ニホンゴヘルプヲヨメコノヤロウ
0352名前は開発中のものです。2011/05/26(木) 12:03:30.14ID:j9K6d2Wg
GM8.1はbGMスクリプト使えないのかなあ・・・。
Illegal array index in script "bGM_play".
trying to access argument[3], but only 3 arguments have been supplied.
ってエラーでて起動できないです。
0353名前は開発中のものです。2011/05/26(木) 12:58:51.69ID:FOEeM3du
>>352
そのエラーをまんま翻訳すればわかると思うが。
要は値が足りてないってことで、以前のGMで省略できてたところが
8.1では省略不可になってるってこと。
0354名前は開発中のものです。2011/05/26(木) 13:01:56.58ID:j9K6d2Wg
>>353
うう、つまり自分で修正コード入れない限り再生できないってことですか。
GMLを最近学び始めた俺には少し厳しい・・・・。
0355名前は開発中のものです。2011/05/26(木) 13:54:15.81ID:FOEeM3du
修正の必要はないと思うけどな

bGM_play(filename, volume, is_loop, pan, pitch);

だからループやパン・ピッチの値を全部入れればいいんじゃね?
0356名前は開発中のものです。2011/05/26(木) 14:13:00.56ID:j9K6d2Wg
>>355
お、おおおお!たったこれだけのことだったのか・・・!
危うくGM7で再出発するところでした。再生できました。
本当に感謝します。
くだらない質問でスレ汚しすみませんでした。
0357名前は開発中のものです。2011/05/26(木) 14:23:45.17ID:YWyy1BIh
省略不可になってるとか、どんどん使い方が厳しくなっていくな
横着するなってことなんだろうが
0358名前は開発中のものです。2011/05/26(木) 15:47:29.28ID:FOEeM3du
よこしま氏は省略した時のスクリプトをちゃんと組んでるんだけど
値を見るタイミングがそのコードを見た後だったのが関数のコール時点に
変更になってるせいだと思う。YoYo側はそっちのほうが楽にエンジン作れるからいいんだけど、
ユーザーにとっちゃ厳しい変更だよね。
0359名前は開発中のものです。2011/06/01(水) 20:06:27.79ID:+m52XcHS
GMLからSet time lineみたいにタイムラインを使いたいのですがtimeline_add()の()部分にタイムライン名を入れるだけでは使えないのでしょうか?
Wrong number of arguments to function or script.とエラーが出てしまいます
0360名前は開発中のものです。2011/06/01(水) 20:39:53.72ID:empjEd2o
なんでニホンゴヘルプ読んでから質問しねーんだよぉぉぉぉぉ!!
0361名前は開発中のものです。2011/06/01(水) 20:52:15.33ID:Wfx+wiQY
timelin_addは引数をとらない。そしてそれはタイムラインを新しく作るための関数だ。
タイムラインを開始するには
timeline_index = 開始したいタイムライン と代入して
先頭から開始したかったら timeline_position = 0 にして
さらに、GM8以降だったら timeline_running = true にする。
0362名前は開発中のものです。2011/06/02(木) 00:00:46.77ID:8YtJadZR
>>361
ありがとうございます
ヘルプのtimeline_indexは(番号)だとか書いてあってまた違うものだと思っていました
代入する物なのですね
0363名前は開発中のものです。2011/06/04(土) 04:36:35.65ID:bKns1Szr
コードの中でaaa = x+yと書いた場合、以降aaaと書く度に計算されてるんだよね
ステップ中に一度出した計算結果を、再度計算抜きでそのまま参照する方法ってある?
計算内容によってはいくらかパフォーマンスが上がりそうな気がする
0364名前は開発中のものです。2011/06/04(土) 04:40:17.43ID:+R2gRvWC
aaaという変数にx+yの計算結果が入っているだけ、計算式が入るわけじゃない
0365名前は開発中のものです。2011/06/04(土) 06:04:20.74ID:bKns1Szr
その計算結果を出すために毎回計算しているという事は無いんですか?

スクリプトaaa「x+y」
スクリプトbbb「hspeed+vspeed」

instance_create(aaa(),bbb(),object)

この場合でもそれは同じですか?
0366名前は開発中のものです。2011/06/04(土) 07:02:02.49ID:+R2gRvWC
スクリプト呼び出しの場合は毎回計算される
変数を読むだけなら計算された結果の値
step毎にaaa = x+yの計算はされる

計算するための条件をつけるとかで多少は改善できるかもしれないけど
単純な数値だけの計算だと、あまり関係無いと思う
文字を数値に変換したりを毎step繰り返すと重くなるけどね

>>365の場合
x+yの計算→hspeed+vspeedの計算→そしてオブジェクトの作成
0367名前は開発中のものです。2011/06/04(土) 07:08:45.01ID:bKns1Szr
なるほど
スクリプトはコードが綺麗にまとまるので頻繁に使っていましたが
内容によっては直接書いたほうが良いという事なんですかね
どうもありがとうございました
0368名前は開発中のものです。2011/06/04(土) 07:26:48.41ID:+R2gRvWC
条件次第だけど必要なときだけ計算させて使うって方法があるかな

x+y位置の情報を得るなら、キーを押して移動した後に
変数=aaa()とかで結果を入れるようにするとか
移動しない限り変数の値が書き換わらない
0369名前は開発中のものです。2011/06/04(土) 08:00:33.49ID:bKns1Szr
x+yというのはでたらめ過ぎたのでもう少しまともに書くと

スクリプトPD「point_direction(x,y,target.x,target.y)」

if (PD() > 0) && (PD() <= 90){ 処理 }
if (PD() > 90) && (PD() <= 180){ 処理 }
if (PD() > 180) && (PD() <= 270 ){ 処理 }
if (PD() > 270) && (PD() <= 360){ 処理 }

このPDの計算をステップ中一度だけに出来ればコスト削減になるのではと考えたのです
スクリプトよりもPD = point_direction(x,y,target.x,target.y)又はvar PD(略)としたほうが良いのでしょうか
0370名前は開発中のものです。2011/06/04(土) 10:44:32.20ID:uM1fq+B8
処理を分岐させるための変数を「PD」、
point_direction(x,y,target.x,target.y)の計算をするスクリプトを「ScriptPD」
としたときに

PD = ScriptPD; //このように変数に計算結果を代入すれば毎回計算しなくて済む

if (PD > 0){ //ついでにこっちのコードもすっきり
  if (PD <= 90){処理1}
  else if (PD <= 180){処理2}
  else if (PD <= 270){処理3}
  else if (PD <= 360){処理4}
}
0371名前は開発中のものです。2011/06/04(土) 11:06:07.76ID:bKns1Szr
大変為になりました
どうもありがとうございます
0372名前は開発中のものです。2011/06/04(土) 11:18:43.54ID:bKns1Szr
何度もすみませんがvarでスクリプトを代入した場合でも>>370でしょうか?
0373名前は開発中のものです。2011/06/04(土) 11:37:28.17ID:uM1fq+B8
varは代入ではなく変数の作成。
ScriptPDの返す値は0〜360の整数で、GMLは変数の頭文字に数字が使えないので
var ScriptPD();とするとエラーが出る(はず)
0374名前は開発中のものです。2011/06/04(土) 18:00:28.68ID:bKns1Szr
var PD ;
PD = scriptPD() ;

これなら>>370も一度の計算で大丈夫ですよね?
0375名前は開発中のものです。2011/06/04(土) 20:30:40.98ID:czogavCN
ごめん、まともに考えてレスしようと思ったけど、処理速度ほとんどかわらんのだからPD=point_direction(x,y,target.x,target.y)でいい。
その後の処理は同じイベントか同じスクリプト内でやるんならvar宣言すれば多少はメモリ節約にはなるけど微々たるもんだから気にする必要はないと思う。

ちなみに単純にPD=ScriptPD()なんてやっても多分何も返してないんだから0が代入されるんじゃない?
スクリプトの最後にreturn(PD)とすればPDに代入されたもんが返ってくる。
でも上の例じゃスクリプト内でvar宣言してないPDは、呼び出したオブジェクトのローカル変数になるしreturnも必要ないし
0376名前は開発中のものです。2011/06/04(土) 20:41:14.61ID:czogavCN
バージョンによって違うのか知らんが、スクリプトは関数的な扱いだから変数に関数の結果を代入するのならPD=ScriptPD()という書き方が正しい(つかそうじゃなきゃエラーになる)
そしてpoint_direction自体が関数なのだから、二度手間にしてる分余計な処理が増えてると思う。

あとvar宣言は変数の作成ってか、一時的に使う変数みたいなイメージ。
その場でしか使えない変数だから、スクリプト内で使ったらどこにも定義されてない変数になる。(呼び出し元のオブジェクトのローカル変数にもならない)

それとたかだか何十桁の計算をしても処理速度はまず変わらないから気にしない方がいいよ。計算機ですら計算しても一瞬で答えが出るんだから。
0377名前は開発中のものです。2011/06/04(土) 22:38:19.27ID:bKns1Szr
長時間に渡ってのレスありがとうございます

基本的な数値計算なら細かいことは気にしなくても大丈夫なのですね
極端な話>>369でもパフォーマンス上は問題がないと

PD = ScriptPD; //このように変数に計算結果を代入すれば毎回計算しなくて済む

この事についてのソースはありますでしょうか
勿論疑っているわけではないのですが、ネット上で見られるなら勉強の為に見ておきたくて
■ このスレッドは過去ログ倉庫に格納されています