一時的なアンチエイリアシング
Boltには、Unity内のUpdate
と FixedUpdate
間の互いに素な関係を処理する組み込みサポートがあります。簡潔に言うと、ゲームのシミュレーション(FixedUpdate)とレンダリング(Update)の部分が互いに常に1:1となる必要が無いということです。
これにより'マイクロスタッター'として知られる現象が起こります。
'Trasform'のプロパティを状態上で定義するとき、ネットワーク上で同期するため、Attachedコールバック内でそれに変換を割り当てる必要があります。
通常、シンプルなプレハブは以下のようになります:
変換を接続するコードは以下のようになります:
C#
using UnityEngine;
using System.Collections;
public class Sphere : Bolt.EntityBehaviour<ISphereState> {
public override void Attached() {
state.Transform.SetTransforms(state.Transform, transform);
}
}
'Bolt 101'シリーズで以前Boltを用いたことがある場合、これは非常に似たようなものとなります。
シミュレーションはすべてFixedUpdate
内で発生するため、このセットアップは 'マイクロスタッター 'を引き起こします。
これに対処するには、一時的なアンチエイリアシング と呼ばれるものを用います。
詳細は"こちら"を参照してください。
最初に、'Sphere'クラス上で通常のクラスフィールドを設定し、それにSetTransformsに対する 2つ目 の値として渡してください。
C#
public class Sphere : Bolt.EntityBehaviour<ISphereState> {
[SerializeField]
Transform renderTransform;
public override void Attached() {
state.Transform.SetTransforms(state.Transform, transform, renderTransform);
}
}
続いて、ルートゲームオブジェクトからメッシュレンダリングパートを子オブジェクトに分割してください。
そして、'Sphere'スクリプト上に作成した'Render Transform'プロパティに対して新たな'SphereMesh'の子オブジェクトを割り当ててください。
以下のようになります:
これで、BoltはFixedUpdateまたはUpdateから発生した、完全に整列されていないアーティファクトを全て処理できるようになります。
Back to top