将摄像机移向统一vuforia中的特定对象

时间:2019-09-17 17:51:27

标签: unity3d vuforia

我正在制作一个ar太阳系应用程序,现在我可以毫无问题地扩充整个太阳系,但是我想要的是向用户提供菜单,以便他可以从菜单中选择行星,以及在他选择相机时代替显示所有移动到更靠近特定行星的位置说木星,因此用户可以一次查看并专注于一个物体...所以基本上我想将相机移动到离特定行星更近的位置,静止不显示

3 个答案:

答案 0 :(得分:0)

您不可以将照相机移向特定行星并增加其他行星与所选行星的距离吗?

伪代码: 假设您的行星分散在x轴上

user clicks on the planet
  move camera towards planet
  foreach planet in planets
    dir = (selectedPlanet.transform.position - planet.transform.position).normalized
    if(dir < 0)
      //means the planet is to the left of selected planet
      planet.transform.position.x -= 10;
    else
      // planet is to the right of selected planet
      planet.transform.position.x += 10;  

我不在装有unity3d的PC上,因此请提前为错别道歉。

答案 1 :(得分:0)

我建议您使用AR来缩放和移动行星,而不是摄影机。

将相机保持原样,但是单击某个行星时,请缩放该行星(一个或多个)对象以使其更接近用户的视野。

您可以使用动画师轻松地做到这一点。

答案 2 :(得分:0)

AR摄像机无法移动,因为您拥有它的控制权,因此其位置和旋转取决于现实世界的空间,而不是游戏视角。因此,与其尝试移动相机(这是不可能的),不如尝试使行星更靠近相机。也就是说,使用摄像机的位置作为参考,因此您可以轻松地使每个行星更靠近摄像机。 可在此处使用Transform.LookAt()和Vector3.MoveTowards()

void Update()
{
   planet1.transform.LookAt(ARCam.transform); // this is so that the planet will rotate towards the camera and then using Vector3.MoveTowards() it will move towards the camera.
}
void Update()
    {

        planet1.transform.position = Vector3.MoveTowards(planet1.transform.position, ARCam.transform.position, speed*Time.deltaTime);
    }