読者です 読者をやめる 読者になる 読者になる

ロードバイク時々ものづくり

ロードバイクおよびゲーム開発について

自己紹介

個人的な活動について

これまでに作ったもの(公開済み)

STEEL STRIKER 

コミケC91で頒布予定のロボットアクションゲーム。

VRサイクリング

現実のロードバイクとVRを組み合わせたコンテンツ。
BitSummit 4th出展。VRクリエイティブアワード一次審査通過。

 

ふぉとゆに

HTC Viveでのコンテンツ試作として制作。バーチャルサミット関西にて披露。

 

著書

Unity5ゲーム開発レシピ ハマるゲーム制作のノウハウ

https://www.amazon.co.jp/dp/4798143030/

著書第2弾。まつだすさんとの共著。自分のパートはロボゲーの制作方法を解説しつつ、Unityでゲームを作るための流れが理解できるような構成で執筆。

「ゲーム開発レシピ」の画像検索結果

Unity5 3Dゲーム開発講座 ユニティちゃんで作る本格アクションゲーム

https://www.amazon.co.jp/dp/4798138223/

著作。関西のクリエイター7名による共著。ユニティちゃんを使ってUnityを学べる著作

「ユニティちゃんで作る本格アクションゲーム」の画像検索結果 

 

【Unity】モノビットエンジンで通信同期 その2:ユニティちゃんを同期

モノビットエンジンでユニティちゃんのプロジェクトを通信同期させてみた。
f:id:vrcycling:20170515004929p:plain

公式資料ではノンプログラミングでの手順のみのため、今回はテストではスクリプトで移動させている部分をなるべくそのままで通信させる方法について。
基本的にはノンプログラミングの方法とほぼ同じ。

1.ユニティちゃんデータのDLとインポート

DATA DOWNLOAD-利用規約 | UNITY-CHAN! OFFICIAL WEBSITE
上記よりユニティちゃん3Dモデルデータ1.2.1をDLしてインポート。
※MUNにも含まれているが、既存プロジェクトを後から通信を入れる、という体のためこの順番で。

2.Monobit Unity Networking 2.0のDLとインポート

Monobit Unity Networking 2.0 (MUN) - モノビットエンジン公式サイト
上記よりクライアントアセットをDLしてインポート。

3.Locomotionシーンを開く

[UnityChan] - [Scenes]フォルダ内のLocomotionシーンを改造する。
f:id:vrcycling:20170515001017p:plain

・明るさの調整
シーンを開いた直後だとライトが明るすぎるため調整。
f:id:vrcycling:20170515001157p:plain
「Directional light for UnityChan」の「Light」の「Intensity」を「1」に変更。
f:id:vrcycling:20170515001226p:plain
明るさはお好みで。
f:id:vrcycling:20170515001250p:plain

4.自動接続スクリプトを設定

空のゲームオブジェクトを追加し、「Monobit Auto Login Template」をアタッチ。
「Monobit View」の「Monobit ViewID」を「1」に変更。
f:id:vrcycling:20170515001646p:plain

5.ユニティちゃんの設定

「Hierarchy」の「unitychan_dynamic_locomotion」に「Monobit Transform View」と「Monobit Animator View」をアタッチする。
元々ある「Face Update」のチェックを外す。※Monobit Auto Login TemplateのGUIと重なるため
f:id:vrcycling:20170515002410p:plain

「Monobit View」に「Monobit Transform View」と「Monobit Animator View」を登録する。
Addで増やしてコンポーネントD&Dして登録する。
f:id:vrcycling:20170515002600p:plain

6.ユニティちゃんの移動スクリプトの改造

通信時に他のプレイヤーのユニティちゃんを動かせないようにする。※詳細はその1を参照
「UnityChanControlScriptWithRgidBody」スクリプトを改造する。
まずは冒頭部分に追加。

public class UnityChanControlScriptWithRgidBody: MonoBehaviour {

public class UnityChanControlScriptWithRgidBody : MonobitEngine.MonoBehaviour {

続いてFixedUpdateに以下を追記。

void FixedUpdate ()
{
    if( !monobitView.isMine )
    {
        return;
    }
7.ユニティちゃんをプレハブ化してプレイヤーとして登録

ここまで変更を行った「unitychan_dynamic_locomotion」をAssetsに「Resources」フォルダを作成し、D&Dしてプレハブ化する。
f:id:vrcycling:20170515003659p:plain
Hierarchy内の「unitychan_dynamic_locomotion」は削除。

4で用意したからのゲームオブジェクトの「Monobit Auto Login Template」の「Prefab」に先ほどプレハブ化した「unitychan_dynamic_locomotion」を登録する。
f:id:vrcycling:20170515003854p:plain

8.カメラについているスクリプトを無効にする

「Monobit Auto Login Template」内でカメラをTPS視点にしているので、Hierarchy内の「Main Camera」についている「ThirdPersonCamera」スクリプトを無効にする。

9.バックグラウンドで動くようにする

Player Settingsの「Run In Background」にチェックを入れる。
f:id:vrcycling:20170515004147p:plain

10.ビルドして実行確認

ビルドしてエディターと通信同期を行ってみる。
※同ポイントにプレイヤーが生成され、コリジョンでおかしくなるので最初にログインする方をちょっと移動させておくといい。
f:id:vrcycling:20170515004929p:plain

無事同期できれいればOK。
手数的にはノンプログラミングの手順より少なくなっている。
既存のプロジェクトを同期させる場合はこんな感じかな?

【Unity】モノビットエンジンで通信同期 その1

モノビットエンジンを使った通信同期についてざくっとメモ。
とりあえずシンプルなオブジェクトの移動を同期させる、という部分まで。

■モノビットエンジン(MUN)のアセットをDL先
Monobit Unity Networking 2.0 (MUN) - モノビットエンジン公式サイト

■資料
Monobit Unity Networking (MUN) official document

■手順 ※基本的には上記資料がベース

1.アセットをインポート
f:id:vrcycling:20170513123608p:plain
2.自動接続スクリプトをシーンに組み込む
シーンに空のGameObjectを追加し、「Monobit Auto Login Templete」をアタッチ。
「Monobit View」の「MonobitView ID」を変更(仮に1)
f:id:vrcycling:20170513123714p:plain
3.プレイヤーの設定
プレイヤーの代わりとして「Cube」オブジェクトをシーンに追加。名前を「Player」に変更する。
f:id:vrcycling:20170513125003p:plain
プレイヤーを移動させるスクリプト「Player」を作り、移動させるスクリプトを記述。

void Update ()
{
    transform.position += transform.TransformDirection(Vector3.forward) * Input.GetAxis("Vertical") * Time.deltaTime;
    transform.Rotate(0,Input.GetAxis("Horizontal") * Time.deltaTime * 50,0);
}

「Player」に「Monobit Transform View」スクリプトをアタッチ。同時に「Monobit View」も追加される。
f:id:vrcycling:20170513125157p:plain
ProjectビューのAssetsに「Resources」フォルダを作成し、シーン上のPlayerをD&Dしてプレハブ化する。
シーン上のPlayerオブジェクトは削除。
f:id:vrcycling:20170513125232p:plain

4.生成するプレイヤーとして登録
2で追加した「Monobit Auto Login Templete」の「Instantiate Prefab」に3で作成したプレハブを登録。
f:id:vrcycling:20170513125255p:plain

5.実行確認
「Connect」「GameStart」の後にプレイヤーが生成されて動かせていればここまではOK。

ビルドしたアプリと通信する場合はPlayerSettingsの「Run In Background」をONにする。
f:id:vrcycling:20170513125936p:plain
ただしまだ問題があるので設定していく。
※「Monobit Auto Login Templete」によってカメラが自動でプレイヤーの後方視点になるのが嫌な場合は、「Monobit Auto Login Templete」を開いて「if (go != null)」のコードをコメントアウトしておく。
尚、以前Photonでテストしていたとき、最初からプレイヤーに子として後方視点カメラをつけていた際、後から生成されたプレイヤーのカメラに切り替わってしまったので同様のコードを自分で入れたことがある。

6.問題解決:通信時に他のプレイヤーも動いてしまう
「自身が所有権を持つプレイヤー」だけを動かすようにする。
http://www.monobitengine.com/doc/mun/contents/Tutorial/IsMine.htm

上記に詳しいことは書いてあるので修正箇所のみ。
3で作成したコードに変更や追記を行う。

public class Player : MonoBehaviour {

public class Player : MonobitEngine.MonoBehaviour {

Update内の冒頭に下記を追記

if( !monobitView.isMine )
{
    return;
}

これで自分のプレイヤーのみが動くようになる。

7.問題解決:他のプレイヤーの動きが同期していない
Transformの同期を取る設定を行う。
http://www.monobitengine.com/doc/mun/contents/Tutorial/AddSynchronizedComponent.htm

上記に詳しいことは書いてあるので修正箇所のみ。
3で追加した「Player」にアタッチされている「Monobit Transform View」を、同じく「Player」にアタッチされている「Monobit View」の「Observed Component Registration List」に登録する。
f:id:vrcycling:20170513130205p:plain

8.実行確認
ビルドしてエディターと通信同期を実行確認する。
きちんと同期されていればOK。
f:id:vrcycling:20170513130450p:plain

とりあえず今回はここまで。

ベネチア聖地巡礼の旅

色々あって休みができたのでベネチアに行ってきた。
ベネチアARIAを見て以来ずっと行きたかったが、遠いのである程度まとまった休みと資金がないと難しくこれまで保留していた。

5月から仕事再開なので日程的に厳しいかな、と思ったけど海外旅行経験豊富な会社の人に後押しされ行くことに。
パスポートは期限切れで出発3日前に取得という綱渡りの決行。

ツアーはもう予約締め切りのため個人旅行。海外一人旅は2回目だが個人旅行は初めてだ。
DeNAトラベルで航空チケットとホテルをセット予約した。航空チケットは刻々と値段が変わるので注意。

出発は関空から深夜発。ちょうどオーストラリアに帰国する同僚と空港で落ち合い出発まで談笑。
ベネチアまでは直行便はなく、ドバイまでエミレーツ航空にて10時間の地獄のフライト。
隣が大きめの外人で静かな肘掛け戦争が勃発した。

ほとんど眠れない中ドバイ到着。飛行機から眺める中東の朝焼けと月は印象的だった。
ドバイ空港で3時間ほど待つので軽食。通貨はディルハムで1ディルハム30円くらい。
ドバイ空港はとにかく広い!関空の4倍くらい?

f:id:vrcycling:20170426170254j:plain

ドバイからベネチアマルコポーロ空港までは6時間。

運良く今度は隣が空席でその向こうは日本人のおばちゃんのためコミュニケーションが取れた。
ちなみに英語はほぼ喋れない。個人旅行で割と致命的だけど結果的になんとか。

20時間の移動をくぐり抜け空港着陸前の窓から見えてきた景色。オレンジの屋根の建物がちらほら見え、テレビでよく見るヨーロッパだ!と興奮した。

マルコポーロ空港からベネチアまでは、電車、バス、水上バスの選択肢があるけどやっぱり水上バスを利用。

f:id:vrcycling:20170426171518j:plain
いくつかの経由地を経てサン・マルコ広場近くに到着。
近づくにつれテンションアップしていただけに到着したらその光景に感動。
ARIAで見た景色だ!

f:id:vrcycling:20170426172108j:plain

とりあえず宿に荷物を降ろそうとサンマルコ広場を抜けようとするが恐ろしいまでの人ごみ。
なにかイベントをしていたようで通常よりもかなり多くの人が集まっていた。

f:id:vrcycling:20170426172150j:plain

人ごみを抜けホテルに到着。なんとサンマルコ広場から徒歩1分の好立地。
そらそこそこの値段するわけだ。

f:id:vrcycling:20170426172343j:plain

適当に予約したので後で知ったが、このホテルはベネチア最古のホテルのひとつだそうで、ホテル前のこの場所も観光スポットだった。

ホテルはレビューとは異なりかなり広め。暖房が効いてるのか分からないのと、シャワーの水圧が弱い、温度が一定でないことを除けば概ね満足。
当然海外はウォシュレットはない。マルコポーロ空港の紙はサンドペーパー並みだったので携帯ウォシュレットを持って行くべきだった。

ホテルで荷物を置いたら散策開始。一眼レフを下げつつあたりをぶらぶら。
VR目的で買った一眼レフだが今では撮影の虜に。ベネチア行きを決めた理由の一つでもある。

f:id:vrcycling:20170426172937j:plain

f:id:vrcycling:20170426172951j:plain

f:id:vrcycling:20170426173004j:plain

f:id:vrcycling:20170426173017j:plain

ベネチアはどこを切り取っても絵になる景色。初ヨーロッパのため建物すべてが新鮮、ファンタジー。
ぷらぷら歩いて途中でスーパーで買い物して宿に帰還。スーパーは地元民向けで飲み物安く買えてオススメ。
飛行機内でこの本を読んで勉強した。

スーパーでの注意点はレジではカゴから商品を出すこと、袋は有料か持ち込みのみ。あとから袋を欲しいと言って20セントを要求されたが細かいのを持っておらず、5ユーロ札を出したら諦めてオマケしてくれた。

初日は現地時間19時くらいでダウン。
日本との時差は7時間なので日本は深夜2時。普段の寝る時間。

翌朝というか深夜3時半に起床。日本時間では10時半なので早くはない。
しばらくぼんやりしてた後、朝の散策へ。

f:id:vrcycling:20170426175335j:plain

f:id:vrcycling:20170426175348j:plain

f:id:vrcycling:20170426175401j:plain

f:id:vrcycling:20170426175414j:plain
早朝のベネチアは清掃員くらいしかおらず、日中とはかけ離れていた。
当然ながら写真は好きな場所で撮り放題。写真の溜息の橋は日中は超混雑。

f:id:vrcycling:20170426175436j:plain

撮るなら早朝、これは鉄則。9時までは比較的空いている模様。
一旦ホテルに戻り朝食後に散策再開。観光スポット巡りを開始。

f:id:vrcycling:20170426175932j:plain

まずはサンマルコ広場にそびえ立つ鐘楼へ。オープン前から並び始めてるので早めに行った方がいい。
鐘楼からはベネチア本島が見渡せ絶景が広がる。

f:id:vrcycling:20170426175959j:plain

f:id:vrcycling:20170426180015j:plain

f:id:vrcycling:20170426180027j:plain

鐘楼は1時間ごとに時刻を知らせる鐘が鳴り響くので、時間を調整して登るのがベスト。間近で鳴るのでめちゃくちゃうるさいけど貴重な体験ができる。

f:id:vrcycling:20170426180059j:plain

鐘楼の後はサンマルコ寺院へ。ここに入る時は大きなバッグはNG。無料の預り所を案内されるので預けてから入ろう。

f:id:vrcycling:20170426180305j:plain
サンマルコ寺院はそれはもう素晴らしい光景が。写真NG!
世界遺産でしか見たことないような荘厳な雰囲気。必見。
こういう世界遺産はいつかVRで配信されるといいね。時間の問題だと思うけど。

f:id:vrcycling:20170426180505j:plain

f:id:vrcycling:20170426180518j:plain

次に向かった先はリアルト橋。有名な橋だそうでかなりの賑わい。
リアルト橋を越えつつヴェネツィアひより紀行に出てたパスタの店を目指す。

f:id:vrcycling:20170426181450j:plain

サン・ジャコモ・リアルト教会。なんとなく撮っておいたけどARIAにも出てた。

f:id:vrcycling:20170426180706j:plain
極太麺でパスタというよりうどんに近い。正直普通レベルの味かな?

f:id:vrcycling:20170426181735j:plain

アカデミア橋。

f:id:vrcycling:20170426181824j:plain

f:id:vrcycling:20170426181837j:plain

コンタリーニ・デル・ボーヴォロ階段。地球の歩き方では内部見学不可とあったが、国別に人数制限して見学を可能にしているみたいで入れた。

一旦ホテルに戻り休憩してからゴンドラへ。やっぱりベネチアに来たからにはゴンドラに乗らないと。

f:id:vrcycling:20170426182325j:plain

ゴンドラは高いイメージがあるけど安めの現地ツアーもある。6人まで乗り合わせて乗るゴンドラツアーを日本から予約してみた。
集合地点に行くとカップルや夫婦ばかりで多少気後れしつつも乗船。乗ってみるとそんな事は気にならなくなる光景が!

f:id:vrcycling:20170426182347j:plain

ARIAでずっと憧れていたゴンドラからの風景。細い水路を巧みな操船でぶつからずに進んでいく。安いツアーなのでカンツォーネなどはないけどそれでも十分。特に水路を抜けて大運河にでたときの開放感は最高の体験。ベネチアに行ったからにはゴンドラだけは外しちゃダメだ。

f:id:vrcycling:20170426182407j:plain
ちょっと気になるのは水が超汚いこと。写真では分からないけど水路はドブ川と変わりない。臭いのだ。
何かの拍子に水がかからないかヒヤヒヤしながら乗っていた。

f:id:vrcycling:20170426182438j:plain

ゴンドラを降りて散策を再開。アカデミア橋を越え、サンタ・マリア・デッラ・サルーテ教会へ。

f:id:vrcycling:20170426182827j:plain
サンマルコ広場から運河を挟んで向かいにあって気になっていた。こちらはサンマルコ寺院ほどではないけど荘厳な教会。

f:id:vrcycling:20170426183124j:plain

f:id:vrcycling:20170426183137j:plain

2日目の締めくくりに夕焼けを撮影を試みるため、サンマルコ広場方面に移動。途中で買い食いしたピザが超うまい。1ピース3.5€だけどボリューム十分。

f:id:vrcycling:20170426183721j:plain

ひたすら夕日を待つがなかなか太陽が沈まない。ベネチアの日没は19:30くらいなのだ。
根気よく待ち続けようやく撮影に成功。サンマルコ広場の鐘楼にかかる太陽。

f:id:vrcycling:20170426183758j:plain

f:id:vrcycling:20170426183810j:plain

f:id:vrcycling:20170426183743j:plain
まさにオレンジプラネット。報われた。
撮影後は早々に帰還して就寝。時差ボケと歩き倒しで限界だった。

f:id:vrcycling:20170426184259j:plain

3日目は水上バス、ヴァポレットを利用してブラーノ島へ。せっかくなので一日券を購入してみた。ヴァポレットはベネチアの主要な移動手段なので乗り方を知っておくと観光がさらに楽しくなる。
停泊所によって路線がいろいろあるので下調べしてからじゃないと少し迷うことになりそう。

f:id:vrcycling:20170426184323j:plain

f:id:vrcycling:20170426184336j:plain

f:id:vrcycling:20170426184349j:plain

サンマルコ広場から北にある停泊所から出発してブラーノ島へ。島内の建物はすべてカラフルで異世界感がハンパない。

f:id:vrcycling:20170426184417j:plain

ブラーノ島にも鐘楼が。傾いていることで有名。
ブラーノ島ベネチア本島より観光客も少なくのんびりできるのも魅力。そう広くない島内を散策した後はしばらく公園でまったりしていた。

ブラーノ島からガラス工芸で有名なムラーノ島へ。

f:id:vrcycling:20170426184709j:plain

f:id:vrcycling:20170426184727j:plain

f:id:vrcycling:20170426184741j:plain

こちらは観光客であふれかえっており息苦しく早々に退散。

ベネチア本島に戻りホテルでお土産について調べる。やはりムラーノグラスがお土産としては最適とのことで少し後悔。
仕方ないのでベネチア本島で買えるちゃんとしたとこへ。ほとんどが観光客用の大量生産品。ガラスと仮面の両方扱ってるところはそんな感じ。
この旅を後押ししてくれた人にはちゃんとしたとこで。変圧器も貸してくれたし。
ムラーノ島出身の匠の工房のお店へ。やっぱり少し高めだけど買うならちゃんとしたものを。

f:id:vrcycling:20170426185014j:plain

f:id:vrcycling:20170426185032j:plain

お土産も買い終わり歩くのも疲れたのでなんとなくヴァポレットに。一日券を買ってるしね。各駅停車に乗りつつぼんやりベネチアを船内から観光。これが結構いい感じ。疲れないしね。

f:id:vrcycling:20170426190208j:plain

f:id:vrcycling:20170426190222j:plain

f:id:vrcycling:20170426190238j:plain

f:id:vrcycling:20170426190251j:plain

f:id:vrcycling:20170426190304j:plain

終点のローマ広場まで着くと景色が一変。ベネチアは車、自転車が禁止でバスもローマ広場まで。ローマ広場では車が普通に走っており一気に現実に引き戻された感じだった。ここには来たらあかん。

f:id:vrcycling:20170426190340j:plain

再度ヴァポレットに乗り直して別の路線で戻る途中でサン・ジョルジョ・マッジョーレ教会へ。
ここにも鐘楼がありガイドブックだと時間的にもう上がれないと書いてあったが、運良くギリギリ登れる時間に伸びていた。

f:id:vrcycling:20170426190515j:plain

f:id:vrcycling:20170426190528j:plain

f:id:vrcycling:20170426190541j:plain

f:id:vrcycling:20170426190614j:plain

f:id:vrcycling:20170426190627j:plain

鐘楼からの眺め。サンマルコ広場の鐘楼とはまた違った景色。
ちょうど大型客船も運河を渡っていた。

最後の夜ということで頑張って起き続け夜景撮影へ。ようやく三脚の出番だ。

f:id:vrcycling:20170426191449j:plain

f:id:vrcycling:20170426191502j:plain

f:id:vrcycling:20170426191515j:plain

f:id:vrcycling:20170426191423j:plain

f:id:vrcycling:20170426191435j:plain

サンマルコ広場で調整してから夜景スポットのリアルト橋へ。

f:id:vrcycling:20170426191550j:plain

f:id:vrcycling:20170426191604j:plain
途中の水路もなかなかの雰囲気。ほんとはもっと落ち着いた灯りなのだがカメラ初心者のためオートモードに任せっきりで明るめになってしまったがこれはこれで。

最終日は帰国のみ。三日間晴天に恵まれ最終日だけが曇りという幸運。
青空の下のベネチアは本当に最高だった。一眼レフもこれだけで元が取れたと思う。

あと出発前に心配してたスリの危険も全然感じなかった。偽ブランドバッグを売ってるヤツ、スライムや自撮り棒を売るヤツ、物乞いなんかはいたけどそれほど危険は感じなかった。

f:id:vrcycling:20170426191830j:plain

唯一の心残りはカフェフローリアンに入れなかったこと。精神的な敷居が高い!いつかまた来たときにチャレンジしたい。

いい旅だった。
またいつか行くと思う。

--------------------------------------------------------------------
写真、テキストの無断転載・使用禁止

【Unity】ユニティちゃんをViveTrackerでVRIK【VR】

ViveTrackerとFinal IKのVRIKでユニティちゃんを動かしてみたときのメモ

■手順
1.SteamVRプラグインの導入とVive Trackerの認識

2.ユニティちゃんモデルのダウンロードとインポート
アセットストアからではなく、下記からDL。

DATA DOWNLOAD-利用規約 | UNITY-CHAN! OFFICIAL WEBSITE

UnityChan - Prefabs内の「unitychan」をシーンに追加。

3.Final IKの購入とインポート
Final IKはとても便利なアセットです。買いましょう!

 4.VRIKの設定
基本は下記動画を参考。

Basic quick setup for Final IK's VRIK with the HTC Vive - YouTube

Plugins - FinalIK - IK Components内の「VRIK」スクリプトをシーンに追加した「unitychan」に アタッチ。

f:id:vrcycling:20170406001333j:plain

「Character1_Reference」以下の頭(Character1_Head)、右手、左手、右足、左足の骨を複製しヒエラルキーのルートに移動、Transformのポジションを全て「0,0,0,」に変更する。
※頭にはメッシュが含まれるので全部削除
※Animatorなどはすべてチェックを外しておく

シーン内の「unitychan」にアタッチしたVRIKのSolverの各Targetに先ほど複製した骨を設定していく。

f:id:vrcycling:20170406001936p:plain

足のPosition Weight、Rotation Weightが初期値は0なので1に変更。

ヒエラルキーの[CameraRig]以下の各Viveデバイスに先ほど複製した骨を子として移動する。

f:id:vrcycling:20170406002250p:plain

実行確認して動いたらOK

ViveTrackerをUnityで使う

ViveTrackerが届いたのでUnityで使用する方法を簡単にメモ。

基本は下記に書いてあるけど英語が苦手な人向けや補足なども合わせて。

https://dl.vive.com/Tracker/Guideline/HTC_Vive_Tracker_Developer_Guidelines_v1.3.pdf

1.SteamVRプラグインをアセットストアからダウンロードしてインポート
※Trackerの発売に合わせてアップデートされているので既存のプロジェクトを利用している人もアップデートしましょう

f:id:vrcycling:20170329140825j:plain

2.シーンにSteamVR関連を入れる

f:id:vrcycling:20170329140931j:plain

3.Tracker用のオブジェクトを追加する
「Controller (right)」をコピーして「Tracker1」に名前を変更する。
ガイドラインではカプセルに「SteamVR_TrackedObject」をアタッチしています。
好きなモデルに「SteamVR_TrackedObject」をアタッチするとそのモデルをトラッキングできます。

Controller (right)を流用するとトラッカーの形状のモデルを表示することができます。

f:id:vrcycling:20170329141341j:plain f:id:vrcycling:20170329141345j:plain

4.追加したオブジェクトを「SteamVR_ControllerManager」に登録する
[CameraRig]にアタッチされている「SteamVR_ControllerManager」に先ほど追加したオブジェクトを登録します。
「Objects」の「Size」を追加したいオブジェクト分増やして追加します。

f:id:vrcycling:20170329141733j:plain f:id:vrcycling:20170329141744j:plain

5.実行して確認

f:id:vrcycling:20170329142102j:plain

Vive Trackerが表示されました。
現状ではViveコントローラが両方認識されてないとTrackerが表示されません。
この辺はおって調査が必要です。とりあえず今はこんなとこで。

【Unity】ParticleSystem.durationのUnity5.5以降の対応

自著であるゲーム開発レシピでも使用していた「ParticleSystem.duration」がUnity5.5以降で使用できなくなったようで、元同僚やブログなどで報告が上がっていたので解決方法を記載しときます。

使用箇所はパーティクルが終了したら消滅するところなので、下記のように使用しています。

ParticleSystem particleSystem = GetComponent <ParticleSystem>();
Destroy(gameObject, particleSystem.duration);

particleSystem.duration が使用できなくなっているので、代わりに ParticleSystem.MainModule.duration を使用します。

docs.unity3d.com


使用例がこちら

ParticleSystem ps = GetComponent<ParticleSystem>();
var main = ps.main;
Destroy (gameObject, main.duration);

自分で検証してませんが、元同僚がこれでいけたということなのでこれで。
間違いや問題あったら指摘してください。