Google Unity3d 中的 Cardboard 演示:如何通过双击触摸屏使 3D 对象在您的视野中居中?

Google Cardboard demo in Unity3d: How to center a 3D object in your field of vision by double tapping touchscreen?

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

下面的描述是基于这个-picture-我想完成的。

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

谢谢!

您需要使用 CardboardMain 预制件的 CardboardHead 部分。在你的立方体脚本中,留下一个 public 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);
}

这是一种方法,使用 CardboardHead 的凝视 属性 其中 returns 一条射线:

// 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。)