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-我想完成的。
- 在游戏开始时,一个静止的红色立方体将位于视野中心。
- 用户可以 360 度环顾四周,例如他倾斜 his/her 抬头看云。
- 当用户双击触摸屏时,红色立方体将传送到面向用户的新视野中心。
谢谢!
您需要使用 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。)
我正在尝试为 Android 设备修改 Unity3d(版本 4.6.4f1)中的 Google Cardboard SDK 演示。
下面的描述是基于这个-picture-我想完成的。
- 在游戏开始时,一个静止的红色立方体将位于视野中心。
- 用户可以 360 度环顾四周,例如他倾斜 his/her 抬头看云。
- 当用户双击触摸屏时,红色立方体将传送到面向用户的新视野中心。
谢谢!
您需要使用 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。)