ド初心者のOculus GO開発日記4 Unity-chanを動かし、カメラを追従させる at #XRJAM

開発のかの字も知らない超初心者のOculus Goハックの記録です。

このnoteの意義

1.私が自分の記録を振り返ることで「自己効力感*1」を高める

2.鳥頭な私がわからなくなったときに見返す備忘録

3.あわよくば初心者ハッカーの手助けになれば

4.しがない学生ですので、応援・支援・投げ銭お願いします。boothでマッハ新書も出しています。

*1 逆境力(レジリエンス)に必要とされる。こちらを参考に


現在の状況

・adbコマンドが叩けるようになった!

・vysorでoculusGoの映像をPC画面に出力できるようになった!

・Unityでワールドを作り、ビルドしてその中に入ることが出来た!

・Unity-chanを動かし、カメラを追従させて一緒に踊る!!←new


今回はXR JAM参加回です

XR JAM(XRハッカソン)に参加してきました。というか現在絶賛開発中です。詳細はこちらを御覧ください。

6/2(土)-6/3(日)に開催されたXRジャムというAR/MR/VRのハッカソンイベントのまとめ

私のチームは Unity-chan on ICE!

Unity-chanを氷の上で滑らせ、あわよくば一緒にアイスダンスを踊ろうというアイデアです。私はUnity-chanを追随するカメラの制御を任されました。


前回の経験を活かし、OculusGo用にUnityをセットアップする

こちらを参照ください。 ド初心者のOculus GO開発日記3 Unityでワールドを作り、その中に入る 

今回レーザーポインタはいらないので、OculusGoにビルドできる状態まで持っていきます。


カメラを対象に合わせて移動させる

渡されたのは「白いボールがゆらゆら移動していくだけのシーン」

これにカメラを付け、ボールを追従するようにしました。そのスクリプトがこちら

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move : MonoBehaviour {

  GameObject Player;
  GameObject mainCamera;
	[SerializeField]private Vector3 offset = Vector3.zero;

    // Use this for initialization
    void Start () {
        Player = GameObject.Find ("Unity-chan");
        mainCamera = GameObject.Find ("OVRCameraRig");
    }
    // Update is called once per frame
    void Update () {

        Vector3 localOffset;

        localOffset = Player.transform.rotation * offset;
        mainCamera.transform.position = Player.transform.position + localOffset;
    }
}

Moveクラスの中を解説してゆきます

GameObject Player;
GameObject mainCamera;

これは変数宣言かな?後に

Player = GameObject.Find ("Unity-chan");
mainCamera = GameObject.Find ("OVRCameraRig");

とあって、”Player”にヒエラルキー内のゲームオブジェクト”Unity-chan”を代入しているので、多分そうかと。

[serializefield]がわからん

ググった。

privateフィールドをインスペクタに表示する際に付けるおまじないと覚えておけば十分です。

らしい。

参考:シリアライズやSerializeFieldの意味や使い方がわからない。


private Vector3 offset = Vector3.zero;

private はクラスの外からアクセス出来なくするためのもの。バグが減るらしい。Vector3 は変数型、3軸の動きを取るということ。offsetは変数名です。Vector3.zeroは、0で初期化してる…(何を?)


Vector3 localOffset;

わからん。

localOffset = Player.transform.rotation * offset;

わからん。

mainCamera.transform.position = Player.transform.position + localOffset;

キャラクターのポジションから、上2つで設定してるオフセット分だけ距離を取る、ということなんでしょう、多分。


はい、スクリプトほとんどわかってません。難しい。

でもなんとかunity-chanと一緒にカメラを動かすことは出来ました


これを書いてる時点で午前3時を回ろうとしてます。本当はもうちょっと作業は進んでいますが、今日の報告はこのへんで。明日の16:30がリミットです。


読んでいただいてありがとうございました!役に立った、応援したい、もっと書いてほしいなどなどの感想を抱いた方、ノートにスキを付けたり、ツイッターフォローしたり、コメント送ったり、支援などお願いします!!ぜひあなたのお気持ちを私に届けてください!暖かい思いをおまちしております。

※以降に文章はありません。

ここから先は

0字

¥ 500

この記事が気に入ったらチップで応援してみませんか?