投稿

2024の投稿を表示しています

実は奥(闇)が深い「真のあいだ一度だけ実行(一度だけ実行する)」条件を使いこなそう【GDevelop】

イメージ
便利すぎてついついお世話になってしまう「真のあいだ一度だけ実行」条件ですが、使い込んでいくと「あれ?この場合どうなるの?」という状態におちいりやすい条件でもあります。 そこで、このページでは「真のあいだ一度だけ実行」条件が、実際にはどのように機能しているのか、例をまじえて解説します。 ※ 執筆時点の GDevelop バージョンは 5.4.213 です。 ※ 以降「真のあいだ一度だけ実行」だと長いので「一度だけ実行する」と表記します。 よくある勘違い「インスタンスごとにチェックしてる」 例えばこのようなイベントを組んだとき↓ 各戦車が一度だけX方向に100px動く X座標は0で配置されている戦車はプレビューすると…… 3両全て一度だけ100px移動します。 このことから「一度だけ実行する」条件はインスタンスごとにチェックしてる、 と思ってはいけません! 偶然それっぽく機能しているだけです。 では、今度はこのようなイベントを試してみます↓ 3回、Y座標が100の戦車を一度だけX方向に100px動かす 3回&一度だけ、というちょっと意味不明なイベントですが、プレビューした結果はこのようになります↓ 「一度だけ実行する」条件が設定されているにも関わらず、Y座標が100の戦車(つまり一番上のみ)が、3回100px移動しています。 もしインスタンスごとにチェックしているのであれば、一度しか移動しないはずですが、そうはなりませんでした。 ちょっと何が言いたいのか分からないから早く結論(仕組み)を言え! はいごめんなさいw😅 「一度だけ実行する」条件は、インスタンス単位ではなくイベント単位でチェックされています。 このことは 公式ドキュメント(英語) にも記載されています。 いやいやちょっと待て!イベント単位ならさっきの例の結果はおかしいだろ! 確かに上記の例は、どちらもイベント単位でチェックしているとは思えない結果になっていますが、これは繰り返しを利用しているからそのような印象になるだけです。 繰り返しを個々のイベントに分解してみると分かりやすくなります。 まず最初の例は、以下のように分解することができます↓ 各インスタンスの判別にはY座標を利用 これなら3両全てが一度だけ移動したことにも、納得がいくかと思います。 続いて2つ目の例も分解してみましょう↓ まったく

GDevelopを「いいね!」して100クレジット獲得のチャンス!と、現状でのクレジット使い道。

イメージ
なんと、GitHub の GDevelop リポジトリにスターを付けると、100クレジットがもらえるようになりました! 以下、4ian 氏からのメッセージです。(これは私の意訳であり原文は Discord のメッセージ を確認してください) みなさん、GitHub リポジトリに「スター」を付けましたか? そうでない場合は、今すぐ実行して、お礼の 100 GD クレジットを獲得してください。 ほとんどの人は GitHub について知らないかもしれません。GitHub は、GDevelop を含む世界最大のオープンソースプロジェクトがホストされている場所です。 ある意味、GitHub は開発者のためのソーシャルネットワークおよびホスティングプラットフォームです! GitHub の GDevelop ページ(リポジトリ)に「スター」を付けることで、オープンソースやゲームエンジンの世界で GDevelop の存在をアピールすることができます。 そうするための手順: まだ GitHub アカウントをお持ちでない場合は、作成してください(無料です)。そして作成したユーザー名を覚えておいてください。 GDevelop ページ(リポジトリ)の「☆ Star」をクリックします。 GDevelop Webアプリ(デスクトップ/モバイル版ではまだ利用できません): https://editor.gdevelop.io/ へアクセスし、プロフィールを開いて編集し、Github ユーザー名を追加します。 「請求」をクリックすると、即時認証が行われた後、サポートへの感謝の気持ちを込めて、アカウントにクレジットが追加されます。 GDevelop がゲームエンジンの世界でさらに有名になるよう、ぜひご協力ください🙂 ありがとう🙌 とのことです。 なお、メッセージで伝えられているように、現状(2024年4月時点)では、 これをおこなえるのは GDevelop Webアプリ(ブラウザ版)のみ なのでご注意ください。(もちろん獲得したクレジットはインストール版/モバイル版で利用できます) ※ タイミングによっては「請求」ではなく「要求」ボタンになっているかもしれません。 GDevelo

【GDevelop】「現在選択されているオブジェクトの数」について

イメージ
例えば、以下のようなイベントを 1 つだけ作成すると…… 戦車が何両あっても、すべてが移動します。 そのため「イベントはオブジェクトをすべて選択した状態で開始される」と考えられます。 しかし「現在選択されているオブジェクトの数」条件は、それより以前の条件や親イベント(直系尊属)で登場していないオブジェクトは何も選択していない、つまり 0 と評価します。 なので、↓このようなイベントの条件は偽を返し、アクションは実行されません😅 まぁ、これは「現在選択されているオブジェクトの数」条件を選択すると表示される案内にも書かれていることなので、わざわざ記事にして注意喚起するほどのことではないのですが…… 日々、勘で GDevelop を使っていてろくに案内も読まない私は見事に蹴躓いたので、この記事を書きました🤤(そもそも「シーン上のオブジェクトインスタンスの数」を使えよ、という話ですが) いやしかし、案内を書いておいてくれるなんて最近の GDevelop は親切になりましたね👍 でも、相変わらずオブジェクトとインスタンスの区別をハッキリしてほしいものです。

【GDevelop】条件の並び順による落とし穴

イメージ
イベントやアクションと同じように、 条件 も上から順に評価されるので、並び順はとても重要です。 特に、 評価された条件の絞り込みはすぐに効果を発揮する 、という点に注意する必要があります。 例えば、次の画像の条件 A と B は順番が逆なだけですが、異なる評価をします。 A の方は、衝突している戦車とミサイルに絞り込んでから、戦車の数をチェックしているのに対し、B の方は、まず戦車の数をチェックしてから、衝突している戦車とミサイルに絞り込んでいます。 つまり…… A は「ミサイルと衝突している戦車が 1 つの時」 B は「(絞り込まれた)戦車が 1 つだけの時、衝突している戦車とミサイルに絞り込む」 という全く異なる意味を持つ条件になります。 複数の条件を組み合わせた場合は AND で評価されますが、上記の通り 条件の絞り込みはすぐに効果を発揮する ので、並び順には注意しましょう。 (AND または AND 演算子とは、どちらも真の場合のみ真を返す演算子です) それと余談ですが、実は B の条件が真と評価されることはありません。 それについては 【GDevelop】「現在選択されているオブジェクトの数」について のページをご覧ください。

このブログの人気の投稿

【GDevelop】セーブデータは暗号化しよう!

GDevelop の「イベント」を正しく理解しよう

GDevelop 5.3 がリリース!なので、ここ最近(2023年1月~2023年11月)の GDevelop バージョンアップまとめ