Heptoにおいて個々のパズルは展示物となっているので、それぞれに解説パネルを模したオブジェクトが配置されており、このオブジェクトをタッチ(クリック)するとパズル開始となる。
将来的にはゲームコントローラにも対応したいが、その場合、タッチではなくオブジェクトをフォーカス(対象物が縁取りされるとか、オブジェクトが光るなど)してコントローラのボタンを押して開始するような操作となる。
オブジェクトをフォーカスする方法として、画面中央付近にに対象オブジェクトが入ってくれば自動的にフォーカスされる手法がある。これを簡単に実装する方法として、カメラの前方にコライダーを配置して、これをトリガーとしてみた。
残念ながら、これはうまく動作しなかった。コライダーをトリガーとするには物理コンポーネントが必要だが、これを付加すると Cinemachineカメラの挙動がおかしくなった。これは Virtualカメラにつけても同じ。
次に検討したのは、視線方向(カメラの正面方向のベクトル)と、カメラから対象オブジェクトへのベクトルが一定角度内であればフォーカスされる、というロジックを検討した。
ただし、パズル開始用オブジェクトは複数あるため、全てを常時計算する訳にはいかないので、以下の条件で刈り取っていった。
これにより大きな処理負荷をかけずに視線を向けた先のオブジェクトを自然にフォーカスさせることができた。