Unity3d 在触发器上发生碰撞时移动摄影机位置y

Unity3d 在触发器上发生碰撞时移动摄影机位置y,unity3d,Unity3d,如果我的角色在对象中发生碰撞,我希望我的相机位置y向下移动一点。我尝试过这样编程: void OnTriggerEnter2D(Collider other) { float x = Camera.main.transform.position.x; float y = Camera.main.transform.position.y; Vector3 origPOS = new Vector3(x,

如果我的角色在对象中发生碰撞,我希望我的相机位置y向下移动一点。我尝试过这样编程:

void OnTriggerEnter2D(Collider other)
{
                float x = Camera.main.transform.position.x;
                float y = Camera.main.transform.position.y;
                Vector3 origPOS = new Vector3(x, (Mathf.Lerp(y, -3, 3 * Time.deltaTime)), 0);
                Camera.main.transform.position = origPOS;
}
但它的行为不像我想的那样。你们能帮帮我吗

这是相机原始位置的图像:

当我的角色在对象中发生碰撞时,这是我的相机所需的位置,并执行移动相机的功能:


问题是这行代码只调用一次(当角色发生碰撞时),并在到达所需目标之前结束

vector3origpos=newvector3(x,(Mathf.Lerp(y,-3,3*Time.deltaTime)),0)

你必须不停地爬升,直到你达到像这样想要的位置

float t = 0.0f;
while ( t<1.0f )
{
    float x = Camera.main.transform.position.x;
    float y = Camera.main.transform.position.y;
    t += Time.deltaTime;
    Vector3 origPOS = new Vector3(x, (Mathf.Lerp(y, -3, 3 * Time.deltaTime),t), 0)
    Camera.main.transform.position = origPOS;
}
float t=0.0f;
而(t您可以在碰撞时启动移动相机:

void OnTriggerEnter2D(Collider other)
{
    StartCoroutine(MoveCamera());
}

IEnumerator MoveCamera()
{
    float t = 0.0f;

    Vector3 originPosition = Camera.main.transform.position;
    Vector3 endPosition = new Vector3(originPosition.x, originPosition.y - 3, originPosition.z);

    while ( t < 1.0f )
    {
        Camera.main.transform.position = Vector3.Lerp(originPosition, endPosition, t);
        t += Time.deltaTime * CameraSpeed; // CameraSpeed is the speed of your camera.

        yield return null; // Don't forget this line !
    }
}
void OnTriggerEnter2D(碰撞器其他)
{
start例程(MoveCamera());
}
IEnumerator MoveCamera()
{
浮球t=0.0f;
Vector3 originPosition=Camera.main.transform.position;
Vector3 endPosition=新的Vector3(originPosition.x,originPosition.y-3,originPosition.z);
而(t<1.0f)
{
Camera.main.transform.position=Vector3.Lerp(原始位置,结束位置,t);
t+=Time.deltaTime*CameraSpeed;//CameraSpeed是相机的速度。
yield return null;//不要忘记这一行!
}
}