Category Archives: IT系その他

clusterゲームワールドコンテスト2020 制作記

cluster ゲームワールドコンテスト 2020に参加したのでワールドの製作にあたって工夫したところなどをメモしておきます。

cluster ゲームワールドコンテスト 2020

2020年6月4日(木)、ゲーム作成機能がリリースされたバーチャルSNS「cluster」にゲームワールドを投稿して己のアイデアと技術力を最大限に発揮しよう!本企画ではゲームワールドコンテストとして「創造力」「何度でも楽しめる」「熱量」の3つの観点からご応募されたワールドの審査を行い、各賞および協賛賞を決定致します。更に!「ゲームワールド投稿応援キャンペーン」として、ユニティ・テクノロジーズ…

完成した作品

ClusterをインストールしているPC/スマートフォン機器からワールドに入れます。
最大四人でレースゲームができます。一人でも動作します

ClusterKart|バーチャルSNS cluster(クラスター)

カートに乗ってレースで勝負だ!最大4人で対戦可能!一位を目指して走り抜けろ!

工夫したところ

車の操縦

本来ならばレースゲームはキャラクターが車の上に乗って操縦するのが一般的なのですが
Clusterでは動くオブジェクトの上にプレイヤーがいても動きが同期されずに足場だけが動いてしまうという問題があります。

その問題を解消するため プレイヤーの動きに応じて別の場所にある車を動かすことで疑似的にレースゲームを実装しました

画像のようにプレイヤーが色のついたブロックに触れることで別の場所にあるカメラを付けた車が動きます。
また、カメラのFOVを大きめに設定してあまりスピードが出てなくても早く動いているように見えるようにしています。

操縦席入り口


写真のようにプレイヤーが操縦席に移動するときに複数のプレイヤーがかぶったりしてしまうと予期せぬ動作の原因になるため
操縦席には一人しか入れないという制限を設けています。
プレイヤーに伝えるためにカートを置いてそれにインタラクトするとワープします
ワープしたカートには運転手のモデルを表示してインタラクトできなくしました。
上の写真は青色のカートにはほかのプレイヤーが乗っている状態です。

ちなみにこれはレース終了後リセットボタンを押すと再びアクセスできるようになります

レース開始のカウントダウン

レース開始時に3秒のカウントダウンが表示されます
ワールドを作った時にはタイマーのような機能を持ったコンポーネントがありませんでした。
そのためアニメーションを使ってタイマーを実装しました。

写真のように赤いボックスと下の灰色のシリンダーを親子関係にして置き、シリンダーの方に回転するだけのアニメーションを設定しておきます。
赤いボックスが回転して白いボックスに接触したときに任意のアクションをトリガーすることで好きなタイミングで実行できます。
回転して元の角度に戻るようにしておけば何度でも動作するし、時間やアクションの数の変更が容易なのでタイマーの実装方針としては良いかと思います

ちなみに画像では右側のタイマーが待機時間になっていて、最初に右が回っていき、白いボックスに接触すると左のタイマが始動して
カウントダウンを表示します。

時間、分、秒でタイマーを分けて作っておけば時計も簡単にできるかと思います。

観客席周り

レースに参加しないプレイヤーたちが快適に観戦できるようにも工夫しています
clusterにはダッシュなどの移動速度を変更する方法が無いため歩いて移動するのはとても大変で、レースを観戦することができないため
ワールドの各所にインタラクトするとワープすることができる赤色のCubeを置いてあります
具体的には画像のようにレースのコースに沿って配置されているのでインタラクトしていくだけでレースの状況を見ることができます

ぜひ実際にワールドに行って体験して下さい。

そのうち直すかもしれないところ

遊び方回り

遊び方の説明看板などを作る時間がなかったため最低限の物しか作れなかったので
ユーザーに遊び方が伝わりにくいかなぁと思っています。
その辺直したいです

車の操縦方法

当たり判定で操縦をしているとどうしても練習が必要になってきてしまうので
インタラクティブなオブジェクトを作ってそれの傾きに応じて操縦できる等にした方が良いかなぁと思っています。

まとめ

今回のコンテストで初めてClusterのワールドを作成したのですが
ドキュメント周りがしっかりしていてSDKにサンプルシーンも入ってるので
特に躓くことなく制作することができました。
ノンコーディングでコンポーネントを付けて実装しないといけない部分は少し大変だなぁと思いましたが
プログラマじゃない人たちにもとっつきやすいからまあいいのでないのでしょうか
将来的にはランタイムでコードも動くようになればもっともっと可能性が広がるので期待しています。

Unityで面積を求めたい 3Dの場合

こんにちはイマイです

最近書いてあるARKitのアプリで3次次元空間の3点で作れる面の面積を求めたいなぁと
思ったので実装方法を考えてみました。

調べてみると公式見当たりませんでしたね…
(ご存知の方がいましたらご教授ください)

以下のサイトをみると意外と簡単にベクトルを使って計算できるみたいなんで実装してみました。

エクセルを用いた3次元空間上の三角形の面積計算

null

public void CalculateArea(){
    //3点の初期化
    Vector3 A = new Vector3(1, 2, 5);
    Vector3 B = new Vector3(3, 1, 5);
    Vector3 C = new Vector3(3, 3, 5); 
    
    //BベクトルとCベクトルの外積を求める
    Vector3 D = Vector3.Cross(B-A,C-A);
    
    //平行四辺形の面積を求めて2で割る
    float S = D.magnitude / 2;
    Debug.Log(S);
}

magnitudeはベクトルの長さを返してくれます

Unity – スクリプティング API: Vector3.magnitude

あなたの作品をどこへでも!Unityはゲームやグラフィカルなアプリケーションを開発するための最高の開発環境です。Unityで作れば、Webブラウザ、Windows, Mac OS X, iOS, Android, PlayStation 4やWii U, Xbox Oneなどのゲーム機、さらに多くの幅広いプラットフォームで展開できます。

普通のゲームで使い道なさそうですね…

AR Quick View対応のusdzのアレコレ

イマイです
前回の記事で簡単なARQuickViewの表示をする記事を書きましたが
あの後調べたら色々問題点があったのでその辺を今回はもう少し詳しく書いてみます。
まだ私の調査不足で間違っているところなどあるかもしれません…!
もし間違っているところなど有ればご指摘ください!

VECTARYの欠点

前回はusdzを書き出す際にVECTORYのサイトで書き出すという方法を採用しましたが、これには以下のような問題点があったようです。
・テクスチャを設定できない
・アニメーションを設定できない
色々調べたのですがこの二つはVECTORYは現時点では設定出来ないようです。
(私の調査不足かもしれませんが…)

この二つを解決するためには今の所公式のXcode10のCommandLineToolsを使うしかなさそうです。
今回はこちらのやり方を書いてみます。

必要なもの

以下が今回の作業で必要なものになります。
・macOS High Sierra以上のMacOS(私はMojaveでやりました。)
・Command Line Tools
・モデル
・テクスチャ

※現段階ではXcode10は正式にリリースされていないのでAppleのデベロッパ登録が必要になります。
続きを読む →

iOS12のAR Quick Viewを使ってみた話

こんにちはイマイです

先日ついにiSO12が発表されましたね
対応機種は5s以降ということでSEの私も対応していますが,いつサポートが終わるのかドキドキです。

さてiOS12で何が変わったのか
というのは下の記事を見ればわかるかと思います

iOS 12

iOS 12は、アプリケーションの速さと反応の良さを一段と向上させます。みんなとつながる方法も、カスタマイズできることも、あなたの楽しみも、一段と広がります。

Appleさんがなんか超絶いい感じにしてくれたんですね(適当)
今回注目したいのがARkit2の登場ですね。
これによりほかのユーザーとのARの共有などができるようになったり
壁を認識できるようになったりと
盛りだくさんな機能が追加されました。

今回の記事ではその中の一つ

ブラウザからARを表示させるAR Quick Viewを実装してみたいと思います。
続きを読む →