← 一覧に戻る
議論 Reddit

GDevelopで戦車のような乗り物の移動と回転を実装する方法

GDevelopを使い始めたばかりのプレイヤーが、戦車のような乗り物の移動と回転に関する課題に直面しています。この投稿では、その解決策となるイベント設定のヒントを紹介します。

"その場"での回転方法

乗り物が左右に回転する際、単に画面上を滑るように移動するのではなく、その場で向きを変えるようにしたい場合があります。これは、キー入力(例: "d"キーで右回転、"a"キーで左回転)と、回転速度を設定することで実現できます。

問題点と解決策

単純にキー入力で移動方向をマッピングすると、横滑りしてしまいます。そこで、キー入力に応じて特定の速度で時計回りまたは反時計回りに回転させるイベントを設定します。

例えば、「dキーが押されたら、50px/秒で時計回りに回転させる」「aキーが押されたら、50px/秒で反時計回りに回転させる」といったイベントが考えられます。

ここで注意が必要なのは、固定角度への回転ではなく、継続的な回転を意図している点です。キーを押し続けている間、指定した速度で回転し続けるようにイベントを設定することで、意図した動作に近づけることができます。

機体方向への移動実装

次に、乗り物が回転した際、その向いている方向に前進・後退できるようにする方法です。画面の上下左右ではなく、機体の向きに合わせた移動を実現することが目標です。

イベント設定のポイント

通常、前後移動は"w"キー(前進)と"s"キー(後退)に割り当てられます。しかし、乗り物が回転している場合、これらのキー操作が画面上の絶対的な方向(上や下)に影響してしまうことがあります。これを解決するには、以下の設定が有効です。

  • 移動方向の計算: 前進・後退のイベントにおいて、移動方向を画面上の方向ではなく、機体の現在の角度に基づいて計算するようにします。GDevelopの「角度」や「sin/cos」関数を活用することで、機体の向きに合わせたX座標とY座標の移動量を算出できます。
  • イベントの連動: 回転イベントと移動イベントを適切に連動させることが重要です。機体が回転している間は、移動イベントもそれに追従するように設定します。

これらの設定を行うことで、GDevelopでよりリアルな乗り物操作を実装することが可能になります。

元の情報源を見る →