3D オブジェクト操作 - シーンの準備

このチュートリアルは、 3D オブジェクト操作 チュートリアルの準備として機能します。 このチュートリアルでは、既存の Unity 機能を使用して、3D シーン内のオブジェクトを移動できるマウス制御カーソルを作成します。 3D オブジェクト操作のチュートリアルでは、マウス入力デバイスを手のジェスチャとモーションに置き換えます。

Unity でジェスチャを使用する方法のみを学習する場合は、 3D オブジェクト操作 のチュートリアルに進んでください。

このチュートリアルの完了には約 30 分かかります。

最終結果をダウンロードする

このチュートリアルで取得した最終的な Unity プロジェクトは、 GitHub のオープンソース サンプル リポジトリにあります。 リポジトリを複製した後、次の手順に従ってアプリケーションを実行します。

  1. Unity を起動し、[ プロジェクト ] タブで [ 開く] を選択します。
  2. 複製されたリポジトリ内の Unity\Tutorials\3D Object Manipulation - Scene Preparation ディレクトリを参照します。
  3. 再生ボタン (または Ctrl + P) を押してシーンを実行します。

[前提条件]

このチュートリアルでは、C# プログラミング言語に関する基本的な知識と、Unity 環境に関する経験があることを前提としています。 Unity プロジェクト、シーン、ゲーム オブジェクト、スクリプトを作成する方法を理解していることを前提としています。

このチュートリアルを開始する前に 、概要 チュートリアルを完了することをお勧めします。

手順 1 - カーソル ゲーム オブジェクトを作成する

  1. 概要チュートリアルを完了した場合は、そのチュートリアルで作成したプロジェクトを開き、Ctrl キーを押しながら N キーを押して新しいシーンを作成します。 それ以外の場合は、新しい Unity プロジェクトを作成し、 Project Prague Toolkit for Unity をインポートします (手順については 、概要チュートリアルの手順 1 を参照してください)。

  2. Ctrl キーを押しながら S キーを押してシーンを保存し、3D オブジェクト操作という名前を付けます

  3. 空のゲーム オブジェクトを作成し、Cursor という名前 を付けます。 同じ名前の対応する C# スクリプトを作成します。 ゲーム オブジェクトをスクリプトに関連付けるには、ゲーム オブジェクトの インスペクター ビューに移動し、スクリプトを [ コンポーネントの追加] ボタンの下の空白領域にドラッグします (スクリプトとゲーム オブジェクトの関連付けについては、 概要チュートリアルの手順 3 を参照してください)。

  4. Visual Studio で カーソル スクリプトを開き ( [プロジェクト ] ウィンドウでスクリプト アイコンをダブルクリック)、その内容を次のコードに置き換えます。

    警告

    ご覧になっていたサンプルが移動されたようです。 この問題の修正に取り組んでおりますので、ご安心ください。

    ご覧のように、 Cursor メソッドは実装されていません。 ここでは、場所所有者とコメントが含まれています。

  5. カーソルをマウス ポインターの後に置き換えるには、Cursor.csGetCursorScreenPosition() メソッドを次の内容に置き換えます。

    警告

    ご覧になっていたサンプルが移動されたようです。 この問題の修正に取り組んでおりますので、ご安心ください。

    画面が更新されるたびにカーソルを正しい位置に描画するには、Cursor.csOnGUI() メソッドの内容を次のように置き換えます。

    警告

    ご覧になっていたサンプルが移動されたようです。 この問題の修正に取り組んでおりますので、ご安心ください。

  6. Project Prague toolkit for Unity に付属の PragueCursor.png テクスチャをカーソルイメージとして使用します。 [階層] ウィンドウでカーソル ゲーム オブジェクトを選択し、[プロジェクト] ウィンドウの [MicrosoftGesturesToolkit/Textures] でPragueCursor.pngを見つけて、[インスペクター] ウィンドウの [カーソル イメージ] ボックスにドラッグ アンド ドロップします。

    カーソルイメージの設定

  7. 今すぐシーンを再生します。 マウス ポインターがシーン境界内にあるときは常に、その後に赤いカーソルが表示されます。

    マウスの後のカーソル

手順 2 - カーソルの下のオブジェクトを強調表示する

カーソルを使用してシーン内のオブジェクトを移動します。 現在カーソルの下にあるオブジェクトを認識するために、そのオブジェクトのアウトラインを強調表示します。

  1. まず、シーンに複数のプリミティブ オブジェクトを入力します。 便宜上、シーンに新しいプリミティブを追加する前にメイン カメラの視点を取得することをお勧めします。[階層] ウィンドウでメイン カメラを選択し、[GameObject] メニューに移動し、[ビューを選択済みに配置] を選択します。

    新しいプリミティブをインスタンス化するには、もう一度 [GameObject] メニューに移動し、[ 3D オブジェクト] を選択し、サブメニュー (キューブSphere など) でいずれかのプリミティブを選択します。 このプロセスを数回繰り返し、新しい各プリミティブをシーン内の別の場所に移動します。

    シーンをプリミティブで塗りつぶす

    ヒント

    オブジェクトを移動するには、オブジェクトをクリックして w キーを押し、[ 移動 ] ギズモを使用してドラッグします。

  2. Cursor クラスにプライベート メンバーを追加します。 このメンバーを使用して、現在カーソルの下にあるゲーム オブジェクトを格納します。 このオブジェクトを "ホバーしたオブジェクト" と見なします。

    警告

    ご覧になっていたサンプルが移動されたようです。 この問題の修正に取り組んでおりますので、ご安心ください。

    また、次のパブリック メンバーも追加します。 これらの機能を使用して強調表示機能を実装する予定です。

    警告

    ご覧になっていたサンプルが移動されたようです。 この問題の修正に取り組んでおりますので、ご安心ください。

    カーソルの下にあるオブジェクトを特定するには、 GetHoveredObject() メソッドの内容を次の実装に置き換えます。

    警告

    ご覧になっていたサンプルが移動されたようです。 この問題の修正に取り組んでおりますので、ご安心ください。

    ホバーしたオブジェクトを強調表示するには、 Update() の内容を次のように置き換えます。

    警告

    ご覧になっていたサンプルが移動されたようです。 この問題の修正に取り組んでおりますので、ご安心ください。

    Cursor.cs スクリプトに対するすべての変更を保存します。

  3. [階層] ウィンドウでカーソル ゲーム オブジェクトを選択します。 プロジェクト ウィンドウの MicrosoftGesturesToolkit/Materials の下で OuterGlow.mat マテリアルを見つけます。 [インスペクター] ウィンドウの [素材を強調表示] ボックスに OuterGlow.mat をドラッグ アンド ドロップします。

    ハイライト素材を追加する

  4. シーンを再生し、画面全体にカーソルを移動します。 オブジェクトがカーソルの下にあるたびに、その輪郭は青みがかった Aura で光ります。

    光彩効果でシーンを再生する

手順 3 - 強調表示されたオブジェクトを移動する

この手順では、カーソルでオブジェクトを "グラブ" し、空間内に移動できるようにします。

  1. Cursor.cs スクリプトで、次のプライベート メンバーを準備します。

    警告

    ご覧になっていたサンプルが移動されたようです。 この問題の修正に取り組んでおりますので、ご安心ください。

    そして、次のパブリックメンバー:

    警告

    ご覧になっていたサンプルが移動されたようです。 この問題の修正に取り組んでおりますので、ご安心ください。

  2. OnGUI() メソッドの内容を次のように置き換えます。

    警告

    ご覧になっていたサンプルが移動されたようです。 この問題の修正に取り組んでおりますので、ご安心ください。

    これにより、カーソルが "グラブ モード" に入ると、カーソルの色が GrabCursorTint に変わります。

  3. これで、StartGrab() メソッドと StopGrab() メソッドを実装する準備ができました。

    警告

    ご覧になっていたサンプルが移動されたようです。 この問題の修正に取り組んでおりますので、ご安心ください。

  4. Update() メソッドでは、次の機能を追加します。

    • オブジェクトがホバーされている間にマウスの左ボタンを押して離すたびに、グラブ モードを開始 (終了) します。
    • グラブ モードの場合は、ホバーされたオブジェクトがカーソルに従う必要があります。

    これを実現するには、 Update() メソッドを次のように変更します。

    警告

    ご覧になっていたサンプルが移動されたようです。 この問題の修正に取り組んでおりますので、ご安心ください。

  5. シーンを今すぐ実行し、オブジェクトの上にマウスポインターを置き、左マウス ボタンを押してドラッグして移動します。 グラブ モードに入ると、カーソルの色が変わります。

    グラブ モードでシーンを再生する

  6. スクロール ホイールを使用して、深さ寸法でグラブされたオブジェクトの動きを制御します。

    GetCursorDistanceScalingFactor() の内容を次のように置き換えます。

    警告

    ご覧になっていたサンプルが移動されたようです。 この問題の修正に取り組んでおりますので、ご安心ください。

  7. 今すぐシーンを実行してみてください。 スクロール ホイールを使用して、3 つの次元すべてでグラブされたオブジェクトを移動し、カメラの半径方向または離方向に移動できる必要があります。