プログラム

Unity - DynamicWaterSystem使用メモ

水の表現に挑戦したくて発見したAssets まだ触り始めたばかりだがとりあえずいくつかのスクリプトにおけるパラメータのメモ 間違ってても泣かないDocument : Dynamic Water System: Main PageBuoyancyForce…水面に浮かぶオブジェクトに追加する。浮力関連の…

Unity - Networkを介したゲーム第一歩

とりあえず単純なオブジェクトが動くサンプルを作ってみた。 別ウィンドウで開くとその分だけオブジェクトが増え、それぞれの動きが同期しているのが見えるはず。 Unity Web Player | NetWorkTest追記:連続で開くと個々の部屋になるようだ。一つ開いてJoine…

経由地を通ってオブジェクトを移動させたい(iTween/path)

iTweenを使用した際、指定した点を経由する形でオブジェクトを移動させたい場合。たとえば点Aにあるオブジェクトが点Bに到達した後点Cに行きたいとして iTween.MoveTo(B) iTween.MoveTo(C) とかやった場合、MoveToBを実行した直後にMoveToCが実行され、事実…

SendMessageはDisableなスクリプトも呼び出してしまう

あるオブジェクトに複数のコンポーネント(スクリプト)がアタッチされており、各コンポーネントに同じ名前の関数がある場合。 オブジェクトに対しSendMessageでその関数を起動するとDisableであるコンポーネントの関数も呼び出される。美しい解決方法がない…

異なるコンポーネントをループで一度にON/OFFする

通常、コンポーネントのON/OFFは[取得したコンポーネント].enable = true/falseで行える。 配列にコンポーネントを保存すればループで一度にスイッチできる。 が、当然異なるコンポーネントには使用できない。似たような処理を行うが、種類が異なるコンポー…

NGUI ボタンに引数を添える

ボタンに引数を添えて押した時の処理を呼び出す方法。 EventDelegateを使用する。Delegateって継承だっけ。 とりあえず細かい部分は棚上げしてのやり方。※1 UiButtonType = ENUMで定義している独自型。 ※2 uam = ボタン押した時に呼び出したい関数が入ってい…

【未解決】クラスのデータに複数のオブジェクトからアクセスすると最後の情報で統一される

【現象】処理の中で同一のPrefabから(同種の/しかし別々の)GameObjectを生成し、GameObject付随の処理の中で他クラスで定義しているデータにアクセスし使用した際、すべてのGameObjectで最後の情報に統一される。 【具体的には】爆弾を設置する時、火力は…

ユーザ側でのキーコンフィグを可能にする/Input.GetButton

Update中にif(Input.GetKeyDown(KeyCode.Q))のような形で記述すれば特定のボタンを押したときの動作を実装できるが、この方法だと完全にQのキーしか使えない。 ユーザ側でのキーコンフィグを可能にする。と同時に対応キーを後々から変更したい場合に対応する…

スクリプトからゲームオブジェクトにコンポーネントを追加/削除する:AddComponent / Destroy

HierarchyでのD&DやInspectorでのAdd Componentではなく、スクリプト内部で動的にコンポーネントを追加/削除する。 以下、C#ファイルactRemoteBombを追加するケース。 private actRemoteBomb remoteBombComp; : : remoteBombComp = null; : : // 追加の前に…

インスペクタ側から値を設定するビルトイン配列:Builtin Array

スクリプト側でpublicの配列の宣言のみするとインスペクタ側でサイズ(要素数)および配列要素の中身を設定可能。 public GameObject[] ItemInstances;

他スクリプト内の関数を使用する:GetComponent

他のオブジェクトに接続しているスクリプト内の関数を使用したいケース。 FindやGetComponentは重いらしいので極力Start関数内で一度だけ使用する。 // オブジェクト・コンポーネント取得用変数宣言. GameObject bombCtrl; bombGenerator bombGene; : : // F…

線を飛ばしてその途中接触した全オブジェクトを取得する:RaycastAll

Raycastは最初に接触したオブジェクトまでだが、この方法は接触した全オブジェクトを取得可能。 以下サンプルコード // 指定地点最寄のセンターポイントを取得する. // Y軸(高さ)は引数として関数呼び時に指定する. public Vector3 GetNearestCenterPoint(…