GP11のリサージュ図形のスクリプトと同様なコード LissajousAnimator.csをGrokで生成した。
ただし、WaveAnim.cs はGameObjectのLocalPositionを基準に移動するのでアニメーションの親子階層を構成できるが、
LissajousAnimatorではWorldPositionを基準に移動するので親子階層の影響を受けない。
InspectorのGUIにアニメーションの軌道をプレビュー表示し、シーンビューの軌道は表示をON・OFF可能。
LissajousAnimator コンポーネント 利用説明書
バージョン: 1.0 (2025年11月14日更新)
対象: Unity 2023.1 以降
作成者: Grok (xAI)
概要: このコンポーネントは、Unity EditorのInspectorにLissajous曲線(リサージュ図形)の軌道をグラフィカルにプレビュー表示し、Playモードでオブジェクトをその軌道に沿ってアニメーションさせるものです。円運動を基にした3D/2D軌道をサポートし、XYZ軸の選択、振幅、周波数、位相(度数法)、速度をリアルタイム調整可能です。SceneViewではGizmosで軌道を表示、PlayモードではLineRendererで固定ワールド軌道を表示します。
1. インストールとセットアップ
1.1 スクリプトの追加
Unityプロジェクトで新しいC#スクリプトを作成(例: LissajousAnimator.cs)。
以下のコードをコピー&ペースト(最新版は会話履歴から取得)。
コードにはLissajousAnimator (MonoBehaviour) と LissajousAnimatorEditor (CustomEditor) の2クラスが含まれます。
スクリプトを保存後、Unityを再コンパイル(エラーがないか確認)。
1.2 コンポーネントの適用
シーンに空のGameObjectを作成(例: "LissajousObject")。
InspectorでAdd Component → LissajousAnimator を検索&追加。
初期位置を設定(TransformのPosition)。これがPlayモードの軌道基準(ワールド固定)になります。
1.3 依存関係
Unity標準ライブラリのみ使用(LineRenderer, Handles, EditorGUILayout)。
カスタムマテリアルが必要な場合、AssetsにMaterialを作成(オプション)。
2. Inspectorのインターフェース
Inspectorは折りたたみ可能なセクションで構成され、状態はシーン保存時に保持されます。各セクションを展開/折りたたみして調整してください。
セクション
説明
主要パラメータ
Axis Selection
XYZ軸の使用をオン/オフ。2D(XY/XZ/YZ)または3Dを選択。
Use X/Y/Z (Toggle)
Amplitude (per axis)
各軸の振幅(軌道のサイズ)。
X/Y/Z (0.1〜10, Slider)
Frequency Ratio
周波数比(軌道の複雑さ)。Xを基準にY/Zを設定。
X/Y/Z (0.1〜5, Slider)
Speed & Phase
全体速度と位相オフセット(度数法: 0〜360)。Y/Zの位相で軌道形状を変形(例: 90°で円に近づく)。
Speed (0.1〜5)
Phase Y/Z (0〜360, Slider)
Gizmos in Scene View (Editor Only)
Editor時のSceneView軌道表示設定。
Show Trajectory (Toggle)
Resolution (50〜500)
Color (Color Field)
Runtime Trajectory (Play Mode)
Playモードの軌道表示設定。
Show Trajectory (Toggle)
Resolution (50〜500)
Color (Color Field)
Line Width (0.01〜0.5)
Material (Object Field)
2.1 折りたたみ機能
三角アイコンをクリックで展開/折りたたみ。
インデント(EditorGUI.indentLevel)で階層表示され、視認性向上。
2.2 Trajectory Preview
Inspector下部に200x200ピクセルの固定プレビュー領域。
2Dモード (Zオフ): XY平面投影(XZ/YZ対応)。
3Dモード (XYZオン): 等角投影(初期15°X/30°Y回転)。
ドラッグ回転: プレビュー領域内で左マウスドラッグ → 視点回転(水平: Y軸、垂直: X軸、X制限-90°〜90°)。
回転状態は保存され、次回起動時に復元。
グリッド/軸ラベル(赤:X, 緑:Y, 青:Z)で参考表示。
リアルタイム更新: パラメータ変更で即時再描画(色グラデーション: 青→赤)。
ヒント: HelpBoxに「Drag mouse in preview to rotate view (3D only)」と表示。3Dでドラッグ試してください。
3. Editorモードの使用
3.1 SceneViewでの軌道表示
Gizmos in Scene View を展開 → Show Trajectory をオン。
GameObjectを選択 → SceneViewに3D軌道がGizmosで表示(色グラデーション、軸レイ)。
Playモード中は非表示(Runtime設定使用)。
3.2 パラメータ調整例
円軌道: Frequency Y=1, Phase Y=90°。
複雑図形: Frequency Y=2, Z=3, Phase Z=0°。
2Dのみ: Use Z オフ → XY平面プレビュー。
4. Playモードの動作
4.1 アニメーション
Play開始 → オブジェクトがローカル位置でLissajous軌道を移動(Time.time * speed基準)。
親オブジェクトの影響を受け(localPosition使用)。
4.2 軌道表示
Runtime Trajectory を展開 → Show Trajectory をオン。
Play → SceneViewにLineRendererで軌道表示(ワールド固定: 初期位置基準)。
オブジェクトが動いても軌道は静止。
解像度/色/太さ/マテリアルでカスタム。
オフ → 非表示(enabled=false)。
注意: 高解像度時はUpdate負荷増。LineRenderer破棄はOnDisableで自動。