VR添加运动:走路

时间:2018-03-07 10:19:57

标签: c# unity3d

使用Unity2017.3.1f1 Personal(64位)使用Cardboard VR SDK为Android构建VR应用程序。该应用程序的目的是允许用户以沉浸式方式可视化数据。

目前想要做一些类似于场景视图的事情,人们可以通过前往一个人的地方前进,但是使用Cardboard单按钮,我只能提供前进的能力。

建立一个画布,用户可以选择他/她想要的运动类型:传送或步行。

The teleport works fine as you can see here

当用户选择walk时,控制台中会显示以下错误:

  

NullReferenceException:Object   引用未设置为的实例   对象

     

Player.TryWalk()(atAssets / Player.cs:44)

     

Player.Update()(在Assets / Player.cs:37)

我的播放器脚本:

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

public enum InputMode
{
    NONE,
    TELEPORT,
    WALK
}

public class Player : MonoBehaviour {

    public static Player instance; //Singleton design pattern: only one instance of the class appears
    public InputMode activeMode = InputMode.NONE;

    [SerializeField]
    private float playerSpeed = 3.0f;

    void Awake()
    {
        if(instance != null)
        {
            GameObject.Destroy(instance.gameObject);
        }
        instance = this;
    }

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update ()
    {
        TryWalk();
    }

    public void TryWalk()
    {
        if(Input.GetMouseButton(0) && activeMode == InputMode.WALK)
        {
            Vector3 forward = Camera.main.transform.forward;

            Vector3 newPosition = transform.position + forward * Time.deltaTime * playerSpeed;

            transform.position = newPosition;
        }
    }
}

播放器脚本已添加为播放器的组件:

hierarchy

player

按下按钮Walk时,活动模式将变为WALK,如下图所示。 walk

尽管如此,即使发生这种情况,用户也无法行走。

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:2)

Camera.main;返回null。

为了解决这个问题,必须让我的场景中的相机标记为MainCamera,如下图所示。

camera

See it working here.