2020-07-21に投稿

GodotでオブジェクトをPathに沿って動かす

GodotにはPathというノードがあります。これはCurveというものを持ちます。Curveとは、線でできた道筋です。Pathの子にPathFollowというノードを追加することで、そのPathFollowをPath上で走らせることが出来ます。実際にエディタ上にパスを表示したところです。

実際に動かしてみるとこんな感じです。

2D、3Dともにあると思います。実際のやり方を説明します。

必要なノードの配置

必要になるのは下記です。

  • Path
  • PathFollow
  • 表示するオブジェクト

それぞれ子になるように配置します。

この時点ではオブジェクトはパス上にありませんが、実行すると追従するため大丈夫です。

Curveを作る

次に、実際に走らせる道順であるカーブを作成します。Pathを選択した状態にすると、エディタに下記のような4つのボタンが追加されます。

左から2番めの緑のプラスボタンを使うことで点を配置できます。あとは左から順に点の選択、点の追加、点の削除、曲線を閉じるボタンです。

このように適当に画面上をクリックしていくと配置できます。最後に曲線を閉じるボタンをクリックすると最初と最後がつながってループになります。

曲線を作る

ベジェ曲線にも対応しています。

image.png

Shiftを押しながら点を動かすと、曲線用のつまみが現れて曲線にすることが出来ます。

パス上を移動させてみる

実際にパス上を動く様子を見てみましょう。PathFollowノードを選択すると、Offset、Unit Offset というプロパティが存在します。これを変動させてみると実際にエディタ上でパスが動いている様子をプレビューすることが出来ます。

Offsetは実際の長さでの指定、Unit Offsetは0.0~1.0での割合での指定だと思われます。

プログラムで移動させる

それぞれそのままのプロパティを使うことでプログラムでも移動させることが出来ます。例えばこんな感じのプログラムをPathFollowノードに追加します。

func _process(delta):
    var new_unit_offset := unit_offset + 0.01
    if new_unit_offset >= 1.0:
        new_unit_offset -= 1.0
    unit_offset = new_unit_offset

これで最初のツイートのような動きを作ることが出来ます。

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, React, Flutter, Vue.js, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント