This document is about: QUANTUM 3
SWITCH TO

スタートガイド

KCCプレハブバリアントからキャラクターを作成

独自キャラクターを作成する最も簡単な方法は、デフォルトKCCプレハブからプレハブバリアントを作成することです。

  1. KCCプレハブ(Assets/Photon/QuantumAddons/KCC/AssetDB/Entities)を右クリックします。
  2. Create > Prefab Variantを選択します。
Create prefab variant
KCCプレハブバリアントの作成
  1. 自由に視覚要素や独自コンポーネントを追加します。
  2. これで使用する準備が整いました。キャラクターの移動に進んでください。

新規でキャラクターを作成

  1. 新しいプレイヤーのプレハブを作成します。
Create player prefab
プレイヤープレハブの作成
  1. Quantum Entity ViewQ Prototype KCCコンポーネントを、ルートのゲームオブジェクトに追加します。任意でCapsule Colliderも追加します。
Add components
プレイヤープレハブにコンポーネントを追加
  1. ゲームオブジェクトを調整します。
  • (任意で)ゲームオブジェクトのレイヤーを設定します。
  • Quantum Entity ViewBind BehaviourVerifiedに設定します。
  • Quantum Entity PrototypeTransform3Dに設定します。
  • PhysicsCollider3Dを有効にして、(任意で作成した)Capsule ColliderSourceColliderに設定します。
  • Q Prototype KCCKCC Settingsアセットの参照を設定します。
  1. これで使用する準備が整いました。キャラクターの移動に進んでください。

KCC挙動の調整

KCCアドオンには、調整済みアセットがいくつか含まれています。

  1. Assets/Photon/QuantumAddons/KCC/AssetDB/KCCSettings.assetを選択して、デフォルト値(RadiusHeightCollision Layer Maskなど)を調整します。これらは、上記で作成したCapsule Colliderの値と一致させる必要があります。
Configure KCC settings
KCC設定の調整
  1. 新しいKCC Settingsアセットを作成する場合は、KCC Processorをリンクしてください。これが実際の移動ロジックを担当します。詳細はProcessorセクションをご覧ください。デフォルトのProcessorは Assets/Photon/QuantumAddons/KCC/AssetDB/Processorsにあります。

キャラクターの移動

移動はKCCコンポーネント更新時に処理されます。これはKCC Systemによって管理されるため、システムをSystems Configに追加する必要があります。

Add KCC System
KCC Systemの追加

以下のコード例は、KCCキャラクターの回転方向と入力方向を設定して、その後にEnvironmentProcessor(または独自Processor)で処理しています。

C#

public unsafe class PlayerSystem : SystemMainThreadFilter<PlayerSystem.Filter>
{
    public struct Filter
    {
        public EntityRef Entity;
        public Player*   Player;
        public KCC*      KCC;
    }

    public override void Update(Frame frame, ref Filter filter)
    {
        Player* player = filter.Player;
        if (player->PlayerRef.IsValid == false)
            return;

        KCC*   kcc   = filter.KCC;
        Input* input = frame.GetPlayerInput(player->PlayerRef);

        kcc->AddLookRotation(input->LookRotationDelta.X, input->LookRotationDelta.Y);
        kcc->SetInputDirection(kcc->Data.TransformRotation * input->MoveDirection.XOY);

        if (input->Jump.WasPressed == true && kcc->IsGrounded == true)
        {
            kcc->Jump(FPVector3.Up * player->JumpForce);
        }
    }
}

Processor機能を完全にスキップし、単純にkcc->SetKinematicVelocity();を使用して速度を設定することもできます。

その他の移動コード例は、サンプルプロジェクトをご覧ください。

Back to top