【PlayCanvas】オブジェクトを移動させよう!【RigidBody】

【PlayCanvas】オブジェクトを移動させよう!【RigidBody】

福田です!今回はRigidBodyを使ったオブジェクト移動について書いていきます!

1.RigidBodyコンポーネントの概要

RigidBodyは、物理シミュレーションにおいてオブジェクトの動きを制御するためのコンポーネントです。これにより、重力や衝突などの物理現象をシミュレートすることができます!
今回はプロジェクトの作成からやっていきましょう!

2.プロジェクトのセットアップ

まず、PlayCanvasのプロジェクトを作成し、必要なアセットをインポートします。次に、シーンにオブジェクトを追加し、RigidBodyコンポーネントを設定します。

2.1 オブジェクトの追加

  1. PlayCanvasエディタを開き、新しいプロジェクトを作成します。
  2. シーンに新しいエンティティを追加し、名前を「MovingObject」に変更します。
  3. 「MovingObject」にモデルコンポーネントを追加し、適当な3Dモデルを設定します。

2.2 RigidBodyコンポーネントの追加

  1. 「MovingObject」を選択し、右側のプロパティパネルで「Add Component」ボタンをクリックします。
  2. 「RigidBody」を選択し、タイプを「Dynamic」に設定します。
  3. 同様に、「Collision」コンポーネントを追加し、形状を「Box」などに設定します。

3. スクリプトの作成

次に、オブジェクトを移動させるためのスクリプトを作成します。以下のコードは、キーボード入力に応じてオブジェクトを移動させる例です。

3.1 スクリプトの追加

  1. 「Scripts」フォルダを作成し、新しいスクリプトファイルを追加します。名前を「moveObject.js」にします。
  2. 以下のコードを「moveObject.js」に追加します。
var MoveObject = pc.createScript('moveObject');

// 初期化
MoveObject.prototype.initialize = function() {
    this.force = new pc.Vec3();
};

// 更新
MoveObject.prototype.update = function(dt) {
    var app = this.app;
    var force = this.force;
    
    // キーボード入力のチェック
    force.set(0, 0, 0);
    if (app.keyboard.isPressed(pc.KEY_LEFT)) {
        force.x = -10;
    }
    if (app.keyboard.isPressed(pc.KEY_RIGHT)) {
        force.x = 10;
    }
    if (app.keyboard.isPressed(pc.KEY_UP)) {
        force.z = -10;
    }
    if (app.keyboard.isPressed(pc.KEY_DOWN)) {
        force.z = 10;
    }
    
    // 力を加える
    this.entity.rigidbody.applyForce(force);
};

3.2 スクリプトの適用

  1. 「MovingObject」を選択し、右側のプロパティパネルで「Add Component」ボタンをクリックします。
  2. 「Script」を選択し、「moveObject」スクリプトを追加します。

4. 実行と確認

すべての設定が完了したら、シーンを実行してオブジェクトがキーボード入力に応じて移動することを確認します。矢印キーを使用して「MovingObject」を移動させることができます。

まとめ

この記事では、PlayCanvasを使用してRigidBodyコンポーネントを利用したオブジェクトの移動方法について説明しました。RigidBodyを使用することで、物理シミュレーションを簡単に実装でき、よりリアルな動きを表現することができます。ぜひ、さまざまなシーンで試してみてください。
福田でした!


現在シェルパグループでは、一緒に働く仲間を募集中!
建築パース、3DCG、UnrealEngine、Unity、プログラミングに興味のある方は
是非リクルートサイトをご覧ください!

■リアルな3DCG制作の仕事をしたい方必見!
https://sherpa-recruit.jp/