3

我正在尝试为 Android 设备修改 Unity3d(版本 4.6.4f1)中的 Google Cardboard SDK 演示。

以下描述基于我正在尝试完成的这张图片。

  1. 在游戏开始时,一个静止的红色立方体将位于视野中心。
  2. 用户可以 360 度环顾四周,例如他/她抬起头来查看云。
  3. 当用户双击触摸屏时,红色立方体将传送到面向用户的新视野中心。

谢谢!

4

2 回答 2

2

这是一种方法,使用返回 Ray 的 CardboardHead 的 Gaze 属性:

// Places the game object at distance meters from the user, in the
// direction they are looking.
public void MoveToView(float distance)
{
    CardboardHead head = Camera.main.GetComponent<StereoController>().Head;
    transform.position = head.Gaze.GetPoint(distance);
}

(假设主摄像机上有一个 StereoController。如果情况并非如此,您可以检查 null。)

于 2015-04-07T00:40:00.823 回答
1

您需要使用CardboardMain预制件的 CardboardHead 部分。在您的多维数据集脚本中,留下一个公共 GameObject 引用并将其设置为CardboardHead在编辑器中。

接下来,在您的双击处理函数中,根据头部的前向矢量设置您的位置。

如果您希望立方体(或任何其他 3D 对象)面向玩家,您需要使用transform.LookAt()

它可能看起来像这样:

public GameObject cardboardHead;
public float distanceFromCamera;

public void doubleTapped()
{
  Vector3 newPosition = cardboardHead.transform.position + (cardboardHead.transform.forward * distanceFromCamera);
  transform.position = newPosition;
  transform.LookAt(cardboardHead.transform);
}
于 2015-04-06T09:17:29.230 回答