たくあんポリポリ

勉強したことを載せていきます。最近、技術系の記事はZennに書いています。(https://zenn.dev/chittai)

Chronosを使用して一部のエリアにだけ時間操作を導入する【AreaClockの使用方法】

Unityで購入したChronosを使用して一部のエリアにだけ時間操作ができるようにしてみました。

assetstore.unity.com

Chronosとは

Assets のリンクも貼ってありますが、Unityで時間を止めたり、巻き戻してみたり、スローにしてみたりと時間の操作ができるようになります。

何をやりたいのか

今回、このChronosを使って何がやりたかったのかというと、AreaClockという機能(今回だとCubeがSphere内部にいるときだけTimeScaleの変更によって、特定のエリアにいるときだけ時間操作を実現する)を使用して、ある一定の範囲にオブジェクトが入ってきたら動きをスローにするような処理を導入しました。下のGIFのように、球体の中心に近づけば近づくほど、Cubeの動きがゆっくりになります。

※変な黒枠ができてしまった
f:id:c_taquna:20181223214559g:plain:w300

使用したツール / 環境

  • Unity 2017.3.1f1
  • Chronos

始め方

基本的な使い方

このサイトに基本的な構成とかが書いてあるので参照してください。
www.crossroad-tech.com

Chronosをインポート

これは各自でしましょう。

オブジェクトを追加

TimeKeeperが必須なので、TimeKeeperを配置します。配置は既出のURLを参考に。今回はAreaClockを試したいので、Chronosの中にある「Additive Area Clock」を配置します。この時にポイントになるのが、下記AreaClock3DにあるInner Blendの値をAdditiveからMultiplicativeに変更してください。

f:id:c_taquna:20181223215658j:plain
そうしないと、センターに行くほどTimeScaleに値が加算されてしまいます。今回は中心に行くほどTimeScaleを小さくしたいのでMultiplicativeにしました。TimeScaleは中心に向かうほどTimeScaleで設定した値に近づいていきます。そのため、Sphereの中心に行くほどCubeの回転は遅くなります。

時間操作の対象オブジェクトを配置する

今回はCubeを配置して、回転するようにしています。そのCubeにTimelineをアタッチしてください。あと、ColliderとRigidbodyも。あたり判定がないとSphereの中に入ってもゆっくりになってくれません。

ここまでできたら、実際にプレイモードでEditorからCubeをSphreの中心に近づけましょう。ゆっくりになるはずです。

これを使ってできること

作成しているゲームに既に取り入れています。これは別の記事で書きたいと思います。