Unity - Playモード中に生成したオブジェクトをSceneに残す

Game Play中に生成したオブジェクトをSceneに残す方法。Scene中でオブジェクトを配置するとき、同じようなものが散らばっている状況がほしい場合、一つ一つ設置・位置調整という手順をいちいち行うのは面倒。 スクリプトから乱数で適当に配置したものをScene…

Unity - ドアを使ってSceneを移動する

SceneとSceneの間をドアで移動する。 Scene間のドアが一つだけなら前後のSceneを参照すれば事は済むが、たとえば建物と庭が表口と裏口で繋がっている場合などは単純なScene名の参照では適切な場所へプレイヤーを配置できない。 そこを解決しながらSceneを切…

Unreal Engine - 別のBlueprintからBlueprintを呼び出す(CustomEvent使用)

コンポーネント内部からさらに別のコンポーネントを呼び出したいことは多々ある。 UnityでいえばSendMessageとかGetComponentからの他コンポーネントの抱える関数の呼び出しとか。 Blueprint Interfaceとかイベントディスパッチャとかあるようだが、色々試し…

艦これ - 春イベント突破

合間を見て進めていた春イベント、どうにかこうにか全部甲で突破完了。 E4までは楽勝、E5で若干足踏み、E6ラスダンでかなり詰まったが重量戦艦に電探積んで命中重視構成にすることで理想的な形で夜戦に移行することができた。 最期は空母棲姫を一撃昇天させ…

Unreal Engine - エラー対応

1. Graph is linked to private object(s) in an external package Version:4.7.3 症状:メインウィンドウでSAVEしようとすると以下のエラーメッセージが表示され失敗する。 Graph is linked to private object(s) in an external package. External Object(s…

Unreal Engine - ドアの実装(両面開き自動ドア)

前回に引き続き両面開きの自動ドアを実装する。www.youtube.com 以下動作条件。 開閉はプレイヤーの接近に応じ自動で行う(プレイヤーのキー操作に拠らない) プレイヤーがドアの前に立つことで自動的にドアが開く。 プレイヤーがドアの前にいる限り開いた状態…

Unreal Engine - ドアの実装

Blueprintを使用しシーン中、プレイヤーのアクションに応じて開閉するドアを実装する。www.youtube.com基本的な動作条件は以下の通り。 開閉は押し引きで行う。 プレイヤーがドアの前に立った状態でボタンを押すたび開閉を行う。 プレイヤーがドアの前に立ち…

Unreal Engine - View Modes and Show Flags

4 - View Modes and Show Flags - YouTubeView PortのLitからView Modeの変更が可能(Lit, Unlit, Wireframe等々) Unreal Engine | ビューモード また、さらにExposeからシーン全体の明るさを制御可能。View PortのShow(Show Flag)から画面内で表示する要…

Unreal Engine - Orthographic Views / 正投影ビュー

3 - Orthographic Views - YouTube

Unreal Engine - View Portにおけるカメラ操作

2 - Viewport Navigation - YouTubeView Port内で…左クリックしながら WASD/QE/CZでView内のカメラ位置を操作可能。Alt+左ドラッグでMayaっぽい? カメラの動きになる。オブジェクト選択→Fでカメラが対象を中心に据えるよう移動 対象を中心に据えた後、Maya…

Unreal Engine - 各Windowの基本動作(Unity比較)

1 - UI Overview - YouTube Scene内、中ボタン押下時のカメラの移動をUnityに近い感じに直したい(デフォルトだとカメラのドラッグが逆) メニューバー -> Edit -> Editor Preferences -> Level Editor / Viewports -> Invert Middle Mouse Pan Set as Default…

Unity - DynamicWaterSystem使用メモ

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

スクロールバーの位置をスクリプトからの命令で最下部にしたい

チャットとかで入力したメッセージ一覧をスクロール形式で表示する。 最新のメッセージが最下部に出る仕様の場合、入力のたびにスクロールバーを最下部に移動させたい。以下のようにする。 (スクロールバーの細かい作り方は省略) private Vector2 scrollPo…

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

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

Google driveを使用したUnityゲームの公開(WebPlayer)

・Googleドライブのインストール方法は省略。検索すればいくらでも出てくる。・Googleドライブフォルダを開き、公開したいフォルダを作成/開く、公開したいWebPlayerのhtmlとunity3dファイルを置く。 ・タスクバーのGoogleドライブアイコンをクリックし、「…

経由地を通ってオブジェクトを移動させたい(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 = ボタン押した時に呼び出したい関数が入ってい…

RayCastでLayerMaskが動かない場合

RayCastを使用する際、LayerMaskを指定することで特定レイヤーのみ検知/特定レイヤーを除いての検知が可能だが、どうもその際の構文は距離を明示している必要があるもよう。 if(Physics.Raycast(ray, out hit, 1000.0f, panelLayer)) // if(Physics.Raycast…

NGUI ボタン操作時に実行される関数をスクリプトで決定する方法

NGUIでボタンが押された時に呼び出される処理はインスペクタ内「UIButton(Script)/On Click」「UIEvent Trigger(Script)」の各イベントに対応したNotifyに関数を記述したスクリプトをアタッチしたゲームオブジェクト(な、長い……)をセットし、ドロップダウ…

NGUI ボタン操作別呼び出されるアクションメモ

NGUI アクション別呼び出される関数最近NGUIを触り始めたので、メモ代わりにアクション別の呼び出される名前一覧。 間違ってても泣かない。・マウスアイコンがボタンの上に行く→HoverOver ・上記の状態からボタン領域外に出る→HoverOut ・HoverOver/HoverOut…

アニメーションへの第一歩

Unity-Chanを使用して色々試した結果のメモ。 なお各語は自分用なので正しいものと一致するとは限らない。・Animator Contollerの設定およびAnimator操作 Projectの中でCreate->Animator Controllerを作成する。 Animator Controllerを選択しAnimator Window…

球体の表面の座標を取得したい(直交座標→極座標変換)

たとえばとある「球体の表面を這い回る」あるいは「ある点からX,Y,Z的に等距離の座標」を取得し続けたい場合…… 球座標変換を行う。2角度と球体半径から直交座標を取得する。 @Start // 親オブジェクトから与えられた角度(度数)をラジアン角に変換、極座標…

パーティクルシステムShurikenの簡単な使用方法 とりあえずレベル

Shurikenて首をはねそうな名前だな……いや別に手裏剣が首はねするわけじゃないんだけど。作成の方法は2通り。 GameObject -> Create Other -> Particle System or Component -> Effects -> Particle System 前者の方法だとEmptyなオブジェクトが生成され、そ…

オブジェクトに画像を貼り付ける際のあれやこれ

開発中に簡単な画像を貼り付けたい場合、Photoshop等で作成→UnityでAssetsに読み込み・テクスチャで使用という流れが簡単、というか今そうやってる。 透過画像を貼り付ける時の動作について自分用メモ。Aオブジェクト Photoshop側では「背景透過・文字シェイ…

スクリプト内で動的にPhysicsMaterialを設定する/Resources.Load

基本的にはPrefab側で設定しておき、インスタンスを生成するのがベターだろうが時にはスクリプト内で動的に物理挙動を設定したい場合もある。かもしれない。 一応以下の方法で可能なことは確認した。PhysicsMaterialの設定というか、Resources.Loadの使い方…

レイヤー番号からレイヤー名を取得する/LayerMask.LayerToName

CollisionやTriggerで接触・取得したオブジェクトをレイヤー名で管理したい場合。hogehoge.gameObject.layerに格納されているのはレイヤーの番号なので、名前で管理したい場合は文字列に変換する必要がある。 void OnCollisionEnter(Collision col) { Debug.…

文字列操作/string.format

キャプションを画面に表示する際、文字は右詰めの方が都合がいいこともある。 また、点数などを表示する場合は表示桁数の管理も必要。 参考:http://www.atmarkit.co.jp/fdotnet/dotnettips/116formatint/formatint.html string formatString; GUI.Label(new…

即座にオブジェクトを破壊する/Object.DestroyImmediate

オブジェクトの破壊やコンポーネントの破棄は通常Object.Destroyを使うが、どうもこの命令は実行から反映されるまでに若干のディレイがある模様(同フレーム内で処理されるらしいが) 同一の処理の中でコンポーネントの有無などをifで参照する場合等、そのデ…