C#とWindowsと最上と土川

CentOS・MacOSぶっ殺すマン PC中毒・プログラマ 一応、高校生かもしれない。高校の部活の社畜です。KOROSARERU☆(ガチ) 現在、インスコ不要のC#開発環境を作っています。できました。次期Ver (CN:COSMOS)よろしく!@Csharp_GO

今日のウンcode(VRゲーム作り始めました)

前から、Unityを使ってちょくちょくOculusやWindowsMR向けのVRアプリを遊び程度に作っていたが、WindowsMRの一般発売も始まり、いよいよ一般消費者にPCVRが広まる時代になってきたことを感じたので、販売できるレベルの内容の濃いVRゲームを開発することにした。

まだ、名前も決まっていないが、FPSな感じのシナリオゲームになる予定。今、シナリオも結構決まってきている。

FPSとか聞いて、BattlefieldCall of Dutyとかみたいな、オッサンだらけで泥だらけになりながら戦うゲームとか思うかもしれないがぜんぜん違う。メインキャラクタの半分は女性だし、舞台は海だ。(でも主人公は男です。)

詳しい内容は煮詰まり次第、タイトルや公開予定を含めホームページで公開予定。

 

宣伝?的なものは書いたので

ウンcodeな話を始める(´・ω・`)

今回のVRゲームはとOculusとWindowsMR向けなどに出すことを計画しているので、最初からマルチプラットフォームな設計にすることにした。そこで、障害になりそうな、各プラットフォームのメーカーが出しているSDKを極力使わないこととした。

UnityにはUnityEngine.XRというのがあり、OculusならヘッドトラッキングやOculusTouchなど必要なことの殆どがこれから利用できる。問題は公式資料(内容薄い&English)ぐらいしか参考になるものがないことだが。

 

とりあえず、開発一日目。ここまで作ってみた。(ゲーム内容のヒントになるものだらけw)


自作VRゲーム試作中 OculusTouchでMk45を動かす(2)

 

とりあえず、右手OculusTouchを用いてMk45 5inchi砲を撃つのだが、結構てこづった。

OculusTouchの座標を取得しようと

InputTracking.GetLocalPosition(XRNode.RightHand)

を利用したが、動作が変で、不思議に思い

同じ座標なはずの

GameObject.Find("Main Camera").transform.position

InputTracking.GetLocalPosition(XRNode.Head)

を比べたら、全然値が違うので、もしかしたら基準点が違うのかなとか思い、HMDの位置からの相対座標でOculusTouchとMk45を連動させることにした。

transform.position = GameObject.Find("Main Camera").transform.position + InputTracking.GetLocalPosition(XRNode.RightHand)- InputTracking.GetLocalPosition(XRNode.Head);

↑こんな感じに

この程度なら、コード一切書かなくてもSDK等を利用することでできてしまうが、今回はあえて、全てコーディングすることにした。後々、色々いじれるように。

明日は左手の実装と敵とか出して当たり判定ぐらいつけようと思う。それをしながらVR内での有効なUIを模索していく。あとMk45の射撃に爆炎をつけたりしようと思う。