for(i=0;i<5;i++){
var inst = instance_create_layer(x, y, "instance_layer", obj_Bullet);
with (inst){
speed = other.shoot_speed;
direction = other.i*10;
}
}
for(i=0;i<5;i++){
var inst = instance_create_layer(x, y, "instance_layer", obj_Bullet);
with (inst){
speed = other.shoot_speed;
direction = other.dir;
}
dir += 10;
}
Q:GMLでクラスを使えるようにする?
A:オブジェクトは親を持ち、それらから機能を継承できるため、すでに行っています。現在、GMLをさらに拡張することについては何も発表する予定はありません。
アイソメトリックのタイルレイヤーについては、社内で議論はあったが予定はまだないと。
チュートリアル関連でもいろいろ計画があり、いろんな種類のプロジェクトテンプレートをリリースすることを計画していると。
言語にC++を選択できないか?という質問に、
お待ち下さい、でもGMS2では無い だそうです。
新しい「トリガー」、エリアや線に触れる、出る、入るなどでイベントをトリガーする機能が来るそうです。
ライブコーディング機能が実装される予定があるそうです
3Dの機能を求める声はあるようですが、YoYoGamesはあくまでGameMakerを2Dゲームエンジンとして位置づけ、2Dゲームに注力していきたいようです。
Intellisenseの改良についても、来年はじめに情報が出るかもしれません。
roomエディタ内でインスタンスのspriteを変えられるようにする議論があるそうです。
これができたら個人的にうれしい
オーディオ周りを全面的に改善する計画があり、オーディオ専門のプログラマを募集しているとも。
個人的には、リバーブとかのエフェクト機能が実装されたらいいなあ・・・
ビデオの再生機能が来年の前半にリリースされる計画があるそうです
永久ライセンスの人にも機能開放したみたいですね
CTRL+TAB も知りませんでした…
たしかに便利ですね!
そういえば作成するオブジェクト用に空のレイヤーを作っておくという発想はありませんでした・・・
こちらの方が使い勝手が良さそうなので、yOichiさんと同様にbulletレイヤーを作っておいて、instance_create_layer()を使っていくことにします。
ありがとうございました!
depthについて、詳しい解説ありがとうございます!勉強になります。
マクロについてもありがとうございます、scriptに記載していくことにしました。
ルームのフィルターとエフェクト機能なんて追加されてたんですね。
使用頻度は人によりそうだから、ちょっと怒るのはわかるかな…。
9sliceはすごい活用してるので、これがサブスク限定だとかなり怒ってたかもw
自分の場合ですと、roomエディターで自機のインスタンスレイヤーの上に弾のインスタンスレイヤーを作って、 instance_create_layer() で表示させていますね。
自分は色々とキャラクターの表示順を試しながら作っているのですが、故事的に、depthよりはroomのレイヤーで管理したほうが楽そうだな、という印象だったのが理由ですね。
質問1
instance_create_depthでもいいと思います。
この関数を使うデメリットというのは特にありません。
どちらを使うのが自分に都合がいいのかで選ぶといいと思います。
instance_create_layerで作るとレイヤーのdepthになります。
instance_create_depthで作ると引数で指定したdepthになります。
どっちで作っても後でdepthを変更できます。
GMS2はdepth毎にレイヤーを作成します。
質問2
コード、scriptのどこでもいいので、
というように記述してください
参考
https://manual.yoyogames.com/GameMaker_Language/GML_Overview/Variables/Constants.htm
ご回答ありがとうございます!
このためにPaypalアカウントを作っていたので、とりあえず無駄にならずに済んで良かったです。
どうやら、現在一時的にPaypal支払いができないようです。
解決時間は未定のようです。
https://forum.yoyogames.com/index.php?threads/gamemaker-studio-2-version-2-3-6-release-more.90551/#post-542644
CTRL+TAB
CTRL+T
CTRL+SHIFT+F
この3つは万人におすすめする機能で、私は常に使いマクリマクリスティーです。
ルームのフィルターとエフェクト機能がサブスク限定で古参開発者がじゃっかん怒ってましたね
Goto window の存在を初めて知りました(汗)。
トップページからブログに飛べるのは地味に嬉しかったり。
テクスチャグループのリネームができないようです。
CTRL+Tはコンテキストによって動作が変わる仕様になったようです。
私個人としては、Workspace Navigationウィンドウと、Gotoウィンドウと、Search & Replaceウィンドウはどこからでも使いたいです。
そこでRoom EditorのショートカットをCTRL+T以外に変更しました。これでRoom EditorからもCTRL+TでGotoウィンドウを開けるようになりました。
インストールしてざっとショートカット動作を確認。
修正された点
CTRL+TABで常にWorkspaces navigation windowが開くようになった(はず)。
タイルマップレイヤーでCTRL+C/Vができるようになった。
直ってない点
room editor上ではCTRL+Tを押してもGoto windowが開かない。代わりに新しいタイルマップレイヤーが作成される。
ありがとうございます。
regionかuser eventで悩んだ結果、今はuser eventでやらせてもらってます。
regionも便利なので使っていきたいですね。
よく思い出せないので申し訳ないです。
同じことはGMS2ではできないのでそれをやるには関数にすることになると思います。ですがもし、扱いやすさや慣れ以外の理由で関数にする必要がないものをあえて関数にするのも変かなと思う場合は、regionをお試しください。コードのブロックを開閉できるようになります。
イベント内のコードが長くなる点については、数百行でしたら私は気にせず書いています(関数も使っているのでそこまで長くなることはめったにありません)。
ご回答ありがとうございます。
説明が分かりづらく申し訳ありません。
1.4の頃ってCodeで書くにしても添付画像の赤丸のようにアクションとして並べるしかなかったと思っていて・・・(他に方法があった?)
その方法に慣れていたので、Step内でCodeが分割できないことに驚いて質問させていただきました。
色々な方法を提示いただき助かります。
objectにも関数定義できるのは知りませんでした。regionも便利ですね・・・
いずれも試してみます。ありがとうございました。
私は1.4の時からアクションは使わずCodeに書いてきたのでActionについて詳しく分からないのですが、1.4のActionsをドラッグして置いていくやり方に該当するのがGMS2のDnDではないでしょうか。これはコードを直接記述せずにアイコンを並べたりしてプログラミングしていく方法です。
コードを書いていくやり方で、コードを整理するには以下の方法があると思います。
出来ました!ありがとうございます。
しかし仰る通り、ショートカットキーが効きませんね、これは早く直してほしい・・・
実装できました!
詳しい解説までありがとうございます。勉強になりました!
また機会があればよろしくお願いします!
バージョンいくつからか不明ですが、少なくとも最新版ではショートカットキーのバグがあり
Ctrl+C/Vができなかったりします。その場合はRoomメニュー>Tile editingで同様の操作をしてみてください。
今は範囲選択して切り取り、貼り付けによって移動させる方法になってると思います。
連投になりますが、ループ用の変数iを角度にも使えば以下のように省略できます。(さっきの書いてから気づいた)
shoot_speed = 3;
for(i=0;i<5;i++){
var inst = instance_create_layer(x, y, "instance_layer", obj_Bullet);
with (inst){
speed = other.shoot_speed;
direction = other.i*10;
}
}
横から失礼します。
gamemakerのwikiでの解説です。このwikiは何かと参考になるかと・・・
https://www.wikihouse.com/GameMaker/index.php?cmd=read&page=instance_create_layer()&word=instance creat
wikiのプログラムを書きかえました。即興なので変な所あったらすみません。
弾を撃つのをfor文で5回繰り返して(repeatと同じようなもん)、一番下で1回ごとに角度用の変数dirを10ずつ増やしてます。
withの中身が発射した弾が出現した瞬間の処理(弾objectのcreateイベントを持って来てる感じ)なので、そこでローカル変数のdirection(向き)に変数dirを代入してます。(otherはwithの外の変数を持ってくるみたいな意味です)
shoot_speed = 3;
dir = 0;
for(i=0;i<5;i++){
var inst = instance_create_layer(x, y, "instance_layer", obj_Bullet);
with (inst){
speed = other.shoot_speed;
direction = other.dir;
}
dir += 10;
}
ありがとうございます!数が増えました!
これらに一定の角度つけて扇状にしたい場合はどうすれば良いのでしょうか?
こういうやり方はどうでしょうか?
理解が深まりました。感謝します。
はい、そういうことです!
「グローバルスコープ」とは特定のオブジェクトではなく、ゲーム自身を参照するということです。ゲーム自身にはdirectionは無いのでエラーになるというわけです。