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

プログラミングで世界を変える

ゲームプログラミングと技術のこと

「顔に張り付いた蜘蛛をヘドバンで振り落とすVRゲーム」を公開しました

Unity プレスリリース アルゴリズム

2015年3月8日に行われた名工大ハッカソンにて、チームで『ShakeShockSpider』というVRゲームを開発しました。 チームの構成はプランナー1名、プログラマ3名で、UnityとOculus Rift DK2を使用しました。

kokucheese.com

ハッカソン終了後に修正を加え、先日公開したのでここで紹介します。

ゲーム紹介

ゲームは、部屋中にいる蜘蛛を見つめていると蜘蛛が飛びかかってくるので、頭を振って振り落とすといった感じです。10秒以内に振り落とせないと、視界が蜘蛛で埋め尽くされるというダークな内容になっています。

実際のプレイ動画がこちら。

www.youtube.com

ロジック

僕が担当したのは蜘蛛を振り落とす判定の部分でした。

   void BangingProc()
    {
        if (isBanging) {
            if (ocuCam.position.z < pre_pos.z){
                isBanging = false;
                CheckDistance();
            }
        }else {
            if (ocuCam.position.z > pre_pos.z){
                isBanging = true;
                CheckDistance();
            }
        }
        
        pre_pos = ocuCam.position;
        
    }

まず、約0.1秒毎にこちらの関数が呼ばれます。isBangingは頭を前方向に振っていることを意味しているのですが、各状態で0.1秒前のカメラz座標と現在のカメラz座標を比較し、振っている方向への切り替わりを認識します。

そのタイミングで呼ばれる関数がこちら。

   private void CheckDistance(){
        
        float accel  = Vector3.Distance (ocuCam.position, pole_pos);
        pole_pos = ocuCam.position;
        
        movement += accel;
                
        if (movement > clearMove && accel > clearAccel) {
            OnClear();
            return;
        }
        
        
    }

前回の振っている方向が切り替わった時の座標と現在の座標を比較し、移動量を保存します。 移動量の合計値が一定量以上、かつある程度大きく頭を振った時にクリアの判定となります。

ダウンロード

こちらからダウンロードが可能です。是非遊んでみてください。

Oculus Rift DK2と、付属のトラッキングカメラが必須となりますのでご注意ください。

www.moguragames.com

Rift Experiences | Oculus (サービス終了)