2ヶ月くらい前のゲームジャムで嵌っていた問題のメモ書きです。 玉転がしゲームで以下のように水平面に球体を落として平面を回転させたとき、ボールがその場で止まってしまいます。 分かり易くするため、ボールがスリープ状態のときは赤色に、そうでないときは緑色に表示しています。 ボールが平面に完全に静止したあとにスリープし、その後...
Unity( 6 )
Category
Unityを扱っているときに嵌ったことのメモです。 Rigidbodyを使ったGameObjectに対してRigidbody.AddForce()メソッドで力や加速度を加えたい場合、以下のようにして毎フレーム呼び出されるコールバックの中で処理を行うとします。 void Update() { var body = Get...
描画するメッシュをスクリプトから動的に生成する方法のメモ書きです。 これを行うことで、スクリプトから好きな図形のメッシュを作成できるようになります。 まず、以下の手順を踏んでメッシュを描画するための準備を行います。 1.ゲームオブジェクトを生成する 2.Mesh Filterを1.で作成したゲームオブジェクトにアタッチ...
UnityでAudioSourceを使って効果音を鳴らすとき、AudioSource自体が破棄されてしまうとこのAudioSourceから鳴っている効果音も同時に止まります。 たとえばオブジェクトが破棄されるときに爆発音を鳴らそうとすると、鳴った瞬間に音が止まってしまうためまったく音が聞こえなくなってしまいます。 また...
UnityのスクリプトをGameObjectに追加すると、publicなフィールドをインスペクタから編集することができます。 以下のような設定項目は基本的にpublicなフィールドに指定する初期値を入力する画面です。 一方、protectedやprivateなメンバはインスペクタから参照することができません。 しかし、...
NGUIでスプライトをスクリプトから動的に変更するときに嵌ったメモです。 NGUIでは、スプライトはUISpriteコンポーネントで管理します。 あらかじめAtlasで作成したスプライトは、UISprite.spriteNameで設定できます。 // スプライトコンポーネント取得 UISprite sprite = t...
Unity上でスプライトを徐々にフェードアウトさせる方法についてのメモ書きです。 これは簡単な爆発エフェクトなどに使えます。 スプライト描画を行うコンポーネントはSpriteRendererであり、この中にColorフィールドがあります。 Colorフィールドはスプライトの絵を貼り付ける下地となる紙のようなもので、この...
Unityに関するメモ書きです。 スクリプト上でプレハブから以下のようにGameObjectを生成するとします。 var obj = Instantiate(shot) as GameObject; このとき、以下のようにプレハブ名+(Clone)という名前のオブジェクトが追加されていることを目にすることがあると思いま...
Unityでモーションを実現したいとき、現在時刻を参照することはよくあると思われます。 現在時刻はTime.timeから分かります。 しかし、このTime.timeはTime.timeScaleの値により時刻の進行速度が変化します。 デフォルトはTime.timeScale=1となっており、本来の速度で時間が経過してい...
OnDestroy()コールバックでゲームオブジェクトをnewしたりプレハブからInstantiateするとゲームオブジェクトが解放されずにゴミが残ってしまうことがあります。 この現象の回避策は今のところOnDestroy()でインスタンス化しないことが最善策だと思います。 なぜゴミが残ってしまうかは原因が分かりません...