【2D】ゲーム作成ツールGameMaker part6【マンセー】
《Game Makerの特徴》
@ コリジョン(当たり判定)/スプライト/マップ/サウンド再生など、2Dゲーム作成にかかせない機能が充実
@ なにかと便利なイメージエディタを内蔵
@ プログラミングの知識はあってもなくてもよい
@ *.exe(単体実行可能)形式でゲームを出力できる
@ 作ったゲームは自己責任の元で自由に配布できる(作ったゲームを売る場合のライセンス料さえ不要!)
@ キーボード、マウス、ジョイスティックからのキー・ボタン入力をサポート
@ イベントドリブン型なのでスマートにゲームを構築できる
@ 組み込みスクリプト言語「GML」により、さらに細かい処理が可能
@ エンジンはDirect X
※有料版では広告が表示されなくなり、関数や機能が追加される。
現在様々なエディションが発売されており価格や機能の違い等、詳細は公式サイト確認を推奨。
Windows版 $39.99
Mac版 $19.99
Studio Standard $49.99
Studio Professional $99.99
Studio Master Collection $499.99
《Game Makerの欠点》
@ 英語ソフトなので、英語が読めないととっつきにくい
@ 特にver8.0では、コードエディタ内で日本語が文字化けするため更に使いにくい
@ ツクール類とは違い、ゲームの「動き」から設計しなければならない(それがまた長所でもある)
乙さんです
Studio普及させるためには
とりあえずはヘルプの日本語化をしないといけないかなぁ
5 :
名前は開発中のものです。:2012/11/22(木) 19:34:31.07 ID:MB0wGfYu
質問。
例えばエロゲのようなソフト作る分にも制作しやすい?
今steamでセールだから買おうか検討中
たぶんノベルゲーのことを言っているんだと思うけど
残念ながら否。
ノベルゲーでPCだけなら素直に吉里吉里やNScripter使ったほうがいい
ふりがなやインデント、文字色などなどノベルエンジンとしてあって当然のものを
実装するだけでかなりの時間が掛かっちゃうよ
日本の代理店とかついて、翻訳版とか出してくれれば普及しそうだけどね
なんだかんだで一番使いやすい2Dアクション作成ツールだし。
mmfが失敗してるしなぁ
9 :
名前は開発中のものです。:2012/11/24(土) 17:26:32.62 ID:aHNkKu8t
8.1で作ってるんだけど、
特定のオブジェクトを2つ以上生成されないようにするのってどうやればいいかな?
Createイベントでinstance_number() > 1ならinstance_destroy()するくらいしか思いつかないけど、
これだとCreateイベント自体は実行されてしまうみたいなんだよな
つ exit
ところで2つ以上ってことは、2も含まれるから同じオブジェクトの数を1つまでに制限するってことだよね?
比較演算子を>=と間違えてない?
>>10 比較演算子間違えてた…
てか、Createイベント中はまだインスタンス生成されてないのか
「インスタンス生成→Createイベント発行→インスタンス2つ以上ならdestroyで自殺」
というつもりで書いてたんだが、間違ってたようだ
ありがとう、聞いてよかった
連投すまん、勘違いだった
やっぱCreateイベント内で
if(instance_number(object_index) >= 1){ instance_destroy(); }
ってやるとインスタンス自体が生成されなくなった
exitも試したけど、なぜか上手くいかない
やっぱインスタンスを生成する側で制御するしかないのかなぁ
すまん確認せずにやったけど俺の間違いだった。
普通にif(instance_number(object_index) > 1)でおkだと思うんだけど…
インスタンス破棄しても、そのインスタンスのCreateイベント中のinstance_destroy()以降のコードが実行されるのが問題なんだよね?
if(instance_number(object_index) > 1){
instance_destroy();
exit;
}
でどう?
>>13 そうそう、正にその通りです
Createイベントに
>>13のコード書いただけのオブジェクトAを作って、
1つに制限したいオブジェクトBで上記オブジェクトAをParentに設定、
BのCreateイベントで
event_inherited();
{
// BのCreateイベント処理
}
とやってみてるんだけど…
確かにインスタンスは1つしかできないけど、BのCreateイベント処理はしっかり実行されるorz
もう素直に毎回オブジェクトBに、instance_number() exit云々を書いたらいいんじゃないかな……
もしくは生成する側で制限するか。
泥臭い作業が必要な時だってあるさ(´・ω・`)
前スレ先に使ってしまおうよ
17 :
名前は開発中のものです。:2012/11/25(日) 01:28:09.41 ID:SuOU4BsA
>>15 なんか悔しいけどそうするわ、ありがと
>>16 前スレあったのか、すまんかった
19 :
名前は開発中のものです。:2012/12/06(木) 00:26:59.78 ID:yotZCHoz
ビューがよく分からん
viewが「スクリーン上の何処にどのくらいのサイズで表示するか」を設定して、
portが「ルームの何処の領域を表示するか」を設定する、という理解で正しい?
例えばルームの原点から(640, 480)までの領域を、640x480のウィンドウに表示するには
view、port両方ともwを640、hを480に設定でおk?
>>19 viewが「ルームに対するビューの座標とサイズ」で、
portが「スクリーンに対するビューの座標とサイズ」だったと思う。
つまり、viewとportの理解が逆じゃないだろうか。
ビューを1つしか使わないなら、設定値はそれで合ってるはず。
21 :
名前は開発中のものです。:2012/12/06(木) 18:40:44.59 ID:pnN9GNvw
view二つ使えば画面分割とか
ラリーXとかアーケード版のいっきみたいなレーダーマップできるかな
画面分割はできるね
viewってのは実際に起こってる一つの事象を二つのカメラから見るようなもん
23 :
名前は開発中のものです。:2012/12/12(水) 18:05:56.65 ID:+Y6OP9Vm
わかりやすい例えで説明してくれてありがとー
レーダーマップは自分で作らないと駄目だけど
VSエキサイトバイクみたいなもんできるのか
初歩的な質問で申し訳ないんだが
8.0の時においたオブジェクトをctrlかなんかで複製できたはずなんだが
8.1だとできない?場所移動と自由移動?(マス目無視できるやつ)はできるんだが・・・
>>24 ルームエディタ開くやろ、オブジェクト選ぶところあるやろ、その下に操作方法が書いてある
Shift押しながら左ボタンだ
ありがとう
でもそうじゃないんだ
なんて説明してらいいのか分からないけど
Aを設置 Bを選ぶ Bを設置 Aを設置したいけど左枠で選んでるのはB
っていうときにAを触りながらなんかやることで複製できなかったっけ?
>>26 知っている限り、8.0以前にもそういう機能はなかったけれど……
あったらCreation Codeをちまちまコピーして回ってなかったと思う
今起動して確認してみたけれど、8.0でできる操作は以下のとおり。
左ボタン+Alt=No snap, Shift=Multiple, Ctrl=Move
右ボタン+Shift=Delte all, Ctrl=Popup menu
ポップアップメニューの項目にあるのは
Delete, Delete All, Change Position, Snap to Grid,
Send to Back, Bring to Front, Locked, Creation Code
複合技でCtrl+Shiftか?とやってみたけど普通に移動になった
ありがとう、じゃあ当方の勘違いっぽいです。調べながらちょっとずつまともなゲーム作りたいです
皆一時計算用の変数ってglobal変数に配列作って、それを使ったりしてる感じ?
一時ならvarでいいんじゃないの
31 :
28:2012/12/20(木) 19:29:29.81 ID:ZhuV6hzz
複数のインスタンスで同じ関数を実行したりする時に、全てのインスタンスに同一のローカル変数を作るのは無駄かなって思ってね。
ひとつの敵キャラに複数の当たり判定を持たせたいとき、
オブジェクトを判定部位ごとに用意するしかないかな?
一オブジェクトに複数の当たり判定を持たせられないから
複数のオブジェクトで作るしかないだろうね
判定直前だけマスク画像を変更するんだよ。
>>33、34
レスありがとう
マスクで調べたらいろいろとテクニックがあるみたい
不勉強でした
サンプル作って今からいろいろテストしてみるね
半額セールいつか絶対やると思ってた。
iOSエクスポータ買っちゃうぞおおお
もし買ったら
エミュレーターとかのレビューよろしくお願いしたい
質問なんだけど
枠にあわせてオブジェクトおいたら座標はどこ扱いになる?
左上?中央?それとも別のとこ?
自分で左上だと思ってやってみたんだがおかしくなるし・・・だれか教えてください。お願いします
意味がよく分からないけど
オブジェクトの座標はSprite の Origin が起点
枠にあわせてオブジェクト置くってのが分からないよ
ルームの座標のこと?
ルームにオブジェクトを置くと枠に従うように置かれるじゃないですか
そこで枠にあわせておいたとき座標はどこ扱いになるのかな
ブロックを置いておいてそこに重ねてオブジェクトを起きたいのでタイムラインを使って重ねようと思ったときに
座標どこにすればいいのかな・・・と思いまして質問した次第です
枠ってのはグリッドのことかね。グリッドに合わせてインスタンス配置したなら、インスタンスの座標は、グリッドの位置になるよ。
>>41 グリッドに合わせている場合は下にあるステータスバーのx、yが
それ以外はオブジェクトを右クリックしてChangePosition を見れば座標が分かると思う
ありがとうございました おかげで解決しました
steamでPro66%Offきてるね
チラ裏だが、勘違いしてたことを書き込む。
Gamemaker Studio, Macで動かなかったんか…
Macバイナリ作れるならIDEも動くんだと思って、ちゃんと動作環境見てなかったわ
まあ見てない方がアホだが
現在Mac向けビルドを試そうと試行錯誤中。
どうやら、Windows上でMac向けゲームデータを作って、
LAN経由でリモートログインして送信、ビルドするようになってる。
つまり、LANにつながったWindows PCとMacが必要ということらしい。
現状、送信するところで、「zsh:23= not found」とかいうエラーが出て
ビルドする所まで行かない。
zsh入れたのが悪いのかな?OSXクリーンインストールした方がいいのかも知れない。
iPhoneアプリ作るまで先が長いな…
steamあと3時間でセール終わっちゃうよ〜
俺はproとandroidだけ買ってみた
あんまり流れてないみたいだし最近作ったゲームを晒させてください
突貫工事でハンパな出来だしリアルの都合上しばらくパッチ当てられないんだけど、
再来週くらいからまたアプデする予定なので感想とかあれば是非お願いします。
一応ためしにコンペにも出してみてますので投票してもられると嬉しいです
日本っぽくない作風だね
ダウンロードはSteamのアカ持ってないとダメなの?
スタンドアロン用に圧縮してどっかにうpればいいんだけど、
未完成は未完成だし、出来ればsteamでやって欲しいのが本音です
ちなみにこっち側からは誰がプレイしてる〜とか見られない仕様です
52 :
46:2013/01/05(土) 08:18:24.57 ID:J+93UnlG
>>48 いいね!どんどん晒そう
GMStudio日記。
結局シェルをbashに戻したらコンパイル通ってMac上のテストは完了した。
次iOS実機テスト。
1.iOS Developer Program($99)加入した。住所氏名日本語はトラブルが起きやすいらしいので、英語アカウントを作成。
2.XCodeとコマンドラインツールのインストール。
3.iOS開発用の証明書を作り、XCodeにインストール。
4.Application Ovenから証明書が読みこめねぇ!色々試す。
5.Application Ovenは、OSを英語環境にしないと動作しないことが発覚。言語を英語に変更したら読み込める。
6.Bake Me on IPA押しても何も生成されない。←いまここ
ログを読むと、証明書周りのエラーが出ているので(あんまりよく分かってない)、
一度XCodeでサンプルアプリビルドしてから再挑戦かな?
53 :
46:2013/01/05(土) 09:24:25.63 ID:J+93UnlG
実機で動いた。
証明書は何度か作り直してるうちにおかしなものが出来ていたらしく、
作り直したら普通にビルド出来た。
ビルドが済むと、YoYo Runnerっていうアプリが出来るので、
iPhone側にiTunes経由でYoYo Runnerを入れて、実行。
PCで実行されているGamemakerのゲームデータ配布用サーバから
ゲームデータを自動的に落として実行してくれる。
あとは、普通にPC側のゲームデータを更新すれば、
iPhone上のゲームも更新してくれるみたい。ここからはMac要らないっぽい(本配布は別として)
Application Ovenってのは、要はこのYoYo Runnerそのものを生成するためのものなのかな?
iOSシミュレータ上での動作は、公式に説明が見つからず試せなかった。
今のところ実機での動作確認のみ。
iPhone用に作っても
YoYo Runnerをインストールしてないと動かないの?
55 :
46:2013/01/05(土) 20:20:53.27 ID:J+93UnlG
本配布時には単体で動くと思うよ
今は開発モードだから、そうなってるだけじゃないかな
しかしリスクでかい分、人に勧められるようなものでは無いな…
XCode使ってましたってレベルじゃないと詰む可能性がある。
そうなるとAndroidのほうはEc;ocpce通してビルドするのかね?
いつの間にか色々増えすぎて何がなんだか分からなくなったんだけど
GM5とかGM6みたいなWindows用のみが作れるのはスタジオって奴なの?
スタジオ スタンダードがゲーム起動時のロゴが消えて商用利用可能な奴?
それにしては何か随分高い気がするけど
スタジオはmac持ってればそっちも作れる
【GM:Studio】
WindowsとMac向けのゲームを作れる。ただしエディタはWindowsでしか動かん
無印:オブジェクト15個までしか作れない。実質体験版。
Standard:オブジェクト制限の無い奴。
Pro:上級者向け機能がついたバージョン。さらに数万円出せばスマホ向けゲームも作れる。
Master:Proの有料拡張全部入りバージョン。5万近くするので買った人今のところ見たこと無い。
MIPS:知らん
【GM8.1】
Studio以前のバージョン。Windows専用。エンジンとかが違う。
39ドルだし、昔のGMで作ったゲームはStudioでは動かんことがあるので、
存在意義は一応あると思われる。でも多分今後更新されなそう。
【GM for Mac】
PC版のGamemaker7相当。オワコン
>>59 ありがとう。非常に助かる
Studioの無印はオブジェクト制限だけ?GM8あたりまであったゲーム開始前のロゴ表示は無し?
GM:StudioのStandardとProの違いってなんだろう?
ぱっと説明見た限りだと、Pro版のみの機能ってこれだけかな?
間違ってたらごめん。
・チーム開発のためのバージョン管理システム
・開発者用総合ポータルの利用(アプリ課金・広告などの支援)
・拡張機能(要購入)により開発したゲームをHTML5,iOS,Andoidにエクスポート可能
・テクスチャーグループの管理(WinやMac向けゲームではあまり重要でない?)
・モバイル上での動作確認
大規模開発やマルチプラットフォームを考えなければStandardでも十分なのかね?
ここで学んで、朝飯を食パンからりんごに変えた
腹持ちは悪くないけど、なんか足りない
>>60 もううpぐれしちゃったから、自分で確認しちょくりー
無印でも出なかったりするんじゃない?それはないか
>>61 あんまり要らない機能多いよなー
>>63 最初はStandardで全然問題ないと思う。
Steamなら後から+50.00$でアップグレードできるし。
基本公式で買った方がいいんじゃないの
公式で買ったら、あとでSteamキーもらえるけど、
Steamで買ったら、公式のシリアルはもらえるのかな?
例題が難しいわ
画像の合成?みたいな奴が理解できん
68 :
名前は開発中のものです。:2013/01/19(土) 16:49:01.70 ID:+3onPkWk
【韓国BBS】家電は韓国の独走、「日本は最先端の韓国をせん望」
http://news.searchina.ne.jp/disp.cgi?y=2013&d=0107&f=national_0107_010.shtml 韓国のコミュニティーサイト「ガセンイドットコム」の掲示板に「こんな屈辱って…
韓国の威力の前にみすぼらしくなった日本、家電が事実上は韓国独走時代」とのスレッドが
立てられたところ、さまざまな意見が寄せられた。
スレ主は、サムスン電子の家電部門が2012年度は2兆ウォン(約1641.6億円)を超える
史上最大の営業利益を記録する見通しとの韓国メディアの記事を紹介した。
記事では、テレビ事業部が属する家電部門の業績は、日本のテレビメーカーが赤字を記録するなかで
打ち立てられたものであり、事実上、消費者家電で韓国が独走していることを意味すると指摘した。
スレッドには、日本の反応を揶揄(やゆ)するコメントが並んだ。
・「ネット右翼を見ると、日本の未来は明るいね」
・「ガラパゴスの先住民は、今日も最先端の経済大国である韓国をせん望していますね」
・「円安ウォン高でサムスンが滅びて日本企業が助かる、日本のネット右翼はそう信じています。
ネット右翼の情報を真に受けて安倍首相もそう思っているようだ。本当に脳細胞がシンプル」
また、日本の家電メーカーの衰退や、各国における家電製品の位置づけについて言及したコメントもあった。
・「特にシャープの没落が本当に大きい。東南アジアでも低価格の商品として扱われている」
・「昔は輸入家電製品が富の象徴だったよ。ソニーやパナソニック…。今はテレビ、冷蔵庫、
洗濯機、モニターなど、ほぼすべての家電製品が国産である。むしろ、今は輸入品の方が安い」
・「白物家電は雇用を多く創出するので、どこの国も放棄できない分野」
一応報告
win8環境下において、GM8で作ったファイルだと
同じサウンドが重なるとエラーになるようです。
ところで、同一PC内でStudioと他のバージョンのGMとの共存は可能ですか?
うちは8.1とStudio両方いれてるよ
ありがとうございます。
なら安心してStudioを試せそうです。
73 :
名前は開発中のものです。:2013/01/22(火) 22:53:37.48 ID:r6J9d9tf
Gamemakerだけの話じゃないけど
PCでSTG作ろうと思ったら操作方法で悩むね
パッド操作前提にするのが一番遊びやすいんだろうけど
PC用パッド持ってる人ってそんなに多いとも思えないから
やっぱキーボード操作前提で作ることになるのかなぁ?
STGに限ったことじゃないけど、操作方法はずっと悩む。
移動動作抜きで必要なキーが4つ以上になるとキーボードでもマウスでも対応しきれない
GM向けの箱○パッド(XInput)のライブラリを標準提供してほしい
久しぶりにリリースノートみたらexe単体(インストーラなし)も作れるようになったみたいだね
Studioの環境って安定してる? それともまだバグ多い?
77 :
名前は開発中のものです。:2013/01/24(木) 17:15:52.13 ID:r6zt7X94
それなりに安定してるけどな
質問!
STGで、ボタン押しっぱなしで発射され続けるようにする場合
press keyイベントにinstance_createをそのまま使ったら
↓のようにレーザーのみたいに連なっちゃうけど
>------------------------------
そうじゃなく↓のように一定間隔で発射され続けるようにしたい場合
>- - - - - - - - - - - - - - - - - - -
alarmで発射間隔を空ける方法が簡単だと思うけど
もっとスマートな方法ありますかね?
あとは弾のスピードを速くするくらいかな。
発射間隔とか硬直のタイマーの質問は何度もされてる気がするからテンプレにするべきだと思うな。
関係ないけどアクションゲームにて、空中で最後にジャンプキーを入力した時から一定時間以内に着地したら、
次のフレームに即ジャンプって結構操作性良くなるもんだな。
先行入力というものか。
>>79 ありがとうございます。弾のスピード速くするほうが簡単ですね。
あと自分が今試した方法で
弾の発射用オブジェクトをつくって
collision_rectangle(x1,y1,x2,y2,obj,prec,notme)で
発射用オブジェクトと衝突判定をすると上手くいきました
>>79 興味あるなぁ。先行入力は何frameくらいで設定してる?
>>81 そのアクションゲームは1年前に没にしたもので
今見ると床との距離が一定未満の時のみ入力を受け付けてるようになっている謎仕様なので参考にならないと思うが、
15フレームに設定されてた。実際は、もっと短くて良いかもしれない?
これがあるだけで、かなりプレイヤーが不条理だと思う死に方が減った。
>>82 ありがとう
先行入力には全く気が付かなかったので今後参考にするかもしれない
こんなイベントがあったのか
東京であったら言ってみたいな
最近画面揺れ?を作ってみたいんだけどビューでできるかな
できるよ
view_xviewとview_yviewをいじるオブジェクトを作るのが楽じゃないかな
5.3aから8.1に移行しようと思うも、8.1を起動するとすぐにフリーズしてjust-in-timeデバッグが出てきちゃう
自分と同じ症状を体験した人いない?OSはXP
8.1で使えない関数使ってるとか
説明足らずですみません。GameMaker.exeを起動するとすぐにエラーが発生するんです
いろいろ試行錯誤したところ、エラーが発生するまでの僅かな時間でFile→Newでnewgame作成を作成するとエラーが回避できることがわかりました
いろいろ探してみましたがどうしても解決できないのでここで質問させて下さい
とても初歩的なことだとは思いますが、
roomのspeedを60でシューティングのようなものを作っているのですが
スプライトのgifもそれにあわせてとても早くなってしまい、画像がプルプル震えてしまいます
roomのspeedとは独立させてゆっくりとしたgifアニメにしたいのですが、
どうすればいいのでしょうか?
image_speed で再生速度を変更できるよ
speed 1 で毎フレーム更新、 0.5 で 2 フレーム毎に更新(速度半分)・・・という感じ
最近じゃ秒間60フレームが一般的になってるのかね?
自分は古いノートとかで動作確認してるからフレームレートは30にしてるよ
画面揺れというか何というか 画面が回転するのってどうにかしてできないかな?
マリオ系にある吹っ飛ばされたときに視界が回転するみたいなやつ
アクションゲームで重力反転させるときに180度回ってほしいんだ・・・
だれかアドバイスをください お願いします
普通にview_angle[0]いじれば回せるでしょ
>>95 surfaceを使えばいいんじゃないかなあ
初期化でsurface作成、surfaceにターゲットを指定
ゲームループごとの処理として
回転させないもの以外をsurfaceに描画
depthを浅くしたオブジェクトでターゲットリセットしたあとにsurfaceを(回転)描画させる
回転させたくないオブジェクトはもっとdepthを浅くして通常のスクリーンに描画
最後に最もdepthが浅いオブジェクトがsurfaceにターゲットを指定
draw_text()でテキストを描画する際
一つのdraw_text()で変数と文字列を同時に描画は出来ないの?
それぞれ文字列用、変数用ってわけないと駄目?
STG系のゲームで敵にHPをもたせる場合(何回弾が当たったら倒せる、みたいな)
set variable to 300 とかにして
弾と衝突したら set variable to -10 となるようにしてるのですが・・・
これだとうまくいかないのですね
海外のサイトから1945tutorialの改造したものを取ってきて、開けてみたらこのようになっていたのですが
敵ボスとか作る場合皆さんどうされてます?
弾を破壊する命令を忘れてるとか?
>>98 分けたくなければ分けなくてもいいと思う
draw_text(x, y, "NUMBER :" + string(number))
>>99 何がうまくいかないか分からないけど
アイコン記述だと -10 するときに Relative にチェックが入っていないといけない
>>100 ありがとうございます、それも抜けていましたorz
>>101 relativeつけたら敵ちゃんと倒れてくれました
どうもありがとうございます
>>101 ありがとうございます。できました
文字と変数の連結はそうやるのね
このツールSteamで初めて知ってStudio版買っちゃった超新参だけど、
ここのプロの人らはもうアイコンなんて使ってないのかな?
全部GMLで書いたりしてるんかな
複雑な動作とかメンテナンス性考えるとGMLの方がいいよ
でもアイコンで作るのもGMLみたいなもんだから無駄にはならない
アイコンでいくつかゲーム作ってみて、色々変更する時に面倒と思ってきたらGMLやってみるくらいでいいんじゃない
ジャンプアクションの壁や床との衝突判定は
アイコンで作ったほうが簡単だった
そうなのかー。アイコンでいい部分もあるんだね
混ぜて使ってみるよ
と言いたい所だけどおかしいな。
BGMの音量でかいから、下げようと思って
codeにsound_volumeとsound_fadeいれてみたけどなんで変化しないんだろう
mp3じゃなくてwavのがいいって書いてあってwavにはしたんだけどなぁ
ログにあったBitmapFontという奴を使ってみたがこれいいな
必要な文字だけスプライトフォントにすればいいからメモリの無駄がないし
unicode対応だからGM8.1以降と相性がいい
mbtext_scriptsをこれ用に書き換えて使ってるぜ
sound_volumeでも音量が下がらなかったの、自己解決しましたorz
gamemaker sound wav bugとかで調べてると
どうもglobal settingsのnew audio engineにチェック入ってるとダメみたいで・・・
それとsound_volume(index,0.5)っていうのでは作動しなくて
sound_volume(index,.5)っていう風に0抜くとコードが動いてくれました
既出かもしれませんが初心者な物で、過去ログとかにも書いてないので一応書いてみましたが皆もこうなるのかな
しかしこれ調べて解決するのに何時間費やしたんだ・・・('A`)
GM8.1で作ってるんだけどちょっとアドバイス下さい
スプライトとか背景を実行ファイルとは別に用意して
必要に応じて読みこむようにしたいんだけど、
読込中にNow Loadingみたいな表示と進捗状況を表示するのって可能?
一つのスクリプト内で一気に全部読み込もうとすると
読込時間が長くてフリーズしてるみたいになる・・・
あれ、今気づいたんだけど・・・
GMstudioってmovie読み込ませることができないんですね
オープニングでムービー流そうとしたら、8.1まではあったsplash_が無くなってる
obsolete functionsってなにさ!
8.1買えばよかったなぁ
現状studioは8.1の完全上位互換とは言えないんだよなー
廃止された機能とかあったりするし
やはりそうですか・・・
studioでも動画流す方法の代替案を検索しても出て来ないですね
ん〜、どうするかなぁ 8.1買うかどうか悩む(´・ω・`)
プロジェクトファイルいっぱいうpされてるところ無いかねえ。
いろんなユーザーがどういう風に作ってるのかすんごい気になるし見てみたい
公式のフォーラムでチュートリアル探すとか
studioで、デスクトップ上にプロジェクトフォルダを作って
テストプレイさせてるんだけど
外部ファイル(プロジェクトフォルダ内に入れたgif)からスプライト作成しようとしてもうまくいかない。
sprite_add(fname, imgnumb, removeback, smooth, xorig, yorig);の、
fnameってフルパスじゃないと駄目なのかな?
なんかヘルプ上だとworking_directry+〜でやるように書いてるけど
F5を押してテストプレイさせた時、working_directryは
C:\Users\****\Appdata\Local\Temp\gm_ttt_20753
となってる。
この場所に、gifまで持っていってくれないっぽいんだけど…。
studio持ってないから自信ないけど作業ディレクトリなら相対パスでいいんじゃないのかな
>>115 チュートリアルじゃなくて個人が作ってるプロジェクトファイルが見たいです先生・・・・・・
>117
相対パスでやっても読み込んでくれないよ
プロジェクトファイルと同じ階層にimg.pngを置いて
オブジェクトのcreateイベントに
spr = sprite_add("img.png", 1, true, true, 0, 0); sprite_collision_mask(spr, true, 1, 0, 0, 0, 0, 0, 0);
sprite_index = spr
image_speed = 0.3
と書いて、そのオブジェクトだけをroomに配置して実行させても
ERROR in
action number 1
of Create Event
for object object0:
Trying to save non-existing sprite bitmap.
となる。
ん〜、まじか・・・・
>>118 プロジェクトフォルダに置くんじゃなくて、
GM:Studio上でIncluded Filesに含める必要があるんじゃまいか。
やり方はヘルプを「including files」で探してみてくれ。
exe書きだしてリソースのあるフォルダで起動しかないんじゃない?
ついでに、working_directoryだとWindowsのスタートメニューからexe起動した時に、
ファイルが読み込まれない(恐らく実行ファイルのディレクトリを指定してくれない)のを確認したので
program_directoryのほうが良い気がする。F5で走らせた時に読み込めなくなっちゃうが。
ところでGameMakerJapanって3/31に閉鎖されるのか。
今までありがとうと言いたいところだが、なくなったら真面目に困るので無料レンタル鯖とかどこかに文章移してくれないかな。
http://gamemaker.jpn.org/v1/
個人が作ったチュートリアル色々あるよ
ゲームはソース付きのはあんまり無い
外部リソースは使うなって言ってるようなもんに思えてきたorz
BGMとかどうしろって言うんだ
全部exeの中に入れるなんて無理だろ
ファンタジーゾーンやフリッキーみたいな周回スクロール作ろうと思ってるんだけど
やり方としてはviewを複数使えばできるのかな?
ああもうイラッとするなあ、このツール
雑魚敵にHPを設定して、そのHPがなくなると敵が消えるようにしたんだけど
消える時の断末魔として、効果音をつけると2回倒さないと消えてくれなくなった
効果音つけただけなのに、なんでこんな風になるかな
音消したら普通に1回HPが全部減ると消えるのに。わけがわからない
バグだとしたらよく皆こんなツール使ってるなあ
3年使ってるが一度もそんな現象に出くわしたこと無いぞ
文法を間違えてるんじゃないか
まぁ普通に考えたら音を再生するだけで、そんな面倒な問題が起こるわけないので、
どこかで書き間違えてるんだろうね
>>126~127
いやいやいや、自分はコードで書けないんだ
今回のもアイコン増やしただけ
たった1つ、サウンド再生のアイコン増やしただけでおかしくなる
コードで書いてたらどこかで間違ってるんだと思うんだけど
昔社会人になりたての頃に先輩に何度も言われた言葉を教えてあげよう
「コンピューターはミスをしない ミスをするのは人間だ」
If 条件
処理X // 条件が成り立った時だけ実行
となっているところに処理Yを追加して
If 条件
処理Y
処理X // 無条件に実行
になった的な何かと予想
「コンピューターはミスをしない ミスをするのは人間だ」 っていうのは言えてるしいい言葉だと思うけど
今回のはちょっとなぁ
(以下アイコン)
Event:step
Actions:
var if enemyhp is smaller than 0
start of a block
destroy the instance
end of a block
↑これだと敵が消えてくれて何とも無いんだけど
destroy the instanceの下に
play sound を追加するとおかしくなってしまう。
外人のtutorialのprojectfileを見て真似したものだからこれでいいとは思うんだけど。
そのチュートリアルじゃ爆発音なって消えていたし。
ソース見ないとわからん
アイコンで試してみたけど普通にできた
こういうのって窓からマウス出ないようにしたいよね
でもエクステンション使わないと駄目だしstudioで使えるかわからん
標準で付いてればいいのに
指定したインスタンスに指定したスクリプトを実行させるようスクリプトに記述したいのですが、どのように書けば良いでしょうか。
with(オブジェクト名かインスタンスID){スクリプト名}
でいけるか
>>137 ありがとうございます!
with(インスタンスID){script_execute(スクリプト名)} これでできました!
GameMakerで画像歪ませたり加算合成するのはどうすればいいの
テクスチャを貼ったプリミティブ図形を変形させれば
貼り付けたテクスチャも変形するよ
マルチプレイ要素が来るとか
ファンタジーゾーンみたいな端と逆の端が繋がってるステージを作りたくて
ずっとリファレンスとにらめっこしてるんだけど
やり方がさっぱり思いつかない
なにか賢いやり方あるかなぁ?
studioはユーザーディレクトリにフォルダ作られるのがうざいな
144 :
名前は開発中のものです。:2013/02/24(日) 20:34:54.09 ID:mGq8ixI6
わかる人いるかなぁ・・・・・
Proじゃないとたぶん無理なんだけど
(studioだと金払わなくても出来るけどいろいろバグるみたい?
一応フィールド作って球体描写までは出来るけど
フィールドに障害物などが作れなかった)
d3d_start()や
d3d_set_projectionなどを使って
3Dのフィールドとプレイヤーのオブジェクト
(スプライト無し、d3d_draw_ellipsoidを使い球体を描いている)
は作れたんだけど
z軸にプレイヤーのオブジェクトを動かすにはどうすればいい?
(x軸が横、y軸が奥行き、z軸が高さ)
145 :
名前は開発中のものです。:2013/02/24(日) 20:40:43.39 ID:mGq8ixI6
>>144の追記
x、yと言う変数は最初からありますがzと言う変数はありません
>>142 >>124と同じかな。
>>124で思ったようにview複数使えばできるよ
試しにちょこっとだけ作ってみたけど複数で大丈夫な気がする
当たり判定やホーミング弾やるときに一手間ありそうだけども
>>131 今更だがdestroy the instanceの後にplay sound入れてるのが問題なんじゃね
試しにplay sound → destroy the instanceにしたらどうよ
音周りなら環境差があっても特段驚かんな
GM8使いです。
sprite_replace()で7500*3000くらいの背景画像を読み込ませようとしているのですが
読み込める時と読み込めない時があります。
読み込める画像サイズに上限などがあるのでしょうか?
また、他にも大きな画像を使っており、メモリ使用量が3GB以上になることもあります。
GM8はまだ32bitOS前提だったと思うのですが、やはり大量のメモリを使おうとすると不具合が出たりするのでしょうか?
Studioってもしかして相手もStudioもってたら、スラプライトとかサウンドとか全部見られちゃうのか?
あっ、自己解決しました。
最近、game maker studio 1.1 を触り始めたのですが
どうも、透明色を有効にする場所が見つからなくて困っています
少し前だと、スプライトのところにチェックボックスがあったみたいなのですが…
消しゴムで消すのだ
>>152 できました!!
確かに理にかなっている方法だけど、新鮮すぎるw
ありがとうございます
アク禁解除されたかな?
おっやっと解除されたよ
今回は長かった
今、
FPS33でマイフレーム1ピクセルずつの横スクロールシューティング作ってるんだけど
1ステージの長さってどれくらいが適量なんだろう?
横幅6000〜8000くらいで作ってるけどこんなもんかな?
お気に入りのSTGのステージ幅を計っちゃいなYO!でもってそのまま数字をパクる・・・
一番安心というか権威に乗っかるというか。
ゲーム内で使用する文章を一つの外部テキストファイルにまとめて
ユーザーが編集できるようにする、って出来ないかな。
やっぱり全部実行ファイルに収めるしかないかな。外部ファイル呼び出しやってる人いる?
>>156 一つにではないけど、アイテム毎に1フォルダ1アイテムで、画像やキャプションや性能を入れて管理してたことはある。
>>157 RPGっぽいね。RPGのアイテム管理は血反吐がでそうだ・・・
>>156 外部ファイル呼び出しやってるよ。普通にfile_open_text_readするだけ
ただ、読み込み時は特定のフォーマットを前提にやるから
ユーザーにもそのフォーマットに従って書いてもらう必要があるね
アイテムの場合だと、テキストファイルに
ID=Item1
Name=アイテム1
Text=アイテム1の説明文です。
って書いてもらうとかだろうけど、ステージ毎の会話文を外部ファイルにしたいならもう少し複雑かな
>>159 ありがとう。
上の方でスプライトの呼び出しができない、って話があったから
テキストはどうかと思って。自分でも始めてみます。
GM:Sってexe単体で作れないんだな
ミニゲーム沢山作ってgamemakerの機能も大分熟知してきたから
本格的な横シューを作成中でやっと基本的なシステムと1面を作り終わったとこだけど
流石に作業量の多くて一人だと大変だ
あと4面分作り終えるのにモチベーション保てるか心配だよ
ゲーム自体はパズル感覚で作れるから苦にもならないんだけど
グラフィック作るのが嫌過ぎる。グラ作りに関してはもう才能が全てだよ。グラがクソだとゲームを作るモチベも下がる
そんなおまいに外注のススメ
だが相場がまちまちで実用的な助言ができん
ある程度の規模のものを作るなら
分業したほうが良いだろうけど
趣味で作ってるんだから
ツール以外に金はかけたくないよな
確実な収入が見込めるなら別なんだろうか
最新の1.1.872だと、F5でRUNしても起動しない?
絵が描けないなら3D使うって手もあるぞ
MMDとかならフリー素材が沢山あるし
バージョン8.1Proを購入?してライセンスキー貰ったのですが、
これどこでProに切り替えるんでしょうか?
購入後貰ったメールのリンクは普通にLiteのインストーラーだったし・・・
申し訳ありませんが知っている方ご教授下さい
171 :
170:2013/03/31(日) 12:49:16.32 ID:fzs7pkPq
なんで書き込んだ瞬間分かるんだ・・・
ご迷惑お掛けしました、初めに出てくるウインドウに入力箇所あったんですね
ぶっちゃけ分かりに(ry
救いようの無いスレ汚し申し訳ありませんでした・・・
8.1以前では変数にあらかじめ0を入れてくれる設定があったけど、
studioの方で見当たらないんだが、どこにあるの?廃止されてはいないよね?
173 :
名前は開発中のものです。:2013/04/02(火) 19:30:20.44 ID:IVg5Mz8J
最近興味を持ってgamemaker使ってみたいと思った初心者です。
日本語非公式サイトはよく目を通せないうちに閉鎖してしまったし
http://eidwinds.com/tooru/GM6HP/は文字化けしてて読めないし。どうしたもんかと。
英語は一応読めるので公式サイトのフォーラムをあされば初歩的なことはわかりますか?
動画製作ソフトとかもそうですが、日本語で書かれていても機能が具体的にどういう仕組みなのかわかるまで時間を要するし、調べられないんじゃ他のソフト使ったほうが良いのかと迷っています
動画は初心者講座は見ましたが、作ろうとしているものがアクションなので、スクロールを含むステージの作成方法など調べたいんです
176 :
名前は開発中のものです。:2013/04/02(火) 21:22:24.49 ID:IVg5Mz8J
>>174,175
ご丁寧にありがとうございます。174さんに紹介していたedwinsですが、IEでも火狐でもクロームでも、やっぱり文字化けして読めないんです。
さしあたっては175さんに紹介していただいたチュートリアルを見てみようと思います。お二人ともありがとうございました!
ブラウザのエンコードをS_JISにするのだ
178 :
名前は開発中のものです。:2013/04/02(火) 21:44:52.09 ID:IVg5Mz8J
>>177 おお。すごい!できました!!
文字化け直す方法はブラウザ変えるしらなかったので、設定で直せるって発想がありませんでした
ありがとうございます。さっそくHPを拝見してこうと思います
oggを再生できるようにするエクステンション探してるけど
8.1用のがなかなかみつからないよ
Game Maker Communityに3, 4個くらいあるはず.
エクステじゃなくてDLLだったかもしれないけど
181 :
名前は開発中のものです。:2013/04/05(金) 20:16:51.36 ID:izElASq2
例えば Set Variable で sprite_direction という変数が宣言されているものとする
(左向きが 0、右向きが 1 )
アイコン記述だと
Test Variable(variable sprite_direction、 value 0、 equal to)
Start Block
Change Sprite(sprite 画像の名前、 subimage 左向きの画像、 speed 0)
End Block
Else
Start Block
Test Variable(variable sprite_direction、 value 1、 equal to)
Start Block
Change Sprite(sprite 画像の名前、 subimage 右向きの画像、 speed 0)
End Block
End Block
という感じのをStep イベントあたりにでもつけるといいかも
現実的には特定の動作以外はアイコン記述は使わないので
変数操作はGML(Game Maker のスクリプト)を使ったほうがいいよ
というかアイコン記述で変数操作は本当に大変
GameMakerJapanの消失でわかりやすいGMLの日本語解説が無いな。
186 :
名前は開発中のものです。:2013/04/05(金) 23:10:06.53 ID:izElASq2
181です。
>>182さんご丁寧にありがとうございます!
GMLというかC言語が習いたてなので、後学のため確認させていただきたいのですが、教えていただいた内容は
「まずsprite_directionという変数を宣言されている」
↓
「sprite_directionの値を参照し、0ならば表示されているスプライトを左向きの画像に変える」
「 〃 、1ならば 〃 右向きの画像に変える」
というスクリプトを組んだ、という理解でよろしいでしょうか?
アイコンでやるにせよ、GMLでかくにせよ、変数の宣言は「左(右)キーを押す→script_direction = 0(1);」と書き出せば良い・・・のでしょうか?
流れはそういう感じです
変数の宣言は
アイコン記述だと
control タブの下にある Variables の左、四角いVAR アイコンが Set Variable
GML の場合
control タブ真ん中にある Code の左、紙マークを選択してその一行書けばおk
宣言自体はどこでやってもいいけれど、Create イベント内でやると後の見直しが楽
188 :
名前は開発中のものです。:2013/04/06(土) 01:43:54.20 ID:A6TxV0rB
すいません。こんがらがってきちゃいました。試したのですが上手く行かなかくて。何度もごめんなさい。
GMLでしたほうが良いとご助言いただいたので以下のようにしました
1、createイベント→Code→sprite_direction = D;
2、keyboard<Left>イベント→Code→sprite_direction = 0;
(keyboard<Right>イベント→Code→sprite_direction = 1;)
3、Createイベント→
>>182で教えていただいたアイコン記述丸写し
3をCreateでなくStepでも作ってみたのですがうまくいかず・・・。ルームに自機が生成されてからずっと左を向いたまま固定になってしまいました
object作っててなにか自分が勘違いしている、こうじゃないような気がする・・・のですが色々試してもよくわからなくて
最終的には左(右)向きに移動したときは左(右)方向への歩きアニメ、ジャンプしたときはジャンプアニメを左右別で出したいんです。
一度で理解できず、何度もお手数かけまして申し訳ありませんが、またお手すきの時にでもお答えくださると助かります
190 :
名前は開発中のものです。:2013/04/07(日) 21:17:45.20 ID:Ueyd0n9R
>>189さん
ご丁寧にありがとうございます!いただいたプログラムを拝見して勉強し、ジャンプのクリア条件を「ものに乗ったら」と改良して、振り向きもできるようになりました
ありがとうございます。ただ新たな問題が発生してしまって、一日格闘しても修正方法がわからなかったのでまた質問させてください(何度もすいません)
1、床に乗るとき接地しない(solid属性は衝突したものを一瞬前の状態に戻すから、ですか?どうすれば直せるでしょうか)
2、左右への振り向きとスプライトの交換はできるのになぜか移動はしない
3、デバックモードで、リセットして初期状態に戻すと、なぜか入力を受け付けなくなる
http://www.dotup.org/uploda/www.dotup.org4110365.zip.html (組んでるゲームです。ダウンロードパスはneet。zipのはり方がわからなかったので、うpろだを使いました。お手数かけまして申し訳ありません)
接地しなかった要因はいくつかあってとりあえず gravity = 1 でいいと思う
ブロックと当たり判定を取ったときにキャラクターをブロックの上に移動するような座標修正を追加しないといけない
計算が面倒くさければCollisionイベントでアイコンのmove → jump → Move To Contact を使い、
さらにgravity と垂直速度の大きさ(vspeed)を 0 にする
当たり判定も少しおかしいので、当たり判定は矩形に統一してOriginの位置もこの場合左下に統一したほうがいいかも
項目2は x = +10 だと x に 10 を代入するということになってしまうので
x = x+ 10 または x += 10 というような感じになる
ジャンプの処理は y に直接値を入れるよりは 速度をつかって vspeed = -20 としたほうが自然に見えるよ
項目3 仕様。リセットしたらウインドウを一度クリックしましょう
Begin Step内のやつは間違いでした。申し訳ないですが無視してください
193 :
名前は開発中のものです。:2013/04/09(火) 16:12:06.68 ID:Yh2na8qb
>>191さん
ありがとうございます。教えていただいた内容を反映したのですが、どうもうまくいかず・・・。
自力解決しようと調べたのですが、どうもわからなかったのでまたお時間ある時に返答いただければ幸いです
ジャンプと左右移動、ブロックへの接地はできました。
ただ左移動と右ジャンプがどうしてもうまく反応しなくて。
左ジャンプ時に左入力で斜めジャンプできているので、左キーの「x -=10」は機能していると思えるし、
また右ジャンプも左右判定があるだけで、それ以外は左ジャンプとおなじコードなのだから出来ないのは変です
おそらく床とのコリジョンの設定がおかしいじゃないかとは思いますが、よくわからなくて
http://www.dotup.org/uploda/www.dotup.org4114286.zip.html(パスは前回と同じくneetです。お手数かけます)
Sprites の設定でOrigin がばらばらになっているせい
回転させるようなものは全部 center でいいかもしれない
あと接地に関する重力判定を毎フレームやる必要がある
アイコンだとCheck Collision、GMLだと place_meeting(x,y,obj)が使える
作品投下して外人にもアピールできるコミュニティないかなぁ
steamはめんどい
公式のフォーラムは?
その条件ならどう考えてもsteam workshop
別にめんどくないし
ゲームのアップデートもプレイヤーに再ダウンロードとかさせずに自動だし
コメントのやりとりもできる
steamにアップってStudioじゃないと無理?
8.1でもアップできるの?
steam版のstudioじゃないと無理
ちなみに無料版でもうpはできる
おぅ…そうなか
いい加減Studioに移行するかなぁ
移行ってすんなり出来るもんなの?
ドット絵のカクカクを残したままにしたいのに、なぜボヤけるのだ・・・
もうへとへとです。
203 :
202:2013/05/23(木) 12:40:26.56 ID:TwS1x6eJ
グラフィックオプションがあったのね・・・
すいません、解決しました。
>>201 プロジェクトによる。
obsolete functionsを沢山使ってるようなら辛い。
あとStudioじゃ動かないextensionも結構ある。
GM5〜GM6あたりに非課金で使ってた事があるのですが、その場合購入するならStudioスタンダードと8.1ではどちらがオススメでしょうか?
また、スタンダードは50ドル程度でプロフェッショナルにアップグレード出来たりするんでしょうか?
>>205 >>59 購入するなら将来性があるStudio一択。
アップグレードは知らない
>>206 ありがとうございます
過去のGMの使い勝手も忘れかけてる頃なのでStudioを購入してみようと思います
無学で申し訳ないんだがWin版の8.xで吐き出したexeって64bitOSでも動くの?
そもそもこういうのに64bitとか関係ない?
210 :
202:2013/06/05(水) 23:19:26.26 ID:HFfOHR5b
bit違いは確認できないからわからないな〜
ところで・・・
もう既出かもしれないけど、スプライトなどの名前にハイフン使っちゃいけないのね。
なんでエラー出るのかさっぱりわからなかった。
ちょっとしたストーリのあるゲーム作ったら
絵が多かったからか実行ファイルが10MB越したよ
さすがにBGMとかは外部にしてその都度読み込む形にしてるんだけど
10MBくらいなら許容範囲かな?
それくらいいいんじゃない
でも起動時間が長くなるから外部ファイルに出来たらした方が親切かも
前々からwarゲームを作ってみたいと思ってたので
8.1で四角マスのゲームに挑戦してみようと思う
GAMEMAKERはアクションゲームなら直感的に自由に作れるけど
warゲームは色々と考えないといけないから大変そうだ
Studio Standardだとバイナリデータの読み込み/書き込みに関する関数が扱えないみたいだな
ビルトインの関数は元々高機能でもないしね
適当なDLLとか使った方いい気がする
on mouse move と同様の関数って無いよね。
自作しなきゃダメ?
自己レス
クリエイトイベントでマウス位置を変数に入れて
ステップイベントでマウス現位置と変数をifし、ifのあとにマウス位置を再代入って形で出来ました。
クリエイトでなくビギンステップで初期位置代入やると変数と現位置が同じになっちゃうのね。
ビギンステップの必要性がイマイチわからんです。
そのうちUIや配列関連で便利な関数セットとか作りたいので機能要望あったら頼む
219 :
名前は開発中のものです。:2013/07/08(月) NY:AN:NY.AN ID:UXPl/Pq9
装備ごとにキャラのグラフィック変えたいんだけどやり方分かる人いますか?
装備少なければ種類分作ればいいけど
頭・胴体・足に分けて装備させるようになるとパターン増えまくって死ぬOTL
装備を付けるキャラオブジェクトの名前をobj_playerとする
キャラのスプライトの名前をspr_playerとする
兜のスプライトの名前をspr_helmetとする
鎧のスプライトの名前をspr_armorとする
ブーツのスプライトの名前をspr_bootsとする
■obj_playerのCreateイベント
head = spr_helmet;
body = spr_armor;
foot = spr_boots;
■obj_playerのDrawイベント
draw_sprite(spr_player,image_index,x,y); //キャラ描画
draw_sprite(head,image_index,x,y); //頭装備描画
draw_sprite(body,image_index,x,y); //体装備描画
draw_sprite(foot,image_index,x,y); //脚装備描画
これはhead、body、footという名前の変数にスプライトIDを入れて
draw_spriteという関数でそれぞれを描画している。
つまり、その変数に代入するスプライトIDを変えれば装備のグラフィックを変えることが出来る。
(例)foot = spr_boots; を foot = spr_geta; にする
draw_spriteみたいな描画関数は、
後に実行したものがより手前に描画に描画されるので順番に気をつけること。
221 :
名前は開発中のものです。:2013/07/14(日) NY:AN:NY.AN ID:uKqBAVJQ
>>220 遅くなりましたがありがとうございます。
なんとか実装することが出来ました。
さぁて、次は剣を振り回させるモーションを作るぞぉ!
d3dとsurfaceが併用できないって普通にhelpに書いてあった。。
気づくまでえらく時間がかかってしまったが
これって致命的な仕様ではなかろうか。
3dゲームで斬撃エフェクトのテクスチャに
背景を歪ませることができないってことだよな。。
人型のキャラを動かす時って皆モーションどうしてるの?
GIFアニメ?連番PNG?各部位のグラフィックを組み合わせてGM側でモーション組んでる?
GM側で各部位(頭・体・手足)のグラフィック組み合わせて歩かせたり走らせたりするのって
いったいどういう風にすればいいのやら・・・。
透過色が1つならGIFアニメで
透過色が複数ならストリップにした透過PNG使ってる。ストリップ画像作るの面倒くさい。
多関節キャラ作るならGM内でスクリプト組むしかないんじゃないかな。
3Dのようにボーン機能ってあったっけか。
スイッチに弾が当たったらブロックを表示させたいんですけど、どうしたらいいんでしょうか?
下のはスイッチのオブジェクトを部屋に配置したものに書いたんですけど、作動しませんorz
bulletは弾の、blockNormalはブロックのオブジェクト名です。
if(collision_rectangle(128,128,159,159,bullet,true,notme))
{
instance_create(96,256,blockNormal);
}
GM7と8からStudio Standardへのアップグレードが$9.99か
>>225 ルーム座標じゃなくてスイッチの座標を基準にしなよ
スイッチの大きさを31x31として、centerを画像の中心にしたと仮定
if(collision_rectangle(x-15,y-15,x+16,y+16,bullet,true,true) )
{
instance_create(96,256,blockNormal);
}
8からstufioへアップグレードできるようになったのね
1000円くらいなら移行しちゃってもいいかな
>>227 スイッチは32×32サイズでしたorz
Centerは(0,0)だったので
if(collision_rectangle(x,y,x+32,y+32,bullet,true,true))
としてみましたがやはり作動しませんでした。
Centerを真ん中の(16,16)にして
if(collision_rectangle(x-16,y-16,x+16,y+16,bullet,true,true))
にもしてみましたがやはり作動しませんでしたorz
あと後ろ二つのtrueの意味がいまいちよくわかってないんで解説お願いできますでしょうか?
wikiより転載↓
引数 prec をtrueとするとスプライト画像から正確に判定します。falseとすると境界枠のみで判定します。
引数 notme をtrueとすると実行主体であるインスタンス自身は対象外となります。
collisionの書式を聞いといてなんですが・・・
スイッチをOFFからON、ONからOFFへの切り替えもしたいので、OFFのスイッチは部屋に配置できるけど
ONのスイッチは、OFFのスイッチに弾が当たった時に生成されるので、objectのEventsの方で弾との判定
するようにしたので、部屋に配置してのcollisionチェックはいらなくなりましたwww
で、かわりにobjectのEventsの方で弾が当たった時、変数「bna(block normal appear)」=1 or trueとし、
部屋に配置したOFFスイッチの方のコードで
if(bna==1 or true)
{
表示処理
}
としたいんですけど、変数の設定の仕方がわかりませんorz
続き(ぇ
objectのEventsでVARを発見したので、OFFスイッチのオブジェクト「swichoff」のobjectのEventsの方で
Creatイベントで変数「bna」= 0
bulletとの衝突判定イベントで
change instance で swichoff → swichon にオブジェクト切り替える処理
変数「bna」= 1 を代入
instance destroy で 弾を消す処理をしてます。
で、部屋に配置したswichoffのコードで
if(bna=1)
{
表示処理
}
としてみましたができませんでしたorz
コードなんて書かずに全部objectのEventsで表示処理もしてしまえば簡単でしょうけど
スイッチを作るたびにオブジェクトが増えるのもアレかなぁと・・・
8とstudioは別物だと思って既にプロ買っちゃってる・・・
ファック シット
studio発売と同時にうpぐれ用意しとかないとかほんと舐めてるよな
まぁ8.1からStudioへのアップグレードキャンペーンは去年もやってたし。
なんかアプデしたら色々おかしくなったような。
クリエイトイベントでマウスカーソルをスプライトに変更してるんだけど、
最新版にしたところ、この変更が効かなくなってる。
アプデ前なら普通に変更されてたが・・・
ev_mouse_enterでも同様のカーソル変更付けているけど、こっちは問題なし。
>>124みたいなループ画面の話だけど
俺がこういうの作るとしたら自機を右に移動させるとき、
自機オブジェクトを右に動かすのではなく、
自機以外のすべてのオブジェクトを左に移動させて、
左に一定距離離れたところで右に出現させるって方式にするんだけど
それなら画面の端がなくスムーズにつながってるように見えるし
敵が自機を狙う時も画面端をまたぐってことがない
これって無駄な労力かな
差額アプグレ返事きた
アップグレードクーポン配布8/31〜かよ
ProからStudioへアップグレード申し込んだひとほかにいる?
これちょっと興味あるんだけど
3DなFPSとかは作れないのかな?
詳しいひと教えて下さいまし
DOOMっぽいのがチュートリアルにあった気がする
でも基本は2D向きだよ
unityのが適してると思うよ
シンプルモードだからじゃね
どっかからアドバンスドモードに変えると色々出てくる
発射位置が後ろで攻撃しづらそうだな
その辺りの「思うように当たらない」ってのをゲームのキモにしてます
回数制限付の溜め撃ちをうまく使っていくのがコツになる予定
248 :
名前は開発中のものです。:2013/09/03(火) 14:17:16.02 ID:mA4l7mfm
らせん状に飛ぶ弾がいいね
すいません、外部テキストファイルから、特定の文字列を読み込んで表示しようとしています。
//外部テキストファイル(gaibu.txt)
TEXT001 = こんにちは
TEXT002 = さようなら
上記のgaibu.txtを、Included Files に読み込んで、DRAWイベントに下記のように記述しました。
open_txt = file_text_open_read(working_directory + "gaibu.txt");
str_txt = file_text_read_string(open_txt);
draw_text(10,10,string(str_txt));
この場合、[ TEXT001 = こんにちは ] と表示されました。(こんにちはの部分はなぜか文字化けしました)
これを、TEXT001の部分を指定して、[ こんにちは ] や、[ さようなら ] とだけ表示させたいのですが、
どう指定すればよいでしょうか。よろしくお願いします。
8.1?studio?
すいません、Studioです。
文字化け対策→テキストファイルはUTF8で保存してみる
テキストファイルはあくまでテキストファイルなのであって、コードを書く場所じゃない
「こんにちは」と表記したいのであれば、ただ単に
こんにちは
と記述しておけばよい。
ありがとうございます!
UTF8保存であっさりちゃんと表示されました!
また、変数指定は、ini_read_string で対応できそうです。
//外部iniファイル(gaibu.ini)
[AISATSU]
TEXT001 = こんにちは
[KAGU]
TEXT001 = つくえ
ini_open("gaibu.ini");
str_txt = ini_read_string("AISATSU","TEXT001","あいさつ");
draw_text(10,10,string(str_txt));
ini_close();
//表示
こんにちは
iniだとセクションから指定できるのがいい感じです。
上記を read_string("KGAU","TEXT001",かぐ) と記述すると、変数名は同じでも
//表示
つくえ
になりました。
追記です。
ini_open(); は、普通のテキストファイルでも読み込んでくれるようです。
テキストファイル読み込みで上記と同様の動作が出来ました。
YoYoCompilerって1.2の新機能なのかと思ったら別売りなのかよ
studioのフォント設定って、使用文字を予め登録する方法しか出来ないのけ。
確かどこかで、8あたりからPCにインストールされているフォント使用ができなくなったとか読んだような。
studioでインスコフォント使える?
>>256の訂正ですorz
> studioでインスコフォント使える?
↓
studioで、フォント登録せずに、GMLから直接フォントを読み込める?
と書きたかった・・・
結局Studioではdraw_textで日本語扱えるのかい?
259 :
syun77:2013/09/24(火) 01:34:00.79 ID:4nhqooGC
気になってStudioで実験してみましたが日本語、ちゃんと使えました。
1. 使用する文字を登録する
2. SetFontで登録先を参照する
3. draw_textで日本語が表示される
GML内にdraw_textを書けば半自動で抽出できるし、
外部のテキストからまとめて登録する方法もあります。
抽出が手間なら、例えば外部テキストから第一水準文字をまとめて登録してもいいかもしれないです。
ちなみに設定方法をまとめておきましたので、よかったら参考にしてみてください。
ttp://2dgames.jp/2013/09/24/gms_utf16font/
乙
安心してStudioに移行できるわ
問題があるとすれば、スクリプト内で日本語記述が文字化けする場合があるって事だな。
この文字化け、絶対起きるとは限らないようで、化け条件がよくわからない。
自分の場合、2,3日は文字化けせずにいるが、安心した頃に文字化けしていたりする。
ただ、今のところ//コメント内にしか日本語記述したことがないので、スクリプト本文まで文字化けするのかどうかは未確認。
>>261 エディタ内で文字化けしてても実行したら正常に日本語出力される?
初歩的な質問ですみません。
Studioを使用して製作しているのですが、mac用のアプリケーションで書き出す方法を教えて頂けないでしょうか?
macを持ってはいるのですが、バージョンが古くGameMaker自体入れられません。
>>262 今はエディタ内で日本語を一切使わないようにしているので最新版ではわからないが、
以前のバージョンでは文字化け内容がそのまま出力された。
もしかしたらスクリプトチェックが悪さをしているのかも。
日本語出力が気になって買うのをためらっているなら無料版で試してみたらどうだろう。
・スクリプトエディタ内で日本語を書きまくり、どういった記述方法で化けるかを試す
・スクリプトエディタ関連のオプションを切りまくってみる
日本語記述→即座に化ける、というわけではないので、なにか化け条件があるはず。
>>263 メニューバー/ファイル → クリエイトアプリケーションで「ファイルの種類」を変更してみてはどうだろう。
>>262 今試しに日本語コメントを記述して試してみたところ、
保存→ソフト終了/再起動→文字化け という経緯になった。
ソフト終了時に文字化けが起きる気配。
スクリプトを外部エディタで開くとやはり文字化けしているが、
UTF-8形式で開くと文字化けが直っている。
文字化けは単なる文字コードの食い違いが原因のようだ。
内蔵エディタの文字コードを変更出来る項目があるのだろうか。
>>262 連投申し訳なし。
文字化けしていても日本語出力は問題ない模様。
show_message(”あいうえおかきくけこ”);を文字化けさせ、
動作させたところ、問題なく日本語表示された。
やはりエディタの文字コードが原因だ。
267 :
263:2013/09/24(火) 16:59:16.27 ID:8gwp7dAO
>>264 ありがとうございます。
早速試してみたのですが、どれで書き出してもexeファイルになってしまい、macでは開けませんでした・・・
せっかく教えていただいたのにすみません。
268 :
syun77:2013/09/24(火) 23:21:10.68 ID:JmY9rapQ
確かに再起動すると文字化けしますね…。
早速YoYo Gamesにバグ報告しておきました。
すぐに直るといいのですけど…。
studioだと
Treat uninitialized variables as value 0(未知の変数の0リセット)にあたるオプションは無いのかな。
あと、エディタ右クリックのcode snippetsでif文などを入れると、最後の}にセミコロンが付くんだけど→ };
GMLではこれが正しい書き方って事? 海外のコード文みてるとセミコロンを入れてない・・・
入れても入れなくてもちゃんと動くけど、なんかモヤモヤする。
大抵の言語では } の後にセミコロン入れないでしょ
GM:studioに
execute_string関数なくなったんだけど、外部のスクリプト使ったり、文字列を関数として使いたい場合って皆どうしてるの?
その関数は使ったことがないけど、Included Filesに外部スクリプト読み込むのじゃダメ?
自分は、1つのスクリプト内で、一回だけ初期値を変数に設定したい。
hoge = 1; ←1回だけ実行
if (hoge < 10) {
hoge += 1; ←以後、こちらだけ実行
}
クリエイトイベントに初期設定すればいいんだけど、できれば1つのスクリプトにまとめたい。
やっぱり無理かな。
>>272 もう一つ変数使って、その変数がfalseの時だけ初期値設定してtrueにするしかないんじゃないかなぁ
Studio導入して日本語文字化けなんてしないじゃんとか思ってたけど
発生したわ。しかも文字化けした状態でエディタ開いて保存すると出力結果も文字化けしちゃうんだな。
string_posなんかで改行文字を探す時って、sub_strにどういう文字を使えば良いんだろう。
"#"や"\n"もダメで行き詰ってしまった
275 :
syun77:2013/10/02(水) 07:26:57.12 ID:ItF50Qz/
// 改行が入った文字
var str = "a
test";
// 改行文字
var crlf = "
";
// 改行文字の位置を探す
var pos = string_pos(crlf, str);
// 2と表示される
show_message(pos);
// 置き換えテスト・改行なしで「atest」と表示される
show_message(string_replace(str, crlf, ""));
ソースコード内で改行した文字を検索文字列として使用することで取れました。
これでうまくできるでしょうか。
あと、GM:Sで日本語が文字化けする件で、YoYoGamesに問い合わせているのですけど、
「再現しない。最新版使っていますか?」との回答が来ています。
最新版(v1.2.1135)を使っているので、ちょっと行き詰っています。
再現手順を書いておきますので、よかったらどなたか試して欲しいところです。
1. "scripts"フォルダを右クリックして"Create script"でスクリプトを追加
2. 日本語のコメントを入れる(// あいうえお)
3. 保存してGM:Sを立ち上げ直すか、"File > Recent Projects"でプロジェクトをリロードする
4. 再度スクリプトを開くと、"う"の部分が文字化けしている
ひょっとしたらOSの問題かもしれないので、使っているOSも教えてもらえると助かります。
(私のところではWindows7 64bit版で試して文字化けしました)
>>275 ありがとうございます。
文字化け確認してみました。
再起動時に「うえお」が文字化けしました
277 :
276:2013/10/02(水) 08:25:40.32 ID:EvGljsVu
失礼
OSはわたしも同様にwindows7 64bitです。
>>275 win7 64bit/GM:S v1.2.1135
結果は以下のようになりました。
//あいぁE??ぁE
(?は◆+?マークです。)
外部テキストファイル読み込みなら文字化けしないので、
日本語表示は常に外部テキスト使っています。
同じくWin7 64bit, GMS最新版で確かめてみた。
保存前と保存後の「あいうえお」をテキストエディタにコピペしてバイナリエディタで見たんだが、文字コードの違いで起こる文字化けというよりは、データ自体が変わってしまってるらしい。
「う」なら、UTF-8でe38186だけど、これが再読み込み後に謎の力でe3818145になり、e38181+45で「ぁE」になってる。
「お」や「す」なども同じ値に変化して「ぁE」になる。
保存時に変な圧縮処理でもしてるのかな。
win8 64bitでも起こる
281 :
syun77:2013/10/02(水) 22:53:33.68 ID:yX9b0fLS
皆様、ご協力ありがとうございました。
YoYoGamesさんとやりとりしたところ、システムのロケーション設定が原因ということが分かりました。
(OSが文字コードを自動で変換するもので、ここを「米国」にすると文字化けしない。
ただし他の日本語アプリが文字化けするので変更しないほうがいいです)
修正時期はまだ分かりませんが、
「再現がとれたので、開発チームにアサインしておくよ」
とリチャードさんが言っていたので、ひとまず問題として認識してくれたようです。
しばらくは
>>278 さんの指摘どおり、
外部エディタで編集するのがいいかと思います。
(メニューから、File > Preferences... > Editors > Code Editor
のところに、さくらエディタなどを設定。
ファイルを右クリックして「Open in External Editor」で開くようにする)
ちゃんと確かめてないんだが
GM Studioだとdraw系の関数で描画されるものは、
その関数を実行するオブジェクトのdepth - draw系関数で描画した回数
のdepthで描画されるんかな?
え? execute_stringなくなってるってマジ?
俺結構多用してるんだけど
なくなったのなら移行は厳しいなぁ…
DTD は禁止されています。
って何さ。
そら素人がそんな危険な技かけたら
下手すりゃ背骨が折れる
そうそうそうプロレス技のね〜 あれ危ないよね〜 って違うでしょ!
DとTしか合ってないでしょ!
こんな便利な開発環境があったんだ!
ちょっとINSTALLしてくる
そして
今月中に一本つくっちゃる
html5でゲームデータのセーブってどうすればいいんだろう?
自分のサーバーにPHP置いて
url_open(url);でデーターベースなりなんなりを使うのが現実的じゃないかね
290 :
syun77:2013/10/23(水) 00:44:13.69 ID:+3ke2Ybo
HTML5でもINIファイルの読み書きはできました。
// INIファイルを開く
ini_open("save.ini");
// INIファイルからセクション"test"、キー"test"を取得する
var val = ini_read_real("test", "test", 0);
show_message(val);
// INIファイルに書き込む
ini_write_real("test", "test", 100);
// おしまい
ini_close();
サンプルもこちらにアップしておきます。
2dgames.jp/html5/test_ini/
「Click」ボタンを押してメッセージを入力・保存すると、次回起動時もそのメッセージが表示されます
ほほぉ
サーバー内で直接iniファイルの読み書きできるのか
お手軽にwebアプリ作れそうでいいねこれ
292 :
288:2013/10/23(水) 23:08:11.39 ID:Dslke69T
皆ありがとう。
INI使えるのめっちゃいいね。これなら何でも作れる。
おお、すげー
めちゃくちゃ絵うまいね
295 :
syun77:2013/10/27(日) 19:46:24.85 ID:yru85vj+
GameMakerで初代GTAを3Dゲームにリメイクしている人がいるみたい。
・初代『Grand Theft Auto』のクリエイターが同作を3Dビューでリメイク
ttp://www.gamespark.jp/article/2013/10/17/44101.html シリーズ最新作『Grand Theft Auto V』がヒットしている中、
初代『Grand Theft Auto』の開発を手がけたクリエイターMichael Dailly氏が
同作の3Dビューリメイクを試みているようです。
制作には彼が勤めるYoYo Gamesのゲーム開発ツールGameMaker Studioを使用。
しかしながらマップローダーや基本的なビルダーシステムを
ゼロから構築しているのだそうです。
現在エンジンはHTML5及びWebGL(いずれもプラグイン不要)
において60FPSで動作しているとの事。
3D用のライブラリを独自に作ってるのかね
最近 文字が正常に表示されなくなったんだけど、これどうすれば治るんだろう。
298 :
syun77:2013/10/28(月) 22:33:32.60 ID:0Np/WWIl
そうみたいですね。
GameMakerの3D機能は基本的なものしかないですし。
この記事を見てHTML5でも3D描画できたっけ、と思って調べたら
Global Game SettingsからのHTML5出力設定を変更したら
描画できるようになりました。
(WebGLを、Auto-DetectまたはRequiredにする)
WebGLを有効にすると3D機能だけじゃなくて、
2Dでの加算ブレンド描画が有効になるので少なくともAuto-Detect
にしておくといいんじゃないかなあと思いました
299 :
名前は開発中のものです。:2013/10/31(木) 00:15:04.70 ID:GRGNUrR4
gamemakerに近い感じの制作ソフトのMMF2は
Android向けのパッケージ化ツールが8,500円なのね
gamemakerでAndroid向けのゲーム作ってみたいけど
199$はちょっと高くて二の足踏んでるよ
もうちょっとこの辺頑張って欲しいねぇ
GM:Sでテスト起動させてたらout of memoryのダイアログが出て
4GB積んでるし、延々と何かが増え続けるような処理無いし、
なんでだろうなーと思って調べたら原因判明。
デバッグウィンドウのWatchで変数を監視してると
どんどんメモリ使用量膨れ上がるんだな。
GameMakerStudioだけど、トリガタイプのアクションを起こそうとするとエラーを吐きやがる…
トリガー用のオブジェクトのCreateでglobal.trigger[trg]=false;と書いて
CreationCodeでtrg=1;なんてやってもダメとか…
結構仕様変わってる?
ぐへぇ、自己解決した
begin stepに書かなきゃダメなのね…
>>302 CreationCodeってRoomのsettingsタブから開くやつのこと?
だったらRoom Creation CodeはCreateイベントより後に実行されるからだと思うよ、
Createイベント実行時にtrg変数が未定義だからエラーになってるんじゃないかな。
Helpのevent orderを読むとよいよ。そういう話でなかったらすまぬ。
>>303 ありがとう、実はその後更に間違えていることに気付いたんだ
定義しなくてもデフォルトで0にするとあったから、配列に関してもそうだと
勝手に思い込んで…恥ずかしい限りです
最終的にトリガ用のglobalな配列の生成&初期化するpersistentな
オブジェクトを作ることで解決したけど、このやり方は標準的なのかな?
Studioから未定義の変数に0を入れるオプションなくなったんじゃないっけ
ウィンドウを最大化すると妙にちらつくのは俺だけかな?
メインのウィンドウを最大化、MDIのウィンドウも最大化するとタイトルバーが
チラチラしちゃう
スタンダード版をレジストしたけど、これで5000円ってのは破格過ぎるな
自分も。
スクリプトエディタも毎回ウィンドウの左側が見えないような
位置に出てくるのどうにかしてほしい。
GameMakerStudioに移行しようとしたのですが、sound_play関数でまったく音が鳴りません。
GMLを使わずGUIを使えばなるのですが。
なにか事前の設定などがあるのでしょうか?
古い関数なんじゃね
音関係は廃止された関数がある
audio_play_soundに変更されたんですね。
あとexecute_stringとexecute_fileが廃止されたようですが、代替手段などはあるのでしょうか?
かなり頻繁に使っていた関数だったので、なくなるとかなり厳しいです。
Global Game Settingsで「Use New Audio Engine」のチェックを外せば
sound_playとかが使える。
文字列からインスタンスidを取得したいならasset_get_indexを使うなど
特定の機能に対しては代わりに使えるものがあるけど、execute_string
とかの完全な代替はないと思う。
ヘルプを見ると、Studioはマルチプラットフォームを主眼においているから
・Windowsデスクトップでしか使えない (CD関連など)
・新しい実行プログラム(ランナー)が動的にコードを生成できない (execute_stringなど)
・ランナーの動作を妨げる (スプラッシュスクリーン関連など)
などとみなされた関数はそのほとんどをobsoleteとして使えなくしたらしい。
Windowsオンリーで開発してきたユーザーのことも大事にしてほしかったと思う。
ありがとうございます。
GM8だとwindows8上で同時に効果音を鳴らすと強制終了してまうのでstudioへの移行を考えていたのですが、それも難しそうですね。
一から作り直すか、いま作ってるゲームは諦めるかしないとダメそうですね。
GM8でwin8で効果音二つ以上同時に鳴らすと落ちるの?
本当?win7でやってるから知らなかった。どうしよう
全く同じタイミングで同じ音を鳴らすと落ちるのか?
少なくとも自分のゲームでは同じ音が重なっても落ちないぞ。
前も同じこと書き込んでる人居たけど、みんなそうなの?
自分自身はwin7なんで、直接確認したわけではないですが、複数のwin8のプレイヤーからエラー報告が上がりました。
で、調べていってみたところ、同一ステップ内で効果音が重なると強制終了になるみたいです。
また、コントロールパネルでスピーカーをオフにすると落ちないという報告もあがっているので、サウンド関係のエラーであるとは思います。
Win7だから確かめられないけどありがとう!
ぐぐったらyoyogamesのCTOいわく、Win8のDirect Musicのバグだってさ
MSに報告書出したみたいだけど去年の話みたいだからこれから修正される可能性は……
ゲームオーバー時やステージクリア時に画面を薄暗くしたいのだけど
画面と同サイズの画像を用意してステップ刻むごとにアルファ値を変化させる
って方法しかないのかな?
それで実装はしたけど、タイムラインでも使った良い方法無いかな
draw_set_alpha()とdraw_rectangle()を組み合わせる方法あるけど
描画オブジェクトのdepthとか気にしたくないから
1ピクセルスプライトのオブジェクトのimage_xscaleとimage_yscaleの値を
それぞれview_wviewとview_hviewにしてやってるな。
depth云々は、大抵UIの描画関係はゲームを管理するオブジェクト一つでやるから
関数を実行する順番による描画優先度を気にしなくてよいように別オブジェクトにやらせるって意味で
scaleは反転させるときくらいしか使ってなかったけど
確かにそういう使い方もあるね…参考にさせてもらいます
あと使い回しなんかも考えたらその方が汎用性高いし良いね
>>320 俺もそのやりかただな
1ドットの白いスプライトを作ってbrend_colorで色つけてやってる
helpファイルのリファレンスでも
画面に効果を付けるときはそういうやり方を推奨されてるね
沙羅曼蛇のイントルーダーみたいな蛇の動きする敵キャラ作ってるんだけど
胴体のオブジェクトが一つ前の胴体を追尾していく際に
image_angleで向きを変えてもスプライトが回転するけどオブジェクト自体は回転してないから
変な動きになちゃうのよね
だから毎ステップごとにlengthdir_x(len,dir)、lengthdir_y(len,dir)で
追尾する位置を指定してるんだけど
オブジェクト自体を回転させる方法ってあるのかね?
direction = image_angleにしたら移動方向も向きと同じになるよ。
今試して気が付いたけど、image_angleだと当たり判定が回転してdirectionだと移動方向が回転するんだね。
obj_headとobj_bodyというオブジェクトを作っておく。
obj_headに以下のコードを書く
-------------Createイベント-------------
//head setting
spd = 4;
turn = degtorad(5);
rad = 0;
body_number = 3;//胴体の数
interval = 12;//胴体の間隔
prev_array = (body_number+1)*interval;
//previous x y
for(i=0; i<=prev_array; i+=1){
prev_x[i] = x;
prev_y[i] = y;
prev_angle[i] = image_angle;
}
//body instance
for(i=0; i<=body_number; i+=1){
body[i] = instance_create(x,y,obj_body);
body[i].depth = depth+i+1
}
-------------Stepイベント-------------
//turn
if(mouse_check_button(mb_left) )rad -= turn;
else if(mouse_check_button(mb_right) )rad += turn;
//limite rad
if(rad > pi)rad = (pi*-1)+rad-pi;
else if(rad < pi*-1)rad = pi-(rad+pi*-1);
//move
x += cos(rad)*spd;
y += sin(rad)*spd;
//limit x,y
if(x > room_width)x = room_width;
else if(x < 0)x = 0;
if(y > room_height)y = room_height;
else if(y < 0)y = 0;
続く
Stepイベント続き
//head image angle
image_angle = 360-radtodeg(rad);
//previous x,y
if(x != prev_x[0] || y != prev_y[0] ){
for(i=prev_array; i>=1; i-=1){
prev_x[i] = prev_x[i-1];
prev_y[i] = prev_y[i-1];
prev_angle[i] = prev_angle[i-1];
}
prev_x[0] = x;
prev_y[0] = y;
prev_angle[0] = image_angle
}
//body x,y,image angle
for(i=0; i<=body_number; i+=1){
body[i].x = prev_x[(i+1)*interval];
body[i].y = prev_y[(i+1)*interval];
body[i].image_angle = prev_angle[(i+1)*interval];
}
あとはobj_headとobj_bodyにスプライトを設定して
obj_headをルームに置いて起動だ。
マウスの左ボタンで反時計回り、右ボタンで時計回りだ。
これはグラディウスのオプションとかと同じやり方で
頭のオブジェクトの座標が変わった時に配列に座標と画像角度の履歴を入れるのだ。
そして胴体は履歴の適当な所から座標を持ってくる。
うわっすごい
こういった三角関数をフルに駆使したものを
さらっと作れる人は尊敬する
なるほど
イントルーダーの動きも
オプションの動かし方のノウハウの発展だったのね
三角関数はほんとわからん。
・step
y += cos(degtorad(hensu1));
x += sin(degtorad(hensu2));
hensu1+= 1;hensu2+= 2;
とかやると、自分でも何やってるかわからない総当りで理想の動きを探すことになる
backgroundなんかに使う画像は分割数で割り切れるようなサイズにしておかないと
違うタイルが引っ張ってこられたりするのね
モーション・プランニングの関数のなかで
[mp_grid_]ってターン製SLGの移動量計算とかに使うの?
外部ファイルからテキスト読み込むとして
重くならない程度に、ファイルが改竄されていないか調べる方法って何かないのだろうか。
チェックサムというのを使えばいいのだろうか。
ルーム外にオブジェクト配置してる時にルームウィンドウ消す際に
「ルーム外にオブジェクト配置してますけどいいの?」とか聞いてくるのを出さないようにする方法ないの?
うっかりyes押してルーム外にオブジェクト全部消されたことが何回かあるよ
340 :
syun77:2013/11/25(月) 16:24:47.53 ID:bstDeXQy
おいおい俺が払った50ドルはどうなるんだ
一時はその値段でプロも買えたんだよな
8所持者割引も後出しだから発売時にすぐ買ったやつが一番損してるよ
さっそくインストール試してみたけどメール返信がまだ来ない
返信が来ないのに一度登録したメアドに対してはラインセンス発行済みというメッセージ出た
実際にはキー貰ってない、Licence Recoveryかけても変化が無いし返信もない
このプロモーションだれかすでに使えた人いますか?
yoyogamesからライセンスメール来て登録できましたよ
メールはすぐ来て、studioにライセンス入力してもエラーが出て困ったけど、
何度かコピペしたり、見直したり入力し直したりしたら通りました
ライセンスキー認証の反映に時間掛かってたのかも?
自分は一瞬で来たな
スパムメール扱いになってるんじゃないか
これウインドウが画面端にくっつくのオフにできないのかな
これを機にリリースノートを確認してみたんだが、
スクリプトエディタのウィンドウ出る位置修正されたんだな。
トレイアイコンを右クリックでアップデート出来るなんて気づかなかったぞ。
わーいフリーでスタンダート版使えるようになった
>>340さんありがとー
長いこと8.1だったけどこれでやっとstudioユーザーになれたよ
ってstudioってウインドウの背景色が黒なのか
慣れるのに時間かかりそうだ…
メール待っていたら時間差で来ました
いま認証終わって起動したところ
>>340 THX!
>>348 GM8風のスキンが入ってるから、設定で切り替えればOK。
351 :
名前は開発中のものです。:2013/11/26(火) 23:21:53.43 ID:yBBTdPjw
game maker において、「out of memory」 となりセーブできない
場合の対処法を教えてください。
それとゲームそのものの軽量化について知っている方がいましたら、
ご教授願います<(_ _)>
リソース分けるぐらいしかないんじゃないかな
動作確認で試してたけど、古いノーパソだと出力したゲームが動かなかったよ
GM8系で生けていたのは動いてほしかったんだけどなあ
>>300のことではないの?
あんまり大規模なゲーム作ったこと無いからアレだが
グローバル変数は確かゲーム終了するまでメモリ解放されないから
大事なもの以外はローカル変数に任せてそのインスタンスを破棄するとか、
スプライトを外部リソースに任せて
sprite_add()とsprite_delete()で必要になったら追加、不要になったらメモリ解放など。
これはCPUだけでメモリ関係ないかもしれんが
instance_deactivate_region()とinstance_activate_region()を使って
ビュー外のインスタンスを非アクティブにするとかなり動作が軽くなる。
もしもの時の為に非アクティブにする範囲はビューの枠きっちりじゃなくて、ある程度余裕をもたせると良い
>>339 File > Preferences > Forms > Room Form > When closing, remove instances outside the room の
チェックを外すと聞いてこなくなるよ。
>>351 ini_write_stringででかい文字列(入れ子にしたds_listやds_map)を保存しようとして発生したことがあるよ。
保存するデータサイズを減らすか、keyを分けて保存するしかないんじゃないかな。
>>351 軽量化は具体的に何をどうしたいかによるかな。
配布時のファイルサイズを減らしたいのか、
実行時の処理落ちを無くしたいのか、
実行時に使用するメモリを減らしたいのか。
本格的に知りたいなら、公式のブログにそんな記事があった気がする。
>>354 File > Preferences > General > Select Skin > GM8 を選択してOK、
GameMakerを再起動すると反映されるよ。
>>351 あとvarで変数宣言してもスクリプト終了時にメモリ解放されるっぽい。
Studioからvar xx = 0; みたいに宣言と代入を一緒に書けるようになったのか?
>>356 thanksやっぱ白い方が見やすくていい
なんかエラーダウンロードチュートリアルみたいのが出てきて起動できねえ
スタンダード版を50$で買った俺は…と思ったけど
まぁ、金出してる分モチベーションは維持されてるし、その分早く
触れたんだから良いやと考えるか
あと、スキン変えたらちらつき無くなったよ…これは…ありがたい
GM:Studioのヘルプ訳してる人いるのかな。
オーディオ関連の新しい仕様とか気になるけどゲーム作ってて英語読む時間も惜しい。
優先度とか新しい関数のaudio_play_sound_at()とか便利そう。
364 :
syun77:2013/11/30(土) 16:04:10.13 ID:k++EmPx9
>>364 おお、助かる
英語分からないからGMSには手が出せなかったんだ
もっと英語勉強しとけばよかったよ
今日起動したらライセンスの入力求められて心臓に悪かったわ。
Studioがフリーになるのはいいけど
優柔不断な選択のせいで既ユーザーを混乱させるのはやめてほしい。
ドラキュラ伝説リバースの1面のボスのような
巨大な球体が跳ねる動きのキャラ作ろうと思って
そういうゲーム的な動きは標準で関数がたくさん用意されてるから楽勝だろう
と思ってたら
ソリッドオブジェクトにめり込んだり画面外に出て行ったりと変な動きして結構大変だった…
あまり関数に頼らずに作ったほうが楽だったよ…
ぶつかったらhspeedを*-1したりするだけじゃないか
move_bounce_solidはend_stepで使うと上手くいく感じ。
攻撃したらその威力と場所によって弾んだり
ソリッドオブジェクトに接触した場所によって弾む角度かえたりとか
やってたから結構面倒だったよ
>>370 ありがとー参考にしてみるよ
プレイヤ以外の動体はソリッド属性持たせない方が良いね
動く足場や落ちる足場で結構ハマってしまった
スタンダードからプロヘッショナル版にアップグレードできます
価格はいまなら特別に25ドルですってメールが来た
マスターコレクションなら欲しかったけどプロはいらない
でも25ドルは安いね、心揺れる
Pro版に備わってるTexture Managementってなんだろうな。
ちょっと次回作では3Dゲームを頑張って作ってみたいと思ってるんだが
GM:Sだと、この機能がないとテクスチャを使えないのだろうか。
ちなみにGM8のときに一応DOOM風サンプルゲームのスクリプトは少し見た。
セール中だから無駄にProにしちゃったぜー
違いはあまりわかってないけどな
376 :
syun77:2013/12/04(水) 01:28:46.47 ID:cuUv8mN/
>>374 試していないのですが、おそらくStandard版でも3Dゲームは作れると思います。
ttp://2dgames.jp/html5/test_3d/ 当たり判定もなく描画のみですが3Dのサンプルです。
(左右キーで回転。上下で移動。プロジェクトファイル付きです)
なお、3Dで使うテクスチャは、background_get_texture関数で取得できます。
ちなみにTexture Managementは、テクスチャ切り替えのコストを減らすツールですね。
大きい画像をたくさん使う場合、複数の画像を切り替える必要があるのですが、
このツールを使うことで画像の配分を最適化して、切り替えの負荷を減らすことができます。
ゲーム中にウィンドウサイズとグラフィックの倍率を
Studioで変更することは可能なのだろうか。
>>377 window_set_size使えば良いよ
object followingのview_hbor・view_vborってビューサイズ/2が最大ですか?
ビューオブジェクトが画面中央に到達するよりも前にビューが追従してほしいのですが、
いくら数値を大きくしてもビューオブジェクトが画面中央に到達するまで追従しません
ビューは慣れてきたらスクリプト書いて管理すると簡単
view_xview[0] = 追従するオブジェクト名.x-view_wview[0]/2;
view_yview[0] = 追従するオブジェクト名.y-view_hview[0]/2;
タイミングによってはガタガタするので追従とUI描画は
どのアクションに書くか考えてやる必要がある。
>>380 おお、こんな簡単な方法でいけるとは
ありがとうございます
382 :
名前は開発中のものです。:2013/12/11(水) 20:57:19.00 ID:fSI5Cjm3
書き込みがなくて寂しいぜ
html5だとaudio_master_gain関数が動いてない気がするんだけど、気のせい?
後、draw_sprite_tiled_extも使えない感じなのかな
とりあえず1本作って売り出してみたよ…売り上げは想像に任せるけど
ところで、擬似的にキー入力する方法ってあるのかな?
例えばプレイヤーであればキー入力をトリガーにして動かせるけど、敵さんも同じように
「こういう入力で動きました」というように動かしたいんだ
keyboard_check_direct()とかで処理分岐しているところを
ある変数がtrueであるかで分岐するように変更する。
インスタンスがプレイヤーキャラの場合はキー入力でその変数をtrue、
敵キャラの場合は任意のタイミングでtrueにする。
なるほど、そういうことね
これで敵さんがムーンウォークしなくて済むわけだ…
ありがとう
それって
Key press eventsとか使わずに
全部stepイベント内で処理するの?
389 :
386:2013/12/14(土) 00:26:56.56 ID:spUlNJeR
ほうほうなるほど
たしかにいちいちイベントを分けるより
step内で出来ることは全部step内にまとめて書いたほうが管理しやすいね
Pro購入しちゃった…
2Dゲーだけだとあまりメリットは無いかもしれないけど
Studioのポーズメニューって、皆どうやって作ってるの?
>>392 サンプル、カーソルキーとスペースキーを使う。
http://www.dotup.org/uploda/www.dotup.org4737099.zip.html ポイントは
・obj_controllerというオブジェクトがゲームを制御するオブジェクトで、
persistentにチェックを入れて最初のルームに置くことでインスタンスIDを若くし、
さらにBeginStepに処理を書くことでglobal.pauseをキー入力によってtrueにする処理を再優先
・global.pauseという変数がfalseの時だけ全てのオブジェクトで描画以外の処理をする
・非ポーズ状態からポーズ状態にする際にio_clear()を使う
(これは今回のような作り方でしか意味は無いが、こうしておくと精神衛生上よい。
io_clear()をコメントアウトして実行すれば意味はわかると思う)
>>393 おお ありがとう。
でも気になったんだけど、この方法だと、全ての処理(各stepやalarm)にif文を入れないといけないのと、
speedやgravityなんかのローカル変数をsetした場合、ポーズ中でも動いちゃうねぇ。
ポーズはobject_deactivateだかが便利
でも対象になったインスタンスは見えなくなるから工夫が必要かも
言おうとしたこと
>>395に先に書かれてた
if文を全てのオブジェクトに書かないとならないのは仕方ない。
付けたかったら開発初期から想定して設計するものだと思う。
speedやgravityはどういう処理を行っているか透明じゃないから使ってないけど
各インスタンスにspeed_pauseとかgravity_pauseとかいう名前の変数用意しておいて、
ポーズ時に
with(all){
speed_pause = speed;
speed = 0;
gravity_pause = gravity;
gravity = 0;
}
復帰時に
with(all){
speed = speed_pause;
gravity = gravity_pause;
}
とかやると良いんじゃないかな。
手間も重さも増えるけど。
俺はcopyとか名前つけたオブジェクト作っておいて、
ポーズ押したら全ての止めるオブジェクトのalarm[11]を呼んで
-Alarm[11]-
idx=instance_create(x,y,copy);
idx.sprite_index=sprite_index;
idx.depth=depth;
idx.image_alpha=image_alpha;
idx.image_xscale=image_xscale;
idx.image_yscale=image_yscale;
idx.image_index=image_index;
instance_deactivate_object(self);
をやらせるようにしてる
なるほど、それでポーズ解除するときにcopyを削除すればいいわけか。
399 :
392:2013/12/15(日) 10:07:43.77 ID:goJTYYiL
ちょっと改行が多いので分けた。
1
今試したんだけど、処理順序の若いオブジェクトの、begin_stepとend_stepを使ってやってみた。
分かり辛いのでend_stepから書くと
・end_step
if(keyboard_check(vk_escape))
{
if(pause == false)
{
pause = true;
pause_menu = instance_create(0,0,obj_pause_menu);
}
}
if(pause == true)
{
instance_activate_all();
if(!instance_exists(obj_pause_menu))
{
pause = 0;
}
}
escキーが押された時に、ポーズモードを有効化します。
ポーズメニュー用のオブジェクトを生成します。ただし、この時点で、drawのために、全てのオブジェクトをアクティブ化します。
400 :
392:2013/12/15(日) 10:08:36.75 ID:goJTYYiL
2
・begin_step
if(pause == true)
{
instance_deactivate_all(true);
instance_activate_object(pause_menu);
}
begin_stepで、全てのオブジェクトを非アクティブ化し、pause_menuオブジェクトだけアクティブ化します。
これでdrawは呼び出される。
欠点として、end_step内に座標を直接操作する処理があるオブジェクトを作ると、メニュー中でも動いたりする。
もし、そういう事が起こる場合、end_stepの
if(pause == true)
{
instance_activate_all();
if(!instance_exists(obj_pause_menu))
{
pause = 0;
}
}
を処理順序の遅いオブジェクトにやらせる事で対処可能。
お前ら今ナニ作ってんのよ
モグラタタキゲームつくってる
画像がほしい
1.3でデバッグ機能が強化されるみたいなので楽しみだ
>>404 とりあえずゲームのシステム部分作って
ピクシブ辺りで絵を描いてくる人募集したらすぐに見つかるよ
407 :
404:2013/12/18(水) 21:39:47.89 ID:VnjGGurw
>>406 絵とかは自分で描けるから平気。
人の作ってるゲームの画像とか見てみたいって思って。
言い出しっぺの法則があってだな。でも興味あるからあげてみるよ
http://i.imgur.com/t1GABuQ.png アクションゲームのステージ作ってて思ったけど、ステージの面白いか面白くないかの違いってなんだろう
yoyogamesでマリオのクローンゲーを片っ端からやっても、確かにステージが面白いのとそうでないゲームがあるんだよね
ステージのコンセプトを決めたりとかは初歩にしても、自分でこれは完成度が高い!って思うステージができないんだよね
あとはステージ作りまくれば完成なのに、そこでかなり止まってる
多分インスタンスのアクティブ/非アクティブ化は次フレームから適用されるんだな。
よく考えたら1ステップ内で非アクティブとアクティブを切り替えられたら
実行されないイベントが出てきてバグがでる可能性があるから当然だよな。
インスタンスのアクティブ/非アクティブの仕様に気づくまで時間を浪費してしもうた。
例を出すと
・常にビュー外のインスタンスを非アクティブにする
・リトライ時はroom_restart()でオブジェクトを再配置する
・ステージに100枚コインがあり、コインは一度入手したらリトライしても復活しない
という仕様のアクションゲームがあるとして
100枚のコインにcreation codeでいちいち番号を振って、入手済みかを記録する配列を参照して
trueだったらルーム開始時にコインのインスタンスを破棄するというのは手間がかかる。
だから、ミスした時にwith(coin)で残っているコインのxとyを配列に入れて、
ルーム開始時(リトライ限定)に全てのコインを破棄した後、
その配列を元にコインを配置していくようにしたんだが、ここで問題が発生。
常にビュー外のインスタンスを非アクティブにする仕様のせいで
アクティブなのはビュー内のコインのみで、それのxとyしか記録されない。
これを解決するために1フレーム内でinstance_activate_all()、xとyを配列に入れる処理をしようとするとドツボにはまる。
結局、画面が完全に黒くなった後、
if(activate == false){
instance_activate_all();
activate = true;
}
else{
global.number = 0;
with(coin){
global.coin_x[global.number] = x;
global.coin_y[global.number] = y;
global.number += 1;
}
room_restart();
}
の様にして解決。
もしかしたら、この例だとコインはルームに配置された物しかないから
ステージ開始時に
global.number = 0;
with(coin){
coin_id = global.number;
}
こんな感じにインスタンスIDが小さい順から番号を振る処理をしても
コインの場所と番号の関係は保たれるので前者の方法が使えてしまうかも。
まぁでも、これが動的生成になると使えなくなるよね。
あれ?自分でも言ってること分からんくなってきた。
まぁあれだ、出る数と出る場所がわからないオブジェクトだと番号つける方法は出来ないので
インスタンスのアクティブ/非アクティブ化の仕様を知っていれば
シンボルエンカウントのRPG作るとき戦闘やイベントでルームが変えた後、
元のルームに復帰する際の敵キャラ再配置もやりやすくなるよってことで。
長々書いてスマソ
415 :
syun77:2013/12/21(土) 10:44:30.36 ID:g4MJxTLn
GameMakerのSNSを作ろうかと思ったのですが、
需要はあるのかな…
制作ノウハウ辞典やGMゲーム紹介+フリープレイ出来るような感じなら
製作者とゲーマーが利用しそうではあるけど、どっさり人が来るかというと・・・
フォントなんだけど、一般的なフォントの縦解像度は1024か2048だとか。
でもGMはフォントを埋め込む際に縦解像度を端数なしの1000で取り込んでいるっぽい。
そのため、1024のフォントを取り込むと、端数分フォントが縮んだり引き伸ばされたりしている様子。
フォントの指定サイズ12ポイントで確認したけど、大きいサイズなら問題ないのだろうか。
できたら俺はすぐアカウント作るよ
匿名投稿の方が気楽だけど、それだと情報のまとまり具合が宜しくないし。
ただ個人運営だといつまで続けられるか心配だな。
日本wikiとか相当前に死んでるし日本語helpも古いしで需要はあると思う
もちろん登録しますぞ
>>419 こういうの作りたいなら素直にUnity で…
あまり使わないけど知っておくと便利メモ
・mod数式の使いかた
if( A mod B == 0 ){
A/Bが偶数の時の処理
}else{
A/Bが奇数の時の処理
}
for分内とかに使うと交互に違う処理を実行できるぞ
・true/falseを切り替える。スイッチや点滅に使える。
a = 1-a;
・一定間隔で何かを行う(これだとタイマーの値が増え続けるので使い所は限られる)
timer += 1;
if(timer mod 10 == 0){//10フレームに1度
//なんかの処理
}
なんとなく重くなりそうな気がするので除算はあまり使わないようにしてる。
被除数が大きいとかループの回数が数百回とかじゃないとあんまり違いはないだろうけど。
424 :
syun77:2013/12/22(日) 01:37:46.26 ID:/8mZfL7t
GameMakerのSNS、それなりに需要がありそうですね。
個人的には、気軽に自作ゲームを公開したり、
意見をもらったりする場が作れるといいな、と思っています。
では、早速作ってみますー。
(と言っても無料で作れるSNSを使うので、簡単な作業ですけど)
425 :
syun77:2013/12/22(日) 13:44:09.56 ID:/8mZfL7t
時間がかかってしまいましたが、SNS作成できました!
・GameMaker - SNS
ttp://sns.prtls.jp/gamemaker/ ■登録方法
1.「新規メンバー登録」から必要な項目を入力すると、
運営からメールが届きます。
2. そのメールに記載されているURLをクリックすると、
登録完了となります。
ウディタSNSを参考に作ったのですが、
至らない点がありましたら、気軽に指摘をいただけると助かります。
登録したけど登録しないと中身が見えないのはなあ
クローズなコミュニティはあんまり長続きしないような……
俺もそう思って登録を止めてしまった
うげー!
これ足あと機能(アクセスしたページ丸見えストーカー機能)あるじゃん!
これpne2.xベースのフリーサイトでしょ
海外オープン系でコミュで立ち上げるといいよ
なんかごちゃごちゃしとる
せっかく作ってくれたものに文句言うようで心苦しいが
ここは2chという事で許して欲しい
>>426のいうように クローズドなコミュニティーにしてしまうと未来はないと思う
閲覧はオープンだが投稿はメンバーのみで、phpBB みたいな掲示板形式が
一番よいのではないだろうか
>>431 の言うようにごちゃごちゃしてて見づらいのもちょっと良くない
海外のには見易いのとかお洒落なのもあるかもね
言うだけで申し訳ないけど
phpBBでオープンコミュ立ち上げてみるので、うまくいったら報告するね
上のSNSがクローズドだから、併用すればモデレーターとかもうまくいくでしょ
GameMaker全般
GameMakerの仕様・バグ
GameMaker作品
GameMakerサンプル・拡張
GmeMakerに関する質問
ゲームアルゴリズム
雑談
こういう感じのフォーラムカテゴリを追加して頂きたい。
>>437 とりあえず丸パクでフォーラム設置完了
投稿・閲覧のパーミッションの設定が正しいかどうか暇なときにでも試してみてね
439 :
syun77:2013/12/23(月) 08:47:51.88 ID:YpHTur2N
ここの空気読めないようで申し訳ないです…。
ひとまず日記はオープンにしました。
名前出しても問題ない方でやっていければ、と思います
まぁ日本で一番人が集うと思われるこのスレでさえ
一日一回書き込みが有るか無いかの状況だから。
441 :
syun77:2013/12/24(火) 14:58:25.22 ID:ndrBLpvY
お気づかいありがとうございます。
「GameMaker - SNS」はしばらく様子見ですね……。
それと別の話ですがアーリーアクセスビルドで公開されている
v1.3のデバッカ機能を試してみました。
使いかたは、TechBlogにも書かれている通り、
1. F9でブレークポイント配置
2. F6でデバッグ実行するとデバッガが立ち上がる
3. ブレークポイントで停止する
その他気になったところは、
・変数のウォッチが可能。ただし動的な編集は不可
・ステップ実行はできず、ブレークポイントで停止するのみ
・実行中のブレークポイント配置や削除は、デバッガ上でF9を押すことで可能
・既存のプロジェクト(v1.2で作成)ではブレークポイントがかからなかった(※要検証)
最後のは私の環境だけかもしれません。
VisualStudioやEclipseみたいなのを期待すると肩透かしを喰らいますが、
show_messageやshow_debug_messageでデバッグするよりは
効率的にできそうです。今後の機能充実に期待ですね。
あと文字化けも直っていました。
ちなみにv1.3のプロジェクトは、v1.2と互換性がないみたいなので、
プロジェクトのバックアップを取ること推奨だそうです。
RPG作るの辛い;_;
RPG作るのって、システムまではまだ良いけど、タイルの配置がかなりめんどくさそう。
なんかこう、配置専用のツール作れないかなぁ。
塗り潰しとか、円形配置とか出来て、
タイルセットみたいなのを用意すればツクール2000みたいに配置できるようなの
444 :
名前は開発中のものです。:2013/12/27(金) 14:37:22.05 ID:2fOamHGo
質問
今タワーディフェンス作ってるんだけれども
collision_circleで砲台の攻撃範囲を設定したまではよかったんだけど
範囲外の敵攻撃しちゃうのよ
まぁ原因はどう考えてもバレットのstepに入っている
direction = point_direction(x,y,enemy.x,enemy.y)
がいけないんだけど
これをどうやって変えていけばいいか分からないです
助けてください
445 :
444:2013/12/27(金) 14:40:53.20 ID:2fOamHGo
あ 忘れてた
GameMaker8.1で製作してます
そもそもどうやってターゲットを指定してるのか分からないけど、そっちにバグがあると予想。
directionの使い方はあってると思う。
>>447 ARPGのシステムなら作ったことがある。大変だったけど、達成感はあったし、終わったら楽になると思ってた。
しかしタイルの配置はひたすら達成感のない作業をポチポチしないといけなくて、かなり辛かった…
某エロ漫画でレミングス系のゲームは
意外と作るの簡単って書いてあったから
タワーディフェンスもそんなに難しいものでもないのかと思ってたけど
結構考えることが多くてややこしいのね
レミングス系じゃないやろ
シミュレーションに近い
アルゴリズム自体は難しくないし、何をするかにもよるがレミングスは条件分岐が多くてややこしい。
>>452 いいぞ。
手間かかるしコードがごちゃごちゃするのでやらなかったけど
敵の速度と自分との距離を計算に入れて予測射撃したり、
最も近い敵を狙うけど、より近い敵が出現しても
現在狙っている敵が範囲内にいるうちは標的を変えずに粘る(頻繁に回転する必要がなくなる)とか
近くの砲台と火力を相談して最適な狙い方をすることで砲台を賢くすることが出来そうだ。
重くなりそうだし面倒だけど…
あ、予測射撃は追加してある?(面倒だからきちんと見てない)
>>454 追加してるよ。敵の速度と敵の方向と自砲台の弾速から計算して先読みみたいな形で。
今は、近い敵は現在の座標に忠実に狙ってるけど遠い敵は予測射撃するっていうのを取り入れてる。
予測射撃時は連射力を2分の1にして。
俺は配列派じゃなくてGM標準のリスト派だから、今晩リストを使った索敵にごりごりと変えて、
それからいろいろな索敵法を試してみようかな。
>>455は、俺だったら2発当てるじゃなくて与えたダメージを条件にするかな。
いろいろな種類の砲台と連携できるようにしたいから。
その後で他の砲台の強さにもよるけど強い方の火力を5に、間隔を50にする。これだど重砲台化させすぎか。
ごめん自分との距離も使ってた。
下のような感じで実装してる。
x_actual = target_current.x + lengthdir_x(speed_target * (distance_target / speed_bullet), direction_target);
y_actual = target_current.y + lengthdir_y(speed_target * (distance_target / speed_bullet), direction_target);
lengthdir以降を使わなければ予測使わない照準になる。
ttp://www1.axfc.net/u/3129828 改良版できた。パスはgm。
砲台の種類を増やして、標的を変えずに粘る砲台とか、
破壊した目標の座標から最も近い敵を狙って砲台の回転を抑える高性能砲台を作った。
クリア条件はないけどお金とかゲームオーバーとか作ったからゲームっぽくなったと思う。
おお、適当に思いついたこと言っただけなのに
ここまでやってくれるとはw
AIの挙動考えるの好きだからね。
次は連携砲台でも作ってみるかな。
タイルの隙間に線が入るのって何とかならないのかなぁ
>>461 GMのルームエディタでタイル配置してる?
タイル配置するときのroomのsnapX,Yの値は合ってる?
タイルの端一列に半透明の色、もしくは塗り忘れがあるとかじゃなくて?
そんなこと一度も起きたことがないので色々問うてみた。
>>462 スナップもあってるし、塗り忘れもない。GMstudioになる前の別の作品の時から常に起きてたよ。
多分、ビューサイズに対して、ポートサイズに大きい値を割り振ると起こる。
拡大縮小の補完もそんな綺麗じゃないしdraw_circleも多角形ぽいし
描画関連はGMの弱点やな・・・
draw_rectanleはグラボとかの環境によって1ドットずれたりするね
円を描きたいときは適当な円の外部スプライトを用意して、それを拡大縮小するといいよ
メモリ的にはベストじゃないけど
すいません、セール中なので、購入を検討しているのですが、
これとUnity2Dと、どっちのほうがオススメでしょうか?
>>466 フラッシュセール?
proで25ドルなら、今買っといたほうがいいんじゃない?
安く買える時間も限られてるし。
ま、余裕あるならどっちも買えばいいと思う。
2倍払って公式で買った方がいいよ
Steamのセールは割引率は高いが回数が少ない
本当はどっちも試して自分に合った方を買うのが一番なんだけど
評価してる時間がないならセール中のに手を出すのが無難
Studioってフレームレート60超に対応してるんだね。
以前からだった?
セールでStudio Pro版を購入しインストールしたのですが、
ゲームに使用出来る素材(画像)のようなものが見当たりません
このソフトでは素材はまったく付いて来ないのでしょうか?
ゲームを作る道具に素材がついてると思う方がおかしい
ブロック崩しの素材とかはあったような
MMF2には素材が入っていたのでこちらにも入っているものとばかり思っていました
とりあえず適当な素材で遊んでみます
御回答ありがとうございました
もう小学生でも分かるような質問に来るなよ頼むから
475 :
名前は開発中のものです。:2014/01/02(木) 22:05:07.82 ID:N0g58x2O
画面を4分割や16分割にして表示する方法って誰か分かる?
476 :
名前は開発中のものです。:2014/01/03(金) 14:08:05.65 ID:Lt/0Pr5R
ユーザーがステージやシナリオを作れるゲームを作るとして
追加データはフォルダで分けてまとめたら便利だと思うのだが
Studioって指定したディレクトリにどういうファイルが有るか返す関数無いのかな。
ユーザーに追加ファイルの名前指定してもらうくらい簡単だけど、少しでも敷居は低くしたいよね。
やる気が続かなくなったらどうすればいいんだ
一日休んでみたけど余計駄目だよ
俺はそういうとき、どうでもいいバグ潰してみるか
微妙にエフェクトをこだわってみるとかどうでもいいとこを1,2行でも書いてみることにしてるよ
重い腰上げて1.3使おうと思ってBetaチャンネルに切り替えてバージョン確認したんだが
アップデートが無いと言われる。もうリリースされてたよね?
リリースノート確認したらまだ出てなかったのかー
文字化けバグ早く治らないと困るんだけど、いつ来るんだろうな
今更だが変数をヲチしたいオブジェクトは
インスタンス上でマウスクリックでインスタンスIDをクリップボードにコピーするようにしたら便利かもな
スクリプトエディタで
右にスクロールして左の文字が見えない状態で左側の方でクリックしても
見えていない文字数分だけ右のところからしかカーソルあわないんだけど
これってバグではないの?
486 :
名前は開発中のものです。:2014/01/15(水) 03:46:22.67 ID:aThJdUAV
うんこゲー祭
http://unkomatsuri.webcrow.jp/ フリゲ2013にて、「ウンコの世界」と投票して逃げたうんこヤローにブチ切れた赤松が企画する、
うんこゲームを自作して、人に喰らわせて、みんなでスッキリする祭です。
4/1(火)に一般公開するから、エイプリルフールネタとしても最適!
匿名公開だから息抜きにも最適!優勝賞品までついてくる!
さあ! フリゲ界隈をうんこ色に染めよう!
【参加要綱】
うんこをモチーフとした、自作のゲームであること
今までに発表したことがない、出したてホカホカのゲームであること
二次創作、18禁、垢BANされちゃうヤバいゲームはNG
いつの間にかエディターの位置サイズが記録されるようになってるな
要望を出した甲斐があるってもんだぜ
488 :
名前は開発中のものです。:2014/01/16(木) 01:27:48.60 ID:Sptikk4y
move_contact_solid()を使ってエレベーターみたいなのをつくりたいけど、
どうも乗っているオブジェクトの挙動が変になる。
エレベーターに乗っているときに乗っているオブジェクトが停止状態なら実装はできたけど、
動いているとどうにもうまく出来ない。
どうすればなめらかに移動できるんだろうか
ジョイスティックでもキーボードでも操作可能なゲームを作るために
ジョイスティックの入力をキーボード入力に変換する処理をしようとしてるんだけど、
十字キーの入力がうまく行かない。
ジョイスティック入力が左下(vk_numpad1)ならキーボード←と↓を入力。
ジョイスティック入力が下ならキーボード↓を〜〜 と八方向分やって、
それぞれの方向のジョイスティック入力が無くなったときにキーボードの入力をreleaseしてるんだけど、
この方法だとぐるりと一周回るような移動をしたとき非常にカクカクする。
多分方向入力が下・右ナナメ下・右……と切り替わるたびにkeyboard_key_releaseで入力キャンセルされるフレームが入るからだ。
もっと賢いやり方を知ってる人教えて下さい……!
>>488 キャラの床判定のアルゴリズム、どう動かすとどのように挙動がおかしくなるか、
どのようにキャラがエレベーターの上に乗っていると判定しキャラを動かすか、
が明らかになっていないので答えようがないけど、
エレベーター上昇時にジャンプするとキャラがめり込んだりガタガタすると仮定するなら
エレベーター側で
・昇る時にキャラがエレベーター上に乗っていればキャラも同じ距離移動
・エレベーターが移動先でキャラにめり込んでいたら、めり込まなくキャラを上に動かす
キャラの座標に小数点以下の数値が含まれていると面倒な事になるかもしれない。
[修正]・めり込まなくなるまでキャラを上に動かす
あとめり込み回避の処理があれば上昇時にキャラを一緒に動かす処理いらないかも。
>>489 入力がなくなった時にreleaseって描いてあるけど
直前のフレームまで、そのキーを入力していた事をどうやって確認してる?
>>491 こんな感じ。object:gameamsterのステップイベントにて、
switch (joystick_direction(1))
{
case vk_numpad1:
keyboard_key_press(vk_left)
keyboard_key_press(vk_down)
allow1 = 1 break;
……以降numpad5以外の8方向に対し同じ処理。
allow2,allow3……とそれぞれ別の変数を用意し入力を監視。
そしてswith終了後、
if allow1 = 1 && joystick_direction(1) != vk_numpad1
{keyboard_key_release(vk_down)
keyboard_key_release(vk_left)
allow1 = 0}
>>492の続き
これがやはり全方向に対して行われる。
ちなみに移動するキャラクター側の方向キーに対する移動は、
if movestop = 0
{
if keyboard_check(ord('A'))
{hspeed = -3}
else
{hspeed = -8}
}
使ってるのはゲームメーカースタジオです。
>>492 確かにこれだとテンキー1→4という風に方向転換すると
4を押して左方向への入力がある時でも1の←と↓のリリース処理をしてしまって
一瞬止まってガタつくだろうなぁ。(矢印はarrowじゃないかな)
4つの方向キーがリリースされたか調べているわけだから
1つ前のステップの入力状態を入れる変数は4つで良いんじゃないかな。
入力状態を代入する処理を分離して、最後に持ってきた。
switch (joystick_direction(1) ){
case 1:
keyboard_key_press(vk_left);
keyboard_key_press(vk_down);
break;
}
if(keyboard_check(vk_left) == false && left_previous == true){
keyboard_key_release(vk_left);
}
if(keyboard_check(vk_left) )left_previous = true;
else left_previous = false;
>>494 ありがとうございます!
>矢印はarrow
どーせ見られないと思ってその辺テキトーにやってるのがバレてしまったw
お察しの通りヘルプを読むのもいっぱいいっぱいです。
ところですいません、この通りやってみましたがやはりうまく行かないようです。
keyboard_key_press以降対象のキーは押しっぱなしの状態になり、keyboard_checkにもtrueの値を返すため、
left_previous以下の直前キー入力の変数は一度十字キーに触れた瞬間からずっとtrue状態になり、
キャラクターは同じ方向に直進し続けます。
(キーボードの矢印キーを押すとrelease判定が生じて直進は止まる)
なにかやり方が間違っているのでしょうか?
>>489の問題が自己解決しました!
switch (joystick_direction(1) ){
case vk_numpad1:
keyboard_key_press(vk_left);
keyboard_key_press(vk_down);
left = 1 down = 1 break;
if left = 1
{ if joystick_direction(1) != vk_numpad1
&& joystick_direction(1) != vk_numpad4
&& joystick_direction(1) != vk_numpad7
{keyboard_key_release(vk_left)
left = 0}
}
こんな感じで方向キーごとにrelease判定することでスムーズに行きました!
>>494さんありがとうございました!
>>494はリリースの処理書いてないな
仮想入力を使うとキーボードとパッドの共存が出来ないんだよなぁ
こんなプレイスタイル無いから良いだろうけど
キーかパッドボタンのどちらかを押しっぱなしにしながらもう片方の
対応する同じキーを押すと、片方は押された状態のままなのに
リリースしたことになってしまう。
自分は仮想入力させるんじゃなくて変数に入力状態を入れてる。
498 :
名前は開発中のものです。:2014/01/17(金) 21:11:55.76 ID:Nv7H4L68
ゲーム公開したいんだけどデコンパイルが怖くて公開できないままでいる・・・
あんまり気にしないほうがいいのかな
公開する人増えると嬉しい
しかしstudioに関する情報が日本語だと本当に無いな
外人のチュートリアル動画見てるけど何言ってるのかサッパリw
Physicsでなにか作ろうと思って
サンプルのAngry Catsの中を色々と見てるんだけどなかなか難しい
オブジェクトをphysics_fixture_createで物理オブジェクトにして
physics_fixture_set_densityとかでパラメーター設定したら
重力に従う動きするようになるけど
オブジェクト同士の衝突判定とかがどうなってるのかさっぱりわからん
>>498 細々と同人ゲー作ってる経験から言うと、デコンパイルなんて普通の人はしないし、
やるとしても音楽データや画像データ引っこ抜く(抜かれる)くらいだよ
Physicsを色々と弄っててやっと衝突させることができた…
動体オブジェクトを壁オブジェとをちゃんと
physics_fixture_createで作ってパラメーター設定して
?physics_fixture_bindでオブジェクトと結びつけてるのに
なぜか衝突せずに素通りしてて頭悩ませてたんだけど
オブジェクトに中身がコメントだけの空白のコードを入れたコリジョンイベントを作らないと
判定してくれなかったよ
物理エンジンっていうか衝突判定も勝手にやってくれるものを思ってたよ
あぁ疲れた
よく陥る所だな
wikiにあるチュートリアル系一通り見ておくと幸せになれるよ
重くなる原因が800*3000の背景をスクロールさせてるからだと思われるんだが、
やっぱりサイズ大きな画像はやめておいたほうがいいの?
違ったわ。もしかしてbackgroundって
Tile:HorizontalとTile:Verticalにチェック入ってたらその分重くなるとかある?
画面全体の色相や彩度を変えて赤外線スコープみたいなものを作りたいんだけど
サーフェイスを使えばいいのかね?
アップデートで日本語バグが修正されたり、roomに配置するオブジェクトのscaleが0じゃなくて0.1になるようになったりしてる。
プレイヤーが指定したx軸上に移動するとインスタンスを生成するようにしたいのですが、上手くいきません
具体的にやりたいことはSFCのスーパーマリオの様に敵が再度沸くようにしたいです
if position_meeting(672,1760,obj_player)=true ←このyの値もプレイヤーのyの値に
{if !instance_exists(nnn)
{nnn = instance_create(1952,1664,obj_enemy)}}
nnnと定める前にインスタンス有無のチェックでnnnを使ってるのが問題なのでしょうか?
そうだとすると、どのような解決策がありますでしょうか?
wikiやら参考HPやらを連日回って勉強してますがどうにも分からなくなってしまったので、どなたか教えていただけないでしょうか?
どうかよろしくお願いします
すみません、書きかけで書き込みました
上の文章の一行だけ訂正します
if position_meeting(672,1760,obj_player)=true ←このyの値も出来ればプレイヤーの現在のyの値を使いたいです
>>509 あそうそう、これの敵ジェネレーターは設定されているスプライトを基準に
敵生成ラインを設定するので生成するオブジェクトと同じスプライトに設定しておいたほうが良いよ。
(敵を生成する場合ジェネレートで合ってるか不安だ)
512 :
508:2014/01/23(木) 13:33:06.40 ID:uOIyKK6K
ご丁寧にどうもありがとうございます
凄く参考になりそうです
考えていたものより難しいのでまだ理解できてませんが、まずは継承について勉強してきます
本当にどうもありがとうございました
instance_createした時に、子が親のidを知る方法って、これ以外にある?
global使うのは無しで。
parentも無しで。
bid = instance_create(0,0, obj_b);
bid.id = id;
>>513 その方法の何が問題かが分からないので役に立たないかもしれないが、
子のcreateイベントでinstance_find(obj.a,1)とすればいいんじゃないだろうか。
親インスタンスが複数ある場合は苦労するだろうが。
>>513 それだと生成した子インスタンスのIDに親インスタンスのIDを入れることになる。
idはリードオンリーだから出来ないと思うけど。
やっぱり、もう一つ変数を用意してやるのが王道なんじゃないかな。
child = instance_create(x,y,obj_child);
child.parent_instance_id = id;
しかし、Createイベント以外で宣言していない変数に値を入れるのって何か気持ち悪い。
恐らく、それでも正常に動くんだろうけどvariable_***_get/set関数が廃止になったからしょうがないか。
516 :
513:2014/01/24(金) 12:48:39.47 ID:o1U7gp/8
>>514,515
そう、親インスタンスが複数ある場合に、親インスタンスIDを取得する方法を知りたいんです。
>それだと生成した子インスタンスのIDに親インスタンスのIDを入れることになる。
指摘の通りです。単純に書き間違いです。
× bid.id = id;
○ bid.pid = id;
親のコードで子の変数に代入すると、子のクリエイトイベントに間に合わないんですよね。
これを上手く解決する方法があればなと思い質問しました。
517 :
513:2014/01/24(金) 12:54:59.98 ID:o1U7gp/8
ちなみに今はクリエイトイベントでフラグを立てて、ステップイベントで本来やりたかった初期化コードを実行してます。
関数が無い以上、お手軽な方法がこれしか無さそうな感じですね。
instance_createで引数渡せたら良かったんですけど。
var obj = instance_create(argument0,argument1,argument2);
obj.parent_id = id;
with(obj){
switch(object_index){
case obj_unko :
//生成時にうんこが便器に触れていて、且つうんこした人の体重が80kg未満
if(place_meeting(x,y,obj_benki) && parent_id.weight < 80){
flush = true;//うんこを流す
}
break;
}
}
こういうスクリプト作ってcaseでオブジェクト毎に処理を分けていくのはダメだろうか
バグフィックスバージョンアップきてるね
Win8以外関係無さそうだけど
3Dの習作にサイバースレッドみたいなので作ろうと3Dに手を出してみたけど、
各オブジェクトでd3d_set_projectionしてやらないとダメなのね
521 :
名前は開発中のものです。:2014/01/26(日) 00:01:47.32 ID:KBSL+MSz
GM6で、製作中のゲームとサンプルゲームとで多重起動して確認しながら作業してたんだけど、Studioだと多重起動出来なくなったんですか?
うちは出来てるよ?
スペースキー押してる間だけフラグ立てたいんですが
if keyboard_check(vk_space)
flag = true;
else
flag = false;
これで実行してデバッガで確認すると、キー離してもフラグ立ちっ放しになっています。
if keyboard_check_pressed(vk_space)
flag = true;
else if keyboard_check_released(vk_space)
flag = false;
これでも同じ結果になります。
どうしたらいいんでしょうか。
上のコードで正常に動くよ。
多分書き方からしてこの前のパッドで仮想キー入力してた人だと思うけど
その辺が原因だと思う。
だからジョイパッドの入力があるとき仮想入力させるという作り方より、
パッドボタンかキーのどちらか一つでも入力していれば
入力状態を入れる変数をtrueにするやり方が良いと思う。
あとkeyboard_check_directって結局何のために有るんだろうな。
ハード的に押されてるか調べる関数って書いてあるけど
仮想入力でもtrueを返すし、これはStudioのバグなのか?
527 :
525:2014/01/27(月) 23:36:35.69 ID:zRDluDmL
自己解決しました。
このコード、キー押された時のイベントに書いてたんで
キー離した時にコードが実行されなかったというお粗末な話でした。
528 :
524:2014/01/27(月) 23:37:27.76 ID:zRDluDmL
名前間違えました。
>>525 ジョイパッドの人とは別人ですすいません。
改めてマニュアル読んでみたけどkeyboard_check_direct()だと
ゲームのウィンドウにフォーカスが無い状態でも入力を受け付けるのか。
デバッガー使って気付いたけどスプライト無しオブジェクトはそのままだと無限にimage_indexが増えてくんだな
531 :
名前は開発中のものです。:2014/01/30(木) 23:07:48.01 ID:6B5FHGOl
質問なのですがgamemaker8.1のproはもう買えなくなってしまったのでしょうか?
>>531 買えるけど同じ価格でStudio Standardが買えるし2倍払えばProもいけるぞ?
たまにStudio無料で配布してるみたいだしね
俺もそれ逃したクチでなあ…
今買ってすぐにまた無料配布とかセールとか始まったらショックで寝こみそうだしなあ…
まぁYoyoGamesへのお布施だと思って買いなさい
買ってすぐにセールになったクチだけど1回ゲーム作って販売したら余裕で元取れたから
別に気にしてないな…取れなかったとしても、これだけの環境ならそれだけの価値はあるし
無料版は制限無くてもロゴとかはでるから
作ったのを配布したいなら
スタンダート版買わないと
スタンダードは去年11月頃に無料配布してた
さらに12月はウィンターセールで、スタンダードからProへのアップグレードが$25、Proが$50と半額になってた
一番上のマスターコレクションへのアップグレードは今まで支払った額を差し引いた料金で買えた
次のセールは夏だろうけけど買いたい時が買い時
539 :
名前は開発中のものです。:2014/02/02(日) 23:20:12.76 ID:O1aXStt8
>>532 >>533 ありがとうございます。
Studioは使いこなせないと思うので今回はやめて起きます
iOS書き出しの実行速度ってどんな感じ?
html5をwebviewで動かしてる程度ってことは無い?
これもしかして少しコード直した場合でも、ユーザーにアップデートしてもらうには、
ファイルサイズ大きいdata.winを配布して上書きしてもらわなきゃいけないのか
本家ヘルプセンターに問い合わせしたいんだけどサポチケって無料?
サポートサブスクリプション購入しないと駄目とかじゃないよね?
GMのMはM男のMだったか
大抵、企業相手を主としているところ以外はサポートに金かからんよ
TIZEN(JAVASCRIPT)で吐き出したWGTてただのZIPだから解凍するとPCブラウザでそのまま実行できるんだな
WEBGL強制されることとTIZEN用関数が組み込まれて容量肥大していること以外はHTML5 EXPORTERと同じようだ
HTML5 EXPORTER買う必要ないじゃんと思ったが規約的にアウトなんだろうな
caseが重複してたら教えてくれるようになってたのね
ええやんこれ、サクッと当てキャラ作って、すぐプロトタイプできる。
GMS使ってるけど突然起動時にライセンス入力求められるのってなんなの?
今月の始めに求められたから入力したけどまた入力求められた
もしかしてハックされてどっかにライセンス使われてたりすんのかな
今までこんな事無かったのに
俺も正規のライセンスだが最近よくある。
定期的にライセンス認証しなくちゃいかんらしいが
こんなの正規ユーザーに手間がかかるだけじゃん
数ヶ月前に購入したけどライセンス確認って毎月のお約束だと思ってた
正規購入したのにこういうのは確かに気持ちの良いものではないね
作るゲームにもそれよりマシな割れ対策は実装不可能ってことかね
ルームエディタの等倍ボタン押した時に強制的にルームの左上に戻されるのどうにかならんかな
要望はどんどんyoyoに投げればいいんじゃね?
日本に来てる外国人観光客の拙い日本語を俺らがなんとなく理解してやれるのと同じように
俺らが機械翻訳で書いた内容もyoyoの中の人がうまいこと解釈してくれるから伝わるんだぜ
さすがに機械翻訳だと意味不明すぎるから
拙くても中学卒業レベルの文法使って自分で再構築したほうが良いぜ
単語は機械翻訳のを参考にな
GM使いならスクリプト組むより楽だろさ
それは無いな。それは無い。例外や単語の変形が難解過ぎる。
何よりGMLが英語より難しいならプログラム言語としてそこまで価値は無いぞ。
言葉のあやというものがだな
オブジェクト同士が接触したときに
その接触した座標を出す関数ってあったっけ?
とりあえずこんな形でだしてみたけど
var kyori = point_distance(x, y, other.x, other.y);
var kakudo = point_distance(x, y, other.x, other.y);
var px = lengthdir_x(kyori, kakudo)*0.5
var py = lengthdir_y(kyori, kakudo)*0.5
Studio使い始めて5ヶ月くらいになったけど
だいぶルームエディタの操作性に慣れてきた。こっちのほうが便利だな。
他のソフト使っている時に気づいたホイールドラッグに慣れたからというのもある。
ホイールドラッグで編集中のモノの描画位置をずらすっていうのは大体どの画像関連ソフトでも共通なんだな。
3dだとホイールドラッグはパンだったりドリーだったりとバラバラだけどね
そりゃそうとhtml書き出し調べてみたんだがtizenも有料htmlプラグインも中身は全く一緒だった
違いはglobal game settingの設定項目だけ
有料htmlプラグインで書き出しても中にはtizen用コードは入ってる
tizen書き出しは有料htmlプラグインと同じ方法でビルドされて最後にzip圧縮してるだけだった
公開せずに個人的に試すだけなら有料htmlプラグイン買う必要はないな
StudioでSwf読めるらしいけど使ってる人いたらどんな感じか教えてほしい
アニメさせた動きまで読めるなら大きいキャラアクションとか作るの楽になりそうだよね
買ったった!
ios動作速いやん!
viewで解像度遊べるやん!
さすがにライセンシングの頻度高すぎだろ
10回起動するたびに1回はやってる気がするぞ
だから俺はソフト起動しっぱなしにしてるわ。PCはスリープにして
566 :
名前は開発中のものです。:2014/02/14(金) 23:41:54.96 ID:1HF4dRKM
初歩的な質問でもうしわけないんですが
draw_spriteがうまくつかえません
なにか注意点はありますか?
スクリプト
draw_sprite(spr_wall,0,x,y);
インスタンスにスプライトを設定してる時にdraw_spriteを使うとなにか起こる気がした
draw_eventに記述してないのでは?
569 :
「ガスライティング」で検索を!:2014/02/15(土) 03:47:35.59 ID:7xufgQ4d
★マインドコントロールの手法★
・沢山の人が偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
↑マスコミや、カルトのネット工作員がやっていること
TVなどが、偏った思想や考え方に染まっているフリや常識が通じないフリをする人間をよく出演させるのは、
カルトよりキチガイに見える人たちを作ることで批判の矛先をカルトから逸らすことが目的。
リアルでもネットでも、偽装左翼は自分たちの主張に理がないことをわかっているのでまともに議論をしようとしないのが特徴。
,.,,,,
570 :
名前は開発中のものです。:2014/02/15(土) 11:36:28.12 ID:3/ZuEtxx
>567
>568
drawイベントに書かなければいけないんですね
普通にstepにいれていました。ありがとうございます。
無事描画されました。
つまらない質問失礼いたしました
3Dの衝突判定を標準関数でサポートしてくれるだけで随分違うのになぁ…
拡張で対応できるとはいえ
一方向に伸びるゲージじゃなく
タコメーターみたいな回転するゲージを作れないかなと色々考えてて
ゲージの変数の値に*1.8させて
ゲージの針のspriteの角度をstepイベントで動かすことで実装できたよ
そんな難しく考えんでも針の根元をセンターにしてアングル変えるだけでいいんじゃね?
0~100が入るパラメータに1.8を掛け、その値を使って
>>573にしてる意味でしょ
ああ やっと理解できた
576 :
名前は開発中のものです。:2014/02/19(水) 00:21:55.42 ID:ZHH0TF0u
draw_spriteで最前列に描画ってできますか?
オブジェクトの向こう側にしか描画できないのですが・・・。
オブジェクトのdepthの値が小さいほど全面に描画される
578 :
名前は開発中のものです。:2014/02/19(水) 00:50:18.52 ID:ZHH0TF0u
さっそく返信いただき、ありがとうございます。
描画用のオブジェクトがそのまま影響するんですね。
スプライトそのものに与える方法をさがしてしまっていました・・・。
無事解決しました、ありがとうございました。
roomのオブジェクトの一括移動行うと何故か配置したオブジェクトの一つが横向きになるな
板ポリでええんちゃう?
3/2までに登録すりゃずっと使える
いつものセールと一緒だ
ほとんどの開発者は35ドルでプロフェッショナル版が買えると思ってるだろ
無料になってるスタンダード版はそのための土台でしかない
モジュールのセールもして欲しいっす
Unity2Dなんかに開発者が流れてるからとかそういう事情もありそう
割とコンパクトで良いソフトなんだけどな
Unityは門口がちょっと狭いからね
これはプログラミングが出来ない人からそれなりに出来る人まで
広く使える
いやー買わなくて良かった
信者による購入の勧めを無視し続けたお陰で報われた
iphoneやmacをターゲットにするならmacに入れなきゃならないんだよね?
一つのアカウントでwindowsとmacの2台に入れてもおk?
フリー版だと、ビルド時にエラーが出るデモが結構あるけど、
有料版だと直ってるのかなあ。
直ってるというか、フリー版だとリソースの制限があるからそれに引っかかってるだけでしょ
うに
いくら
たったの35ドルです!
freeはwindows版のみの模様
3/2までに登録すればずっと使えるってのは
3/3以降に再インストールしたら終わり?
いや、シリアルキー貰えるからそれ再入力すれば平気
そかーありがとう
じゃあ、とりあえずシリアルキーだけもらっとこうかな
598 :
名前は開発中のものです。:2014/02/25(火) 16:00:55.06 ID:eD5qEiYY
みなさんキャラの描画ってどうやってますか?
sprite_indexつかってやってるんですが、一度ボタンを押したら、
一周分アニメーション描画、をやりたいんですが、うまいやり方がわかりません。
ちなみに、sprite_indexもdrawイベントにいれたほうがいいんでしょうか。
if(image_index+1 <= image_number-1)
{
if(anime >= 5)
{
anime = 0;
image_index += 1;
}
else
{
anime += 1;
}
}
createでimage_speed=0;
ボタン押したらimage_index=0;とimage_speed=1;
stepでif(image_index>image_number-1) image_index=0;とimage_speed=0;
Early-Access版ならifの条件分ける必要ないな
601 :
名前は開発中のものです。:2014/02/25(火) 20:39:50.14 ID:eD5qEiYY
>599
>600
ありがとうございます。
プレイヤーの待機や走ってる状態から、攻撃モーション
ということをやりたかったのですが、
if(graunded=1 && B_key)
{
ani=1
}
if(ani=1)
{
sprite_index=spr_player_atk
if(image_index+1<=image_number-1)
{
}
else
{
ani=0
}
}
で、とりあえず形になりました。
(image_speedなんですが、1にすると描画が遅くなりすぎてしまいました・・・。)
この方法だと、aniという変数を無駄につかっているようできになりますが、
次に、アニメーション中のキーを無効にしたいのです。何かいい方法はありますでしょうか。
image_speedは毎stepで自動的にimage_index+=image_speedしてくれるんだから
それで遅くなるというのは根本的に何か間違っているということになる
キー入力無効にするのもアニメ開始時にフラグ立てて終了時に消して
フラグが立ってないときだけキーチェックすりゃいいだけの初歩的なこと
思うにまだそういう物を作れるレベルに達してないんじゃないか?
もっと簡単なものから初めて一つずつ理解していった方が結果的に早いぞ
603 :
名前は開発中のものです。:2014/02/25(火) 21:38:34.12 ID:eD5qEiYY
>>602 ありがとうございます。
フラグたててやる方法は思いついていましたが、
なんかgamemakerって便利な関数が多いので、変数使うのを少ししぶってしまいました。
でも、たしかにいきなり大風呂敷になってるとは思ってたので、
一旦簡単なものをいくつか作ることにしてみます。
初歩的な質問失礼しました。
604 :
名前は開発中のものです。:2014/02/25(火) 22:49:27.85 ID:0y4SV2Od
今回の無料の期間にstudio手に入れたのですが、定義されていない変数は0にするっていうのはどこにあるのでしょうか?
これってライセンスキーの台数制限ってある?
PCの買い替えを考えてるし安易にアクティベーションしないほうがいいのかな
同時起動制限だけじゃね?
ゲーム作ってるけど晒す場所がイマイチないよね…
上にあるフォーラムとかでもいいのかな
国内でフリー公開ならふりーむとかフリーゲーム夢幻がある。
ふりーむは規約とか雰囲気が好きじゃないのでやってない。
>>607 あそこでいいんじゃね
この板のやつしか見てないと思うけど
グーグルドライブとかワンドライブとかに上げとけばいいんじゃないの
ゲーム自体は無料レンタルサーバーにアップしても良いしdropboxとか斧でも良いんじゃないの
紹介やリンクは動画サイトを利用すれば集客効果期待できる
612 :
名前は開発中のものです。:2014/02/28(金) 00:32:07.97 ID:wINW6rke
if(collision_circle(x,y,30,other,0,1))
{
other.hp-=player.atp
}
で、衝突相手のHPを減らそうとおもったのですが、うまくいきません。
otherの使い方が悪いのでしょうか・・・。
エスパーしてみる
コリジョンイベントじゃないとotherは使えない。
・何がしたいか
・どのように作ったか
・結果として想定していた動きとどう違うのか
質問レスが必要な情報不足してることが多いのでちゃんと書いてほしい。
次スレからテンプレに入れるべきじゃないかこれは
614 :
名前は開発中のものです。:2014/02/28(金) 02:11:38.92 ID:wINW6rke
>>613 すみません、説明不足でした。
同じ敵オブジェクトの二つの異なるインスタンスの片方にダメージをあたえたいです。
方法は、玉が当たったら敵にダメージというものです。
ただし、玉のほうに敵HPの制御をやらせたいのです。
コリジョンイベントでしかつかえないかも、とも思って、対象を敵としたコリジョンイベント(玉の)に
上記のスクリプトも入れてみました。
玉が当たっても、敵のHPに変化がありませんでした。
結局、最終的にやりたいのは、同オブジェクトの特定のインスタンスのみの制御を
全く違うオブジェクトから行うというものです。
わかりにくくてすみません。
615 :
614:2014/02/28(金) 15:27:22.38 ID:wINW6rke
結局 other の使い方はまだ理解できてないけど、
instance_place 使用でなんとかなったです。
GameMakerが無料と聞いてDLしました
GameMakerは文字通りゲーム部分を作る事に特化していると聞きましたが、字幕を表示させる事は可能でしょうか?
具体的な例をあげると、洞窟物語のイベントの様にフェイスグラフィックと字幕(テキスト)を出して会話や主人公の独白等をさせる事は可能でしょうか
>>611 ニコ動で動画(タグにGameMaker)+斧へのリンクで紹介することにしたよ
内容が内容なんでリンクは貼らないけど
>>617 可能だよ、自作ゲーム(↑とは別)でそういう箇所あるから分かる
特定条件になったらメッセージウィンドウを出してテキスト処理するって感じかな?
ただ、それをどんな風に実装するか(ソースにゴリゴリ書くか、別ファイルから読み取るかなど)
ってのは別の話という理解だけど…
とにかくひとまず触ってみようぜ?
619 :
名前は開発中のものです。:2014/03/01(土) 13:45:01.81 ID:3mYzovpz
敵にダメージを与えた時の反応をスピード変化でやってるんだが、
なんか他にうまい方法ある?
move_bounceつかってみたんだけど、横方向だとうまくいかないんだ。
質問なんですがコードを貰うのに、登録したメールアドレスはあとから変えられますか?
621 :
619:2014/03/01(土) 18:53:32.77 ID:3mYzovpz
スピード変化だけで満足いく動きができた。
スレ汚しすまん。
IE10を使ってGoogleで「Gamemaker バージョン管理」ってワードを検索したら
検索一覧画面の真ん中あたりに斜線みたいなのが一本表示されてびびった
スムーズに拡大縮小するのが気持ち良いね
>>618 返事遅れました申し訳ありません。
安心しました!ありがとうございます
>>623 それの拡大縮小ってどうやってるのか気になって少し
view周りを弄ってみたけど
viewをroomより大きくしたらroom内に収まるように自動的に縮小してくれるんだね
627 :
623:2014/03/05(水) 03:01:23.61 ID:G0n+7IJH
>>626 バージョンアップで縮小してくれるようになった?
わたしの時は縮小されなかったので、拡大した時roomより大きくなる時は拡大キャンセルしてました。
GameMakerでツクールみたいなセーブ機能が出来ないかとふと思って少し検索してみたら
セーブする構文はあるけど、ツクールみたいなセーブ機能を実装するにはGMLの知識を使って自分で自作しないとダメって認識でOKかな?
それともツクールみたいなセーブ機能ってGameMakerじゃ不可能?
>>628 自分はiniファイルの読み書きをロード&セーブに使ってる
クリアしたステージとオールクリアの有無と
ハイスコア情報やらちょっとした情報くらいならそれで十分だし…
ツクールみたいなセーブ機能ってのがどういうのか分からないけど
セーブスロットが分かれてて〜というようなもののこととするなら
作れるだろうけど、フラグ管理やらが面倒だから自分なら別の方法を検討するよ
632 :
名前は開発中のものです。:2014/03/07(金) 23:03:52.96 ID:xurLRoWk
そういえばまだシェーダーを触ったことが無かったな…
GLSLかHLSLっていう言語を覚えないとだめなのか
635 :
名前は開発中のものです。:2014/03/09(日) 00:20:14.55 ID:CpwtweEf
今日これの存在を知ったんだが1週間前まで無料だったと聞いて涙目
それは運が悪かったと割り切って、たかだか数千円の出費なんだから気にせず買えば?
社会人なら2〜3時間残業すれば余裕で買えるし、学生でも1日バイトすりゃ余裕でしょ
それに自腹切った方がモチベーション高まるし…
まぁ、夏休みセールが来るだろうけどな
Separate collision masksってpreciseに設定しないと使えないのか?
Rectangleで使いたいんだけどやり方がわからん。
間違った。rectangleで使えるんだけどmanualに出来ないんだよなー
スタンダード買うなら絶対にやめたほうが良い。頻繁に無料になるからな
実験や土台作り程度ならフリー版でも十分出来るから慣れておくと良い
海外のソフトウェアは基本よくセールをやるからそれを知っておくと吉
>>631 返事遅れました
えっと説明が悪かったかな
簡単に言うと市販のゲームの大多数が出来る、何個かセーブを別けて作れるセーブの作り方かな
例えば1クリアした後に、そのデータ残したまままた最初からやりたいなって思った時に、セーブ別けれると便利そうだなぁって
いつ来るかも知れないセールなんか待つよりも、作りたいモチベーションがあるうちに買ってさっさと作り始める事をお薦めするけどな。
>>642 そういうのも出来るよ
1つのファイルにまとめるか、1セーブ1ファイルでも好きな方で
誰か日本語の解説本を出版してくれ
買うから
前に解説書を書いてるってここで言ってた奴がいたが
全く音沙汰ないな。記憶違いかも知れないが
wikiのGMLの翻訳は頻繁に更新されてるよ
>>644 ありがとう!最近DLしてゲーム作ろうと思ってるんだけど
素材作成をメインにしててまだ手探りで機能探してる途中だったんだよね
調べたり触ったりしてみるとセーブ関係が貧弱というか、充実してない感じだったんで不安になって…
650 :
名前は開発中のものです。:2014/03/12(水) 23:10:14.09 ID:Dzn4eI2L
描画されてはいるけど、screen上には描画されていないようにすることとかって
できませんかね
2度描きしている部分があって、alpha値が加算されてその部分だけ色が濃くなってしまうので
なんとかしたいのですが・・・
651 :
名前は開発中のものです。:2014/03/12(水) 23:28:14.91 ID:Dzn4eI2L
あともう一個疑問なんだけど、
スタンダード無料サービスでstudioにしたのはいいんだけど、
gamemakerにあった、定義されてない変数は自動で0にするっていう機能なくなった
んですかね?
>>650 二度書きって何?描画したいの?したくないの?
>>651 なくなったし、無い方がちゃんと未定義の変数使おうとした時に
エラー出てデバッグしやすいので良い。
653 :
名前は開発中のものです。:2014/03/13(木) 11:17:37.88 ID:JQAwPOOc
>>652 二度描きというより重ね描きというほうが良いですかね。
別のものを描画してるんですが、
例えば○と○をベン図のようにすると、○のalpha値が1でない場合
○と○が重なる部分が濃くなり違和感がでてしまって。
なんとかできないかなと思ったんです。
なるほど、やっぱりなくなったんですねあの機能。
サーフェスに描画して、サーフェスをalpha値で透明にして描画すれば良いのでは?
後sageを覚えよう。
方向キーの上下と左右の同時押しをしてる時にスペースキーを押すと、スペースキーのキーボードイベントが処理されないキーボードがあるみたいだね
キーボードによって違うのかと考えて色々なキーボードで試してみたんだけど、正常に処理されるキーボードと処理されないキーボードがあった
方向キー同時押しとスペースキーが正常に処理されないキーボードでも、NumLock外してテンキーを方向キーにして、そっちで操作したら正常に処理されたけど
パッチ来た
1.3の目玉ってなんだ
win8とか電話とかどうでもいいんだけど
3D機能をもうちょっとだけでいいから充実して欲しいな…
それこそ衝突判定だけでも
659 :
名前は開発中のものです。:2014/03/14(金) 20:40:45.58 ID:xF5+tpqP
タイルを配列上に管理できるようになるのが個人的に嬉しいところ。
1.3が出たらpro版を買おうと思う・・・
1.3にアップしたら、window_set_gui_size関数の仕様が変化して、かなり行き詰ってる。元に戻すかしてほしいなぁ…
yoyoのチュートリアルって文字列囲むのに[']シングル使ってるのね。
今まで文字列は["]ダブルで、半角の一文字は[']シングルで囲むもんだと思ってた。
特に使い分けなくていいのかな?
>>662 ダブルを文字として表示したいときとかシングルで囲んでる
javascriptなんかもどっちでもいでしょ
最新アップデートしたらやけに起動が遅くなったが、これはどういうこと
確かにアプデしたらプルダウンメニュー出るのとかゲーム走らせるのとか
もっさりした印象。
うーんやっぱ気のせいかなぁ
スペック十分すぎるのにやたらエディタやらのレスポンス遅くなる時があって不安定だ
色々バグフィックスされているとはいえ心配な人はアップデート避けたほうがいいかも。
get_string関数でフリーズするのは自分の環境だけだろうか。
XPにstudioフリー版をDLしてインストールしたんだけど
インストールして起動後のアップデートが「Extracting...」のとこで固まってて
アップデートが終わらないよ
XPじゃもう無理ってこと?
サポートが切れるOSは世話しない
>>670 XPなら一旦アンインストールして
C:\Documents and Settings\User\Local Settings\Application Data\GameMaker-Studio\UpgradeZip\upgrade.zip
もしくは
C:\Documents and Settings\User\Local Settings\Application Data\GameMaker-Studio
フォルダそのものを削除してみては。
ただGM Studio は出力したゲームが最低でもDirectx9c の完全互換じゃないと動かないので
XPでも動くというゲームを作りたいならばGM Studio はやめておいたほうがいい気がする
>>672 アドバイスどうもです
アンインストール後GameMakerのフォルダを検索して全部削除した後
インストールしてみたけど結果は変わらずでした
大人しく7に乗り換えます
studioってgamemaker8.1まであったvariable系の変数があるか調べる関数に変わるなんかあるのかな?
それともいちいち自分で定義しないとだめ?
8.1までずっとこれでやってたから移行させようと思っても代入しないとだめなのしんどくて
気が進まない
Drawイベントめっちゃ増えてて
DrawGUIはビュー基準の座標で描画するのはわかるんだが
pre drawとかpost drawとかresizeってなんだ
draw_rectangle_colo"u"r()
って関数あったけどこれはイギリス綴り用か。
というかcolorがサジェストの候補に出なくなったし
ステータスバーに引数の内容が表示されなくなったじゃないか。
これはイカンと思うぞ
DrawGUIは便利だな
ビューがグリグリ動くゲーム作ってるから
>>676 本来、uが入った綴りの方が原型で、アメリカ人の偉い人が省略形を広めたって聞いた
日本ではu抜きのアメリカ英語で習うから違和感があるけどね
ちょい前にXPにインストールできないと言ってた者だけど
7に乗り換えてインストールしてみたら無事できました
ご報告まで
はい
これツイッター使える関数とかないんか
フェイスブックはあるみたいだが
PS4とVITAと若干遅れるけどPS3も
さりげなく大きなニュースだとおもう、詳細待ちだね
685 :
名前は開発中のものです。:2014/04/01(火) 00:12:16.38 ID:8Wi73EkW
質問
あるオブジェクトの方向を向き続けるオブジェクトって作れます?
cosとか使ってみたけどよくわからん
>>683 先日の報道のやつでしょ
Sonyとライセンス契約を結べば作れるようになるんじゃないかな
個人では無理だと思うぞ
687 :
名前は開発中のものです。:2014/04/02(水) 10:09:00.99 ID:mOK4G8fd
BGMとスプライトのアニメーションの同期をしようと思って
image_speed = (1/((60/tempo)/(1/room_speed)))*image_number;
とさせて同期したまでは良かったんだけど
ルームがかなり横に長くなりそうだったから
instance_deactivate_allとinstance_activate_region
でview外を非アクティブにしたら
view外のインスタンスがview内に入るとそのview外にいたインスタンスがBGMと同期しなくて困っています
因みにBGMはループさせたいので最初と最後の無音時間をカット
でも1ループ目の最初は無音時間が欲しかったのでアラームで設定
その同期させたいオブジェクトもアラームで設定
どうしてもずれるんですよね
まだ1ステップごとにアニメーションが変わるのなら
適当に変数用意して1ステップごとにカウントを上げて
それでimage_indexを設定すればいいのですが
image_speed = (1/((60/tempo)/(1/room_speed)))*image_number;
これからして どう考えてもそうはいかず・・・
昨日丸一日考えてもうまくいかなかった・・・
長文失礼
>>685 ヒント:point_direction()
688 :
687:2014/04/03(木) 20:57:42.95 ID:cWRGZwD/
なんとか自己解決
こんなに解決に時間かかるとは・・・
689 :
名前は開発中のものです。:2014/04/04(金) 13:53:33.69 ID:TrjptW98
>>687 おお、できた
あともう一つ質問いいですか?
アクションで坂道つくろうと思って、アイワナの中身とかスレ見たりしたんですが、
当たり判定が原因なのかうまく動作しなくて・・・
ちなみに、登らせたい画像のサイズは32×32です。
最近Studioに乗り換えたんだけど、
>>116みたいな感じで、外部ファイルの読み込みをしたくて
game.exe←出力したexe
├data
│└chara.dat←これを読みたい
└readme.txt
いって時に、以前のGMと違って"./data/chara.dat"ってパスの指定では、何故か読んでくれなくなったと思うんだけど、
これをどうにかするには1ファイル1ファイルIncluded filesで指定するしかないのかな…?
例えばユーザがキャラデータを追加できるゲームを作りたい時、
dataの中にchara2.dat〜ってファイルが増えたり減ったりした時に
Included filesだと毎回作者が手動で対応しなきゃいけなくなるから困ってる…
>>692 俺も数ヶ月前に悩んで、限定的だがIncluded Filesを使わない方法を考えた。
あくまでも開発者のPCで使えることしか確認してないけどな。
ヘルプのReference->File Handling->File System Limitsの下のほうに書いてあることだが、
Windows 7の場合は C:\Users\<ユーザー名>\AppData\Local\<ゲーム名> のディレクトリにいろんなデータが置いてある(XPの場合はまた別)。
例えばOreというユーザーがGame1というゲームを作った場合、
C:\Users\Ore\AppData\Local\Game1\
を文字列dpに保存すれば、dp+<ファイル名>で自由に読み書きできる。
ただ長いしOSごとに異なるから、Localまでを環境変数から取得するようにして、
switch(os_version){
case 326781: // XP
case 326782: // XP 64bit
dp = environment_get_variable("appdata") + "\Game1" ;
break;
case 393216: // Vista
case 393217: // 7
case 393218: // 8
dp = environment_get_variable("localappdata") + "\Game1" ;
break;
}
fname = "data1.txt" ;
fpath = dp + "\" + fname ;
というふうにすれば、ユーザー名やOSが違ってても、新たにファイルを作ったり、そこからデータを読み込んだりできると思う。
>>693 うーんなるほど…サンドボックス化とは言え、厄介な話だ
うん…?これってもしかして、
zip出力ならexeからの相対パスでファイル取得できるのか。
すごい面倒だけど、開発環境ではAppDataとかの方に入れて開発しておいて、
配布するときにはZipで出力してAppDataに置いてある追加ファイルをexe以下にコピーしておくって感じになりそうかな…
一応、exe以下のファイルの読み込みと、ファイル一覧の取得は出来るのは確認した。
IncludeFilesじゃなくてIncludeDirectory、とかなら良いんだけどなぁ…
IncludeFilesにグループ分けしてそこにファイル入れておけば
zip出力ならグループ名のフォルダをzip内に出力してくれる
exeからの相対パス「グループ名\ファイル名」でアクセス可能
>>696 それだとzip出力してない状態、要するにStudioで実行してる時とか開発中は、
IncludeFilesに入れたファイルしか読めないから面倒だなぁと思って。
毎回一時ディレクトリを探して使いたいファイルをコピーすればいいんだけど、ちょっと手間が大きいなあと…。
IncludeFilesみたいナ感じで、ディレクトリを指定して、そのディレクトリの中にあるものは
実行時なりエクスポート時にコピーしてくれればいいのに…という意味だった。
よくわからん仕様だな exeなりに出力してしまえば相対パスで読めるってことは、
逆に言えばそれだとF5で起動した時には読み込めないってことか?
そんな不便な事あるもんなのか?
roomエディター上でタイルを消していくのが面倒すぎる
8.1のときは右クリックしながら一気に消していけたのに
studioじゃ出来なくなって一つづつ消していかないといけない
自己解決
ctrl押しながらドラッグしたら一気に消せた
physics面白いな
アクションやシューティングで貫通する武器を設定する場合
接触している間ダメージが入り続けるので判定の設定にはいくつかの手段があると思うけど
どういうのが便利かな、たとえば
・弾が当たった時点で弾の判定を一旦消す(敵が密集しているときに一体にしか当たらない)
・弾が当たった時点で敵の判定を一旦消す(集中砲火を浴びせても1回しかカウントできない)
・弾自体の攻撃力を低く設定して通過までの累計でダメージを与える(バランスが難しい)
>>702 どちらの判定も消さずに接触したインスタンスを敵に保持させて2回目以降は無視かな
ブーメランみたいにUターンして複数回以上当たるなら、さらに離れた時点でそれをリセットさせる
よっぽどな弾幕じゃない限り処理オチすることもないだろうからね
あるいは3の累計ダメージ制にして小さい爆破エフェクトを連続させて誤魔化すとか…
どちらかの判定を消すやり方だとプレイして爽快感に欠けるだろうからオススメしない
704 :
名前は開発中のものです。:2014/04/11(金) 22:36:00.63 ID:tTvXqOem
>>702 グローバル変数で、攻撃した時に変数をtrueにして
敵の方のアクションで変数がfalseの場合は当たる、trueの場合はスルーという風にして
アニメーションエンドイベントで変数をfalseにする・・・
言ってることが自分でも分からなくなってきた・・・
貫通武器は個々のインスタンスを認識させるというのが一番か
あとインスタンスナンバーを使わない手としては弾のほうを別オブジェクトにする手もあるな
例えばグラディウスのレーザーなら自機とオプションそれぞれが撃つレーザーを
別のオブジェクトにしておけばそれぞれに対する接触イベントを設定できる
2連射なら1発目と2発目を交互に別オブジェクトに
弾インスタンスに、今後数フレームhitさせないインスタンスIDを保持する配列を用意しておいて、
カウントと一緒に管理したら良いんじゃないかな。
仮にhitさせない有効時間を1fにしておくと、弾速度の速い武器なら1回だけhit。遅い武器なら連続hit(2fに1回)みたいな使い分けも出来て良い感じ。
バージョン1.3bにしたら終了時にエラーがでるから1.2に戻そうとしたら
なんかyoyogamesが落ちている…なんというタイミング
640x48000のルームにタイルを敷き詰めるのが苦行になってきた…
せめて直線や塗りつぶし系のコマンドがあれば
タイル敷き詰めると、1roomデータだけで容量数M食ったりする。
配置しながら確認できないけど、tile配置用オブジェクト作ってbbox範囲内に敷き詰めるようにすると軽い。
flashやgamemakerでもう結構な数のアクションゲームを作ったけど
いまだに三角関数は頭がこんがらがるよ
なかなか思うような動きができなくて四苦八苦して
何時間も頭をこねくり回してたのに
結局原因がxとyの打ち間違いだった時の脱力感ときたら・・・
三角関係でこんがらがったのかと思った
三角木馬でこねくり回されたのかと思った。
三角関数の座標は原点が左下だけど
gamemakerのroom座標は原点が左上なので
それを忘れてるとミスを起こしやすい
>>714 それが原因でsinに-1をかけ忘れて悩んだことがあったから、
以来cos,sinを直接記述するよりもlengthdirを使うことがほとんどになった
lengthdirだと-1かけなくて良いし角度をラジアンに直さなくて良い
恋のベクトルは
マップを延々と作るんじゃなくてゼビウスみたく数パターン作って
それを良い具合にループさせるようにしてみるか…
実装をどうするか考える必要はあるけど
ベルトスクロールアクションつくってる奴いる?
衝突判定がXY軸しかなくてZ軸が足りないんだが、
depth変数使って弄くり回せば上手くいくかな
そういた昔ながらのゲームを作るときは
昔はどうやってたのかを考えるといいよ
昔のゲームだからって開発データ一式公開されてるわけではないし…
だから頭を使って考えろと
というかレイヤーごとに画面外にマップ描いて
tileなんちゃらで必要なマップ描かれたレイヤーのx,y軸を変えて動かすだけやろ
シューティングゲームとかで敵が弾を撃つ方向は
自機狙いであっても360°自由に撃ってるわけじゃなくて
実際には32方向とかの角度に限定されてて微妙にずれていれば当たらなかったりするよね
こういう処理入れていると難易度とかプレイしやすさとかにどんな影響あるかな
>>722 そういう考え方もあるのか
試してみるしかなさそうだな
安全地帯ができるだけなんじゃねえの
無印の怒首領蜂とかプレイすればわかるけどその方が難しい
ちょん避けが通用しなくなるからな
えっ…
GMStudioってsound_addないの…?
728 :
名前は開発中のものです。:2014/05/04(日) 22:06:29.78 ID:MVJ1ppVY
ブロックのオブジェクトをたくさん作成しても、重くならない方法ないかな?
テラリアみたいなゲーム作ってて、困ってるんだが
729 :
名前は開発中のものです。:2014/05/04(日) 22:14:08.07 ID:MVJ1ppVY
ちなみに、自動生成で
地形の形はランダムにしたいなと思ってる
連続でごめん
ブロックじゃなくて配列使って、配列に対して地形としての判定を行えば良いのでは。
731 :
名前は開発中のものです。:2014/05/05(月) 07:33:55.50 ID:oFBpnGxm
>>730 配列だと、オブジェクトとしての機能を
失わないかな?
>>731 オブジェクトの機能が重いから仕方ないとは思うが、
配列内のブロックを元にサーフェスに描画して、そこからスプライトを作成して、
地形オブジェクトのマスクに使ったらどうだろ。
ちょっと試してないからどれだけ重くなるかは分からないけど。
クリアできん…
あまり摩擦で速度が減衰する感じが無くて動き続けるから難しい
あとパワー溜めてリリースした時に速度リセットされないから
高速移動しようとしたつもりで離しても減速するだけになる。
今クリック連打でちょっとづつ動かしてやってる
ふむふむその辺は気にもしてなかった
指摘されたところを修正してもうちょっと作りこんでみます
スクリプトでView_portをいじって
サムスピや龍虎のようなキャラの位置によって
スムーズに拡大縮小する仕組みに挑戦中
これが出来たらスマブラみたいなゲームも意外と簡単に出来そうだ
737 :
名前は開発中のものです。:2014/05/16(金) 04:07:59.04 ID:3+yACoxI
ProとExport Moduleの半額セール始まるな…
Proは持ってるからAndroidモジュールだけ買おうかな
appdataにフォルダー作らせないようにするのってどうやるんじゃ
モジュールも公式で買えばSteamキーもらえるの?
>>740 あ、どうなんだろうね
俺も知りたい
Pro買ったときは1週間後くらいに公式のライセンス閲覧ページか何かにSteamキーが追加されてたが
一人で開発しててPC以外に作る気無いってやつにプロの旨みってあるか
$25出す気になれん
そのうちPS4で動くようになるとかいう話は興味あるな
うちはゲームパッド使う予定だからもしもしに用はない
まともなもの作る気あるならチームで作らなくても
ソース管理は出来たほうがいいけどな
外部ツールで面倒じゃないならいらんが
>>743 ソニーにPS開発者として登録すれば、もう無料で使えるんじゃなかったっけ?
>>745 そうなのか?
ここでもそんな記事見たことないから知らんかったけど
既に実装されている機能なのか
こうなると正式に日本進出して欲しい気もするな
thx
面倒くさいというか基本個人じゃだめだろ
PSMだったら個人でもOKみたいだけど
こっちでもGamemakerでいけるのかね?
PSMで良いならSCE公式のSDKが無償公開されてるからなあ
どっかの有名な物を改修した代物と聞いてる
PSMでGamemakerからの出力に対応しないのか
問い合わせようとしたら
問い合わせするにもまずデベロッパー登録しないといけないのか・・・
Steam版でProfessional持ってて、iOSのモジュール買おうかと思ってるんだけど
公式で購入したモジュールをSteam版に当てることはできるだろうか…
変数bairituを増減させて
Drawイベント内で
view_wview[0] = view_wport[0]*bairitu;
view_hview[0] = view_hport[0]*bairitu;
view_yview[0] = ((view_hview[0] - room_height)/2)*-1;
としてviewを拡大縮小させて
roomが中央に表示されるようにしてるんだけど、
view_object[0]に自機を指定して
スクロールさせるようにすると
view_yview[0] = ((view_hview[0] - room_height)/2)*-1;
↑が効かずに
縮小させたときroomが画面の下揃えに表示されるのって
なにが引っかかってるんだろう?
1.3のspineてのはどうやって使うんだ
758 :
名前は開発中のものです。:2014/06/01(日) 16:11:25.05 ID:PbbkV6+v
みなさん斜めのマップの当たり判定ってどうやってますでしょうか。
今のところ四角いブロックを敷き詰めたアクションゲームしか
作れないので、斜めの坂とか実装したいのですが
physicsかな
チュートリアル用のサンプルゲームで
斜面を歩くアクションゲームのサンプルあったはず
762 :
名前は開発中のものです。:2014/06/01(日) 23:35:24.47 ID:PbbkV6+v
ありがとうございます、早速参考にさせていただきます!
763 :
名前は開発中のものです。:2014/06/03(火) 18:08:49.80 ID:fF+aOSwp
ゲームパッド対応でゲーム作ってるけど
ゲームパッドのキー定数にはキーボードのvk_anykeyのようなものが無いから
ボタンそれぞれにrelease時の動作を作らなくちゃいけないのが面倒だ
GameMaker日本語ヘルプ対応して欲しいなぁ
日本で流行りづらい最大の理由がこの英語分からないと非常にとっつき辛い部分だと思うんだよな。解説サイトも殆どないしあっても古いし
Unityにどんどん流れてっちゃうぜ・・・
765 :
名前は開発中のものです。:2014/06/04(水) 12:01:10.39 ID:Y3Tsy+MX
すいません、デバック用にdraw_textを使っているのですが
文字と数値を同時に表示したいのですができませんでしょうか。
sample=100;
draw_text(0,0,"sample"+sample);
のように変数の中身を表示してみたいのですが。
766 :
名前は開発中のものです。:2014/06/04(水) 15:11:38.58 ID:Y3Tsy+MX
765です、stringという変換する関数がありました。
なんとか解決できました、すいません。
show_debug_message()使えば
Messagesウィンドウに出力できるよ
↓こんな感じで使う
show_debug_message( hensu_a + "文字と変数を結合するよ " + hensu_b);
769 :
名前は開発中のものです。:2014/06/05(木) 19:31:43.05 ID:7kf+aRz8
>767
ありがとうございます、使ってみます
770 :
名前は開発中のものです。:2014/06/07(土) 12:43:21.36 ID:njgMGj3X
スタンダード購入者にロゴが出るなんてなめた事にはならんだろうな
さすがにそれはないだろ
……だろ?
でも、スタンダード購入者は今後どういう扱いになるんだろうな?
期間限定でプロへ割引アップグレードさせるのかね
以前はロゴ表示なくなってたんだっけ?
なんか同じ画像なのに、元々読みこんである画像と、sprite_addした画像で
テクスチャのサイズが変わっちゃうんですけど、何か勘違いしてたりしますかね…?
show_debug_message("画像を設定して、------------------------");
sprite_index = sprTest;
sprite_index2 = sprite_add("C:\Users\****\AppData\Local\**************************.png",1,0,0,0,0);
show_debug_message("こっちは組み込み------------------------");
show_debug_message(sprite_get_width(sprite_index));
show_debug_message(sprite_get_height(sprite_index));
show_debug_message(texture_get_width(sprite_get_texture(sprite_index ,0)));
show_debug_message(texture_get_height(sprite_get_texture(sprite_index,0)));
show_debug_message("こっちはファイルから読み込み========================");
show_debug_message(sprite_get_width(sprite_index2));
show_debug_message(sprite_get_height(sprite_index2));
show_debug_message(texture_get_width(sprite_get_texture(sprite_index2,0)));
show_debug_message(texture_get_height(sprite_get_texture(sprite_index2,0)));
show_debug_message("ここまで別の処理は一切してない---------------------");
で、これに対してログを見ると、texture_widthとかheightが1以下になっているという…
画像を設定して、------------------------
calling pLoader->Create
calling Clear()
About to get widths and heights
TBitmap has w=48, h=51
こっちは組み込み------------------------
48
51
1
1
こっちはファイルから読み込み========================
48
51
0.75
0.80
ここまで別の処理は一切してない---------------------
使う人が減ってるんだろうな
何も知らない人はUnity に行くような気がする
>>775 内部的なテクスチャの作成のされ方が違うんじゃないのかな
2の乗数のテクスチャが作成されている(48/64 と 51/64)
下のほうが見慣れた感がある
俺はUnity使っててStandard無料と聞いてスレに来たんだけど
ざっと調べた感じ今のバージョンの日本語の資料はほぼ無いし、機能的な面でも劣勢に見えるんだけど、ここが楽って所はありますか?
逆にunityが分からんからどうとも言えないけど2Dゲーム作るのは凄い楽だよ
もしunityもそうであるならGMを使う理由は無いね
779 :
名前は開発中のものです。:2014/06/08(日) 17:42:51.71 ID:lg3vIaBK
すいません、一枚の画像にキャラのアニメーションを何枚も描いて
ゲームメーカーに読み込ませたいのですが
ゲームメーカーのSpritesの項目にはBackGroundsにあるような
分割できるコマンドが見つけられないのですが
一つ一つ別画像として登録しないとダメなのでしょうか?
>>779 edit spriteでsprite editor起動
file>create from stripeで手動でいける
あっごめん8分差で被った
783 :
名前は開発中のものです。:2014/06/08(日) 20:33:39.95 ID:lg3vIaBK
780,781さんありがとうございます
Fileからあったんですねみつかりました。
784 :
名前は開発中のものです。:2014/06/09(月) 16:05:47.94 ID:p4fhfGHo
file_exists("sample.txt")で検索をしてtrueを返してほしいのですが
Included Fileフォルダに登録しない場合
sample.txtをどこに置いておけば良いでしょうか。
作成したプロジェクトフォルダ直下に置いたのですがNGがでます。
appdata/local内のゲームフォルダーじゃないの
勝手にフォルダー作るしこの仕様不便だよな
786 :
名前は開発中のものです。:2014/06/09(月) 18:47:17.41 ID:p4fhfGHo
ここに入れないとだめなんですね。
Local\temp\ にできるフォルダか
Roaming\gamemaker-studioかと思ってました。
ちょっと場所がわかりづらいですね
解決しました、ありがとうございます。
787 :
名前は開発中のものです。:2014/06/11(水) 16:44:56.98 ID:zAYfuSmx
アクションゲームで出てくる凸凹した地形を
何種類も作っていく予定なのですが、プレーヤーに見せる表の絵は
BackGrounds等tileで貼っていき、当たり判定のある背景は
Objectに同じ形で何か登録し不可視にして配置するのが
一般的なのでしょうか?
BackGroundに登録した絵にも当たり判定等とれるのでしょうか?
基本的には無理じゃね
方法が無いわけじゃないだろうけど
オブジェクトで地形を作るのが普通
789 :
名前は開発中のものです。:2014/06/11(水) 20:58:01.27 ID:zAYfuSmx
それらしい関数がないですから
やはり無理なんでしょうね。
ありがとうございます。
仕様に限界を感じた人からVC++とかに旅立って行くんかね
mantleとかHSAとかの最新ソフトウェアプラットフォームにも興味はあるが…
>>790 俺は最近C#に浮気した。
SFMLというライブラリと組み合わせればビュー機能とかがついてグラフィック面が強化されるから、
GameMakerのオブジェクトにあたるクラスを作ってしまえばほぼGameMaker状態になる。
それでもちょっとしたアイデアを試したい時はGameMakerに戻ってくる時もある。
汎用プログラム言語で作る場合は、ライブラリにもよるけど他OSに移植するとき手間がかかるんだよね
一度作ってしまえばエクスポーターであらゆるOSに対応できるのは強みじゃないかな
といってもPCとPS4で動けば良いくらいだし、
そこまで気にするほどでもないような
3Dや携帯関連分からないから
SDL → GM7 → GM8.1 → SDL2.0 だったな
SFMLはライセンス周りなんとかすればもう少し人気が出るんじゃないかと思う
複数OS対応は良いことだと思うんだけど、開発時のファイル読み書きが面倒になったからなあ…
それさえ良くなればもっと開発しやすくなると思う
>>794 SFMLってそんなにライセンス酷いか?
結構緩めだと思うんだけど
SFML本体はzip ライセンス。追加ライブラリはLGPL含めさまざま
酷いというより中途半端
SDLも似たようなもんだべ
非公式日本語情報サイト消えてんじゃんよ
一年以上経っても消化できないスレなんてこんなもんか・・
ひとつのスプライトに複数の衝突判定を設定するのって無理ですか?
無理なら
透明のスプライトで衝突判定つくってそれを複数重ねるみたいな方法を考えてるんだけど(作業量を考えると)現実的ではない?
何個か知らんけど見えないオブジェクトで取るのがいいんじゃね
重宝するよねそこ
方向キーで空中制御せずにそのまま放物線を描くようにジャンプさせることを
スクリプトなしでアイコンだけで作れますか?
一応ググってジャンプさせることはできたけど
空中制御のできないジャンプの説明は見つけらなかったです
アイコンでやるよりスクリプト覚えてやったほうが早いですか?
804 :
名前は開発中のものです。:2014/06/13(金) 16:17:40.91 ID:QOJT4OTX
チップセットをいくつか作り、当たり判定のあるブロックのみ
create from stripで抜き取りオブジェクトに登録しようとしているのですが
、チップセットをオブジェクトにいっぺんに登録とかできないでしょうか?
チップが大量にあった場合でも一つ一つ登録、という形になるのでしょうか。
806 :
名前は開発中のものです。:2014/06/14(土) 15:36:39.79 ID:+as+5qRK
ありがとうございます、インストールしてみてみます。
>>804 よくわからんけど背景タイルでブロックの絵を配置して
当たりがいるとこにだけ透明のソリッドオブジェクト置くってのはいかんの
808 :
名前は開発中のものです。:2014/06/17(火) 07:59:29.23 ID:EkYW/C6c
>807
はい、はじめはそれでいこうと思ったのですが。
配置するオブジェクトの種類が100とか多くなった場合
透明オブジェクトの形を作るために
スプライト登録とオブジェクト登録の往復に
結構手間がかかってくるので
いっきにできるコマンドでもあるかな、と疑問に思ったのですが。
create from stripのあといっきにオブジェクト化が
理想ですがないでしょうか?。
それって百個それぞれ形が違うってことか?
そういう便利機能は無いと思うぞ
810 :
名前は開発中のものです。:2014/06/17(火) 20:40:39.95 ID:EkYW/C6c
やはりないですか〜・・・
コツコツがんばります、ありがとうございました。
そんな多種多様なブロックを使うゲーム作ってるの?
プリミティブな形のブロックを何種類か用意して
それらを拡大縮小である程度バリエーション増やせない?
813 :
名前は開発中のものです。:2014/06/18(水) 21:53:34.22 ID:FFPwIL+z
ありがとうございます、公式のフォーラムにも
こういったプログラムが上がることがあるのですね、
、早速見てみます。
いまさらながら
gamepad_の関数じゃデジタルパッドは認識してくれないんだね
まぁいまどきアナログが付いてないゲームパッド使ってる人なんて希少だろうから
気にしなくてもいいと思うけど
815 :
名前は開発中のものです。:2014/06/24(火) 21:11:50.17 ID:P63BHVfB
HyperMetalHUNGRYの動画見てんだけど
viewが拡大縮小してもパラメータ表示してる部分の大きさは同じだよね
これってそのオブジェクトだけviewの倍率にあわせて表示する大きさを変えてるの?
DrawGUI使えばいいんじゃね
>>815 drawGUIですねぇ。studio以前の話だけど、viewの倍率に合わせて拡大縮小すると、どうしてもそれに合わせてカクカクしますね。
ほぅほぅDrawGUIの描画はviewとは独立してんのね
>>816>>817ありがとう
いろいろと弄ってみる
オンラインでのマルチプレイを実装したいのですが、Pro版でなければできないのでしょうか
>>820 誘導ありがとうございます
ただソケット通信など先に勉強しなければならないことも出てきたので実装はとうぶん先になりそうです…
823 :
名前は開発中のものです。:2014/06/30(月) 23:41:03.82 ID:2Xu+CmqY
standart版も無料になったことだし
どっかgamemakerでゲームを作ろう的な本ださんかなぁ
おっ1.4がリリースされるのか
825 :
名前は開発中のものです。:2014/07/07(月) 13:46:22.14 ID:aumuvebq
変数宣言をしていない変数を使用した場合エラーになる
とかできますでしょうか?
今のところ変数名を間違えないようにコピー&ペーストで
書いているのですが
比較演算とかに使おうとしたら普通にエラーでるんじゃないか
Studioならデフォでそうなってる
8.x以前なら未定義の変数に0を入れるオプションのチェックを外さないとダメ
827 :
名前は開発中のものです。:2014/07/08(火) 12:30:11.41 ID:mQrW1/Ot
代入するときでもエラーが出るようにとか無理でしょうか?
変数名打ち間違えに気づかずそのまま代入されるのを防ぎ
たいのですが。
sample = data; こうタイピングしたつもりが
samplo = data; スペルミスでそのまま気づかず・・・
定数なら自分で定義すれば文字に色着くから合ってるってわかるが
代入するつもりが新しく宣言と代入しちゃうということだな。
GMは宣言してない変数に代入すると宣言になるからおそらく無理だと思う。
怪しい動きがあったら変数値のログとったりデバッグウィンドウを眺めたりするのが正攻法。
830 :
名前は開発中のものです。:2014/07/09(水) 00:18:38.50 ID:6O70Jmcm
なるほど、ありがとうございます。
細かく宣言しないで使えるのは
ありがたいですが、でかいプログラムになってくると
怖いですね・・。
スクリプトみたいなもんだし、そういうのはVC++でも使えってことでは
みたいなもんじゃなく
そのまんまスクリプトでしょ
まだStudioにしてから一作も作ってないんだけど
Standardがフリーになったわけだが購入者もエクスポートしたexeはロゴ表示されたりするのか?
なにせ新しくなってからプロジェクト1つ立ち上げるにしても面倒くさくて
gamemakerのゲームパッドの対応って
360かPS3のコントローラーしか対応してないの?
360パッドをつないで
gamepad_is_connected(0)したら1を返したけど
エレコム製のゲームパッドは0だったよ
たぶん、GMはXInputのみ使えるんじゃないのかな
360とPS3はXInputに対応してる
エレコムのは旧DirectInputのみしか扱えないんだろう
なるほどXInputか
たしかに試したエレコム製のゲームパッドは皆ちょっと古いのだったよ
今度はXInputに対応してる物買ってきて試してみるよ
ポケモンの能力上げ下げのエフェクトみたいに
スプライトの非透過部分のみにオーバーレイすることって出来ないかな
まとめWikiの display_reset() の英文、自分では無理〜
誰か翻訳コンニャクしてくださいませ。
display_reset() の翻訳、ありがとうございました〜!
841 :
名前は開発中のものです。:2014/07/19(土) 22:25:45.60 ID:KttWzmT7
DrawGUIでGUIレイヤー上にオブジェクトは配置できないから
draw_sprite()でスプライトを配置しようと思ったけど
それだとアニメーションスピードやループとかの制御ができなくて
room外に同じスプライトを持つオブジェクトを配置して
オブジェクトでimage_speedを設定して、
オブジェクトのimage_indexと同じスプライトをDrawGUIにdraw_sprite()させる
という力技で制御してみたんだけど
draw_spriteで配置したスプライトの現在のスプライトインデックスは取得できないんだろうか?
image_indexの計算というのは単純で
image_index = (image_index + image_speed) mod image_number;
というのを毎ステップ自動的にやっているだけ。
一応もう少し分解して説明すると
1. image_index += image_speed; // アニメーションスピード分だけ先に進める
2. image_index = image_index mod image_number; // イメージ数を超えたら先頭に戻す
だから自分でaでも何でも好きな変数を用意して
a = (a + アニメーションのスピード) mod sprite_get_number(描画するスプライト);
と計算して、その結果をdraw_spriteに放り込めばいい。
オブジェクトがDrawイベントでdraw_sprite()という関数を実行した時のみ、そのオブジェクトがスプライトを描画する。
描画はオブジェクトが行っているので、例えばHPメーターをdraw_sprite()で描画しているオブジェクトが破棄されれば画面上からHPメーターも消える。
Drawイベントは毎フレーム実行されるので、条件分岐が無いなら毎フレームdraw_sprite()が実行されて毎フレーム描画される。
sprite_indexはオブジェクトがもつ変数で、そのオブジェクトに設定されているスプライトの識別番号が入る。
例えば、新しいプロジェクトを立ち上げてから最初に作ったスプライトの名前が「spr_hajime」だとする。
作られた順に識別番号が付けられてゆくので、最初に作ったスプライト「spr_hajime」に割り振られる番号は0になる。
そして、obj_aというオブジェクトのスプライトにspr_hajimeを設定したとする。
すると、obj_aのsprite_indexは0になる。
image_indexもオブジェクトがもつ変数。そのオブジェクトが描画するサブイメージの番号が入る。
サブイメージとは、スプライトに画像が複数あるときに何枚目か識別するための番号のこと(1枚めが0)。
Drawイベントが無い時は、sprite_indexに入っている番号のスプライトのimage_index番目のサブイメージを毎フレーム描画するようになっている。
draw_spriteの引数は( 描画するスプライトの識別番号 , 描画するサブイメージの番号 , X描画位置 , Y描画位置 )となっている。
http://www.wikihouse.com/GameMaker/index.php?draw_sprite%28%29
ゼロオリジンなのか、覚えとこう
>>842>>843 詳しく説明していただきありがとうございます
参考にしてもうちょっといじってみます
modは被除数が除数より大きい場合、商の余りを返し、そうでない場合は被除数をそのまま返す。
>>842は
image_speedが1/2でサブイメージの枚数が3(0~2)の場合
(0+0.5) mod 3 = 0.5 mod 3 = 0.5 ←被除数が除数より小さいのでそのまま
(1+0.5) mod 3 = 1.5 mod 3 = 1.5
...
(2.5+0.5) mod 3 = 3 mod 3 = 0 ←被除数が除数と同じなので0(リセットしてまたループ)
となる。draw_sprite()の2つ目の引数の小数点以下切り捨てした枚目のサブイメージが描画される。
ただしサブイメージの枚数がimage_speedの倍数でないと、
被除数と除数がぴったり等しくならず3.33みたいに超過して剰余が0.33になり
描画するフレーム数が変動することがあるので注意