【Unity】Sphere Colliderを使って気体分子を作って遊ぶ実験
Sphere Colliderを使った衝突の例として、単原子の気体分子が狭い空間を飛び回る様子を表現してみます。時間経過で気体分子を生成するスクリプトなども公開しています。また、Rigidbodyの衝突検知モードについてもパフォーマンス面で発見がありました。
Sphere Colliderを使った衝突の例として、単原子の気体分子が狭い空間を飛び回る様子を表現してみます。時間経過で気体分子を生成するスクリプトなども公開しています。また、Rigidbodyの衝突検知モードについてもパフォーマンス面で発見がありました。
衝突を表現するのに必要なコンポーネントであるColliderを扱っています。ここでは球形で使い勝手の良いSphere Colliderのパラメータを紹介しています。楕円形などに変形できない制限はあるものの、複数のSphere Colliderを組み合わせることで様々な形を表現できます。
Unityで実行するスクリプトの順番を指定する方法を紹介しています。MonoBehaviourを継承したスクリプトなら、同じStart()が呼ばれるタイミングでも、スクリプト間の実行順序を変えることができちゃうんです。覚えておくと結構便利かも。
Unityで衝突を表現するためのColliderを使って、オブジェクトの爆発的なぶっ飛びを表現してみます。Colliderの重複時は、その重複を解消しようとしてオブジェクトが移動させられますが、その退避先にColliderを置くことで、さらに移動させようと大きな力が加わります。
ゲームでよく聞くFPSのFであるフレームですが、これってなんでフレームって呼ばれるようになったんですかね。ふと疑問に思ったので、辞書的な意味合いから出発して、ゲーム内で使われている意味を考察します。
ここ最近BoxColliderを使って遊んで……じゃなくて各種動作の実験を行なっているのですが、今回はColliderが重複した時、それらのオブジェクトが重ならない位置まで移動させるのにどれくらいの時間がかかるのかを検証しました。個人的に1フレームで移動完了だと思っていたので意外な結果に。
Colliderでは衝突を扱いますが、Colliderコンポーネントがアタッチされているオブジェクトの占有領域が重複している場合は、お互いのColliderが重ならない位置に移動させられます。その時の移動速度はオブジェクトの運動にも影響を与えるため、実験をしてみました。
衝突を表現するのに必要なコンポーネントであるColliderを扱っています。ここでは箱型で汎用性のあるBox Colliderについてパラメータの説明を行なっています。また、Box Colliderを使って衝突時の力が伝播する様子も紹介しています。
ライティングを変えるだけでゲームにおける見た目の印象がガラリと変わります。シーン内で動かす予定のないオブジェクトはStaticフラグを付ければ、そのオブジェクトに当たる光や反射光を事前計算していい感じに表現させることができます。
Unityで環境光の設定を行う方法を紹介。例えば、室内の光源だけで画面を表示したい場合、Skyboxなどから与えられる環境光はカットしたいところ。他にもカメラのクリアフラグを設定した場合についても実験しています。
UnityのマニュアルにWheel Colliderのチュートリアルが載っていたので、それを使って遊んでいます。マニュアルだと車だったので、ここではバイクのような二輪車を動かしています。チュートリアルのコードをそのまま使えるのが素敵。
Colliderは種類が多いので、どれを使ったらいいか迷うことも。正確さを重視するならMesh Colliderですし、軽さ重視ならプリミティブなBoxやSphereです。この記事では、3Dで使うColliderの形状と使い道を紹介しています。
UnityのRigidbodyで設定できるConstraints(制限)について、値を変えると物体の運動がどのように変化するのかを実験しています。特に位置の固定ができるFreeze Positionは使い所も多いので、イメージを掴んでおくと役立ちます。Freeze Rotationは2軸縛りで、意図しない方向への回転を防ぐのがいいかも。
UnityのRigidbodyで設定できるCollision Detection(衝突の検知)について、値を変えると物体の運動がどのように変化するのかを実験しています。衝突相手がRigidbodyを持っているかどうか、相手のCollision Detectionの設定はどうかによって衝突を検知できるかどうかが決まるので、各パターンを試しています。
UnityのRigidbodyで設定できるInterpolate(補間)について、値を変えると物体の運動がどのように変化するのかを実験しています。Interpolateの設定の意味を解説し、値を変えた時の様子を動画で紹介しています。痙攣した動きを避けるためにも、主人公オブジェクトではInterpolateを忘れずに。
Unity2018.1を使っていて最初にビビったのがこのFixed Timestepのデフォルト値の変更。FixedUpdateはデフォルトで50FPSというのが染み付いていたので、ちょっと新鮮な気持ちです。時代は60FPSですよ、60FPS! ※Unity2018.2以降では0.02に戻ってます。
UnityのRigidbodyで設定できるIsKinematic(物理演算の影響の有無)について、値を変えると物体の運動がどのように変化するのかを実験しています。初心者にとって、Rigidbodyの中でもIsKinematicは特に分かりづらい項目なので、解説も行なっています。
UnityのRigidbodyで設定できるUseGravity(重力の使用)について、値を変えると物体の運動がどのように変化するのかを実験しています。この設定は直感的に分かりやすくていいですね。useGravityをfalseにすれば、Scene内に惑星と、その周りを公転する衛星が作れます。
UnityのRigidbodyで設定できるAngularDrag(回転の抵抗)について、値を変えると物体の運動がどのように変化するのかを実験しています。最初はDrag(抵抗)との違いが分からなくて混乱した記憶があります。『Angular』と付くように、回転に関する抵抗も使えると便利。
UnityのRigidbodyで設定できるDrag(抵抗)について、値を変えると物体の運動がどのように変化するのかを実験しています。空気抵抗として使うのはもちろんのこと、水中エリアに入ったときにdragの値を大きくして水中らしさを演出するのにも便利です。