将相机从当前位置平稳地移动到特定位置?
Moving a camera from it's current position to a specific position smoothly in unity?
我有一个绕轨道运行的相机,它围绕一个物体平移以展示相关物体,因为这个物体相当大,很容易失去你的位置并想回到起始位置,我会喜欢通过按钮执行此操作。
我也希望这种过渡不会刺耳,在当前位置和指定位置之间平稳过渡。我意识到这是一个与 interp 相关的问题,我不知道从哪里开始。
到目前为止我的基本转换代码是
public Camera MainCamera;
public void UserClickedCameraResetButton()
{
MainCamera.transform.position = new Vector3(106, 68, 15);
MainCamera.transform.rotation = new Vector4(40, 145, 0);
}
像往常一样非常感谢
更新了解决我问题的代码。
public Camera MainCamera;
public GameObject TargetPosition;
public int speed = 2;
bool camera_move_enabled = false;
void Update()
{
if (camera_move_enabled)
{
MainCamera.transform.position = Vector3.Lerp(transform.position, TargetPosition.transform.position, speed * Time.deltaTime);
MainCamera.transform.rotation = Quaternion.Lerp(transform.rotation, TargetPosition.transform.rotation, speed * Time.deltaTime);
}
}
public void UserClickedCameraResetButton()
{
TargetPosition.transform.position = new Vector3(-106.2617f, 68.81419f, 14.92558f);
TargetPosition.transform.rotation = Quaternion.Euler(39.7415f, 145.0724f, 0);
camera_move_enabled = true;
}
试试这个,将变换位置和旋转设置为目标位置对象。由于过渡必须在多个帧上完成,因此您必须将其置于更新方法下。您可以设置一个变量来启用或禁用相机移动。只需更改目标位置并启用相机移动即可移动相机。
public GameObject Targetposition;
public bool camera_move_enabled;
void Update () {
if(camera_move_enabled){
Maincamera.transform.position = Vector3.Lerp (transform.position, Targetposition.transform.position, speed * Time.deltaTime);
Maincamera.transform.rotation = Quaternion.Lerp (transform.rotation, Targetposition.transform.rotation, speed * Time.deltaTime);
}
}
public void UserClickedCameraResetButton()
{
Targetposition.transform.position = new Vector3(106, 68, 15);
Targetposition.transform.rotation = new Vector4(40, 145, 0);
camera_move_enabled = true;
}
转换后禁用 camera_move_enabled。将速度值(浮动)更改为 faster/slower 过渡。
我也是 unity 的新手,所以这可能不是最好的解决方案:)
我有一个绕轨道运行的相机,它围绕一个物体平移以展示相关物体,因为这个物体相当大,很容易失去你的位置并想回到起始位置,我会喜欢通过按钮执行此操作。
我也希望这种过渡不会刺耳,在当前位置和指定位置之间平稳过渡。我意识到这是一个与 interp 相关的问题,我不知道从哪里开始。
到目前为止我的基本转换代码是
public Camera MainCamera;
public void UserClickedCameraResetButton()
{
MainCamera.transform.position = new Vector3(106, 68, 15);
MainCamera.transform.rotation = new Vector4(40, 145, 0);
}
像往常一样非常感谢
更新了解决我问题的代码。
public Camera MainCamera;
public GameObject TargetPosition;
public int speed = 2;
bool camera_move_enabled = false;
void Update()
{
if (camera_move_enabled)
{
MainCamera.transform.position = Vector3.Lerp(transform.position, TargetPosition.transform.position, speed * Time.deltaTime);
MainCamera.transform.rotation = Quaternion.Lerp(transform.rotation, TargetPosition.transform.rotation, speed * Time.deltaTime);
}
}
public void UserClickedCameraResetButton()
{
TargetPosition.transform.position = new Vector3(-106.2617f, 68.81419f, 14.92558f);
TargetPosition.transform.rotation = Quaternion.Euler(39.7415f, 145.0724f, 0);
camera_move_enabled = true;
}
试试这个,将变换位置和旋转设置为目标位置对象。由于过渡必须在多个帧上完成,因此您必须将其置于更新方法下。您可以设置一个变量来启用或禁用相机移动。只需更改目标位置并启用相机移动即可移动相机。
public GameObject Targetposition;
public bool camera_move_enabled;
void Update () {
if(camera_move_enabled){
Maincamera.transform.position = Vector3.Lerp (transform.position, Targetposition.transform.position, speed * Time.deltaTime);
Maincamera.transform.rotation = Quaternion.Lerp (transform.rotation, Targetposition.transform.rotation, speed * Time.deltaTime);
}
}
public void UserClickedCameraResetButton()
{
Targetposition.transform.position = new Vector3(106, 68, 15);
Targetposition.transform.rotation = new Vector4(40, 145, 0);
camera_move_enabled = true;
}
转换后禁用 camera_move_enabled。将速度值(浮动)更改为 faster/slower 过渡。
我也是 unity 的新手,所以这可能不是最好的解决方案:)