2013-01-01から1年間の記事一覧
Unityのスクリプト内で初期化を行う関数はいくつかある。ひとつのスクリプトの中で実行される順番は次の通りらしい。(出典はこれ) Awake OnEnable OnLevelWasLoaded Start しかし、スクリプトを無効にした場合(Script.enabled=false)は、次の通り Awake …
わかりにくいタイトルだが、具体的な例で説明する。下のように、メインであるクラス(下の例では、Physics)のPublic変数にカスタム・クラス(SubData) を指定しているとする。、 using UnityEngine; using System.Collections; public class SubData { publi…
GameObjectに対し、あるコンポーネントを持っているかを調べ、なければ足す(あるいは、処理を変える)場合の手順例えば、あるGameObjectに対し、rigidbodyコンポーネントがなければ新たに加え、rigidbodyコンポーネントを返す例。 if(rigidbody == null){ r…
Time.timeScaleでFixedUpdate()の時間間隔を調整できる。Time.timeScale=1.0 で、デフォルトの速度(時間間隔) Time.timeScale=0.5で、速度を半分(時間間隔を2倍)にする Time.timeScale=0.0は、速度ゼロ、すなわち、FixedUpdate()を停止する 具体的な事…
Unityで、GameObjectの一部にマスクをかけるには、DepthMaskを使う。 参考:Unity - Manual: ShaderLab syntax: SubShader Tags 1. Maskとなるオブジェクトの設定 1-1. 新規シェーダを作成。Maskシェーダのスクリプト(下記)を記述する。 Maskオブジェクト…
Mouse入力(および、タッチセンサー入力)を受け取るには、次の3つの方法がある。1)Event キー入力とMouse操作が発生した時に発信されるEventを受け取る。 ただし、Eventは、OnGUIの中のみで受け取れる(ようだ) using UnityEngine; using System.Collec…
例えば、空間上に引出線を描画する場合、線に相当するオブジェクトを置くよりも、LineRendererを使ったほうがスマート。1)Scriptの例 下の例は、Transformの配列(transforms)に格納した座標間にラインを描画するもの。 using UnityEngine; using System.Co…
Unityから3Dモニタ/プロジェクタに出力する際の設定覚書。 ちなみにサンプルの環境は、GeForce680のHDMIポートに、SANYO PDG-DWL2500(Panasonic CT230)とMitsubishi RDT231WMがつながっている状態である。DWL2500は解像度1280X800の3Dプロジェクタ、RDT231W…
Project内に次のPrefab (BallPrefab)があるとする。 このPrefabをシーン内に生成するには、Instantiate()を使う。 たとえば次のScriptを作り、シーン内のGameObjectにアタッチ。 using UnityEngine; using System.Collections; public class MainScript : Mo…
オブジェクトへのTextureの貼付は 1)AssetにTexure画像を読み込み、 2) その画像をMaterialに貼り、 3) そのMaterialをObjectに適用する と言う手順になる。この時、Texture画像の設定によってレンダリング後の見え方が違う。Assetで画像データを選択した状…
KINECT SDKを使う その1・環境設定編 - Unityな日々(Unity Geek)の続きKinectInterop.cs Kinectとのインターフェースを司どる最下層のスクリプト。public interfrace KinectInterface :Kinectとのインターフェース定義。実装はKinectSensor.csで定義され…
http://wiki.unity3d.com/index.php?title=ReverseNormals http://forum.unity3d.com/threads/101018-How-do-I-get-the-normal-of-each-triangle-in-meshインポートした3DモデルのMeshを次のスクリプトで調べてみた。 print ("normals="+normals.Length+" t…
数値を文字に変換するのは、toString()関数だが、同時に書式も指定できる。 たとえば、小数点以下第一位まで表示した文字は、数値変数.toString("#.0")とする。他にも多くの書式設定がある。 カスタム数値書式指定文字列 なお、toString()は、日付時刻の書式…
GUIのメソッドがない、というエラーで悩まされた。 スクリプトは間違いがないので、システムがおかしくなったかとも疑ったが、理由は簡単だった。 別途、'GUI'という名前のC#クラスを作ったため、コンフリクトを起こしていたのだ。 GUIファイルを削除(リネ…
Static Classを使う場合は次のように記述javascript #pragma strict static class Ball { function getColor():Color{ return new Color(0.0F,1.0F,1.0F,0.3F); } } c# using UnityEngine; using System.Collections; public static class Ball { //関数名 p…
キー入力は基本だが、「あるキーが押された」「離された」というイベントと、「押されているか」「押されていないか」という状態は区別されている。1)イベント(一回限り)キーが押された if (Input.GetKeyDown("a")) { // aが押された!(押され続けは検知…
Unityでスクリプトを書いていると、javascriptとC#の表記方法の違いに混乱することがある。似ているところと違うところがあるから、ややこしい。 たとえば、ゲームは初心者にやさしく: Unity C#とJavascriptの主な違いが参考になる。
Unity Script Reference – Overview: Writing Scripts in C#にまとめられている。 すべてのクラス(静的クラスを除く)はMonoBehaviourを継承し、クラス名とファイル名は一致していなければならない。 コルーチンはIEnumerator型の戻り値を持たねばならない…
UnityのMathf関数には、通常のMath関数以外に3Dインタラクティブ用に特化された関数がある。次は知っておくと効率化できそう。 関数名(引数) 機能 Clamp(,min,max) 最大・最小値でカット Pow(x,y) xのy乗 Ceil(x) 小数点切り上げ(floatのまま) CeilToIn…