是什么让我的相机放大我的角色? [统一]

时间:2016-05-08 15:26:50

标签: unity3d

我的相机工作方式有一些奇怪的问题。我正在尝试对播放器进行透视视图,以允许多个图层像一个parallaxing效果一样。

这是我在相机上使用的代码。 (我已将播放器拖到变换目标上)

public Transform target;
public float distance = 3.0f;
public float height = 3.0f;
public float damping = 5.0f;
public bool followBehind = true;
public float rotationDamping = 10.0f;

void Update()
{
    Vector3 wantedPosition;
    if (followBehind)
        wantedPosition = target.TransformPoint(0, height, -distance);
    else
        wantedPosition = target.TransformPoint(0, height, distance);

    transform.position = Vector3.Lerp(transform.position, wantedPosition, Time.deltaTime * damping);

}

以下是发生的事情:enter image description here

如果你看Scale,它设置为.5,但是当我按下它时,它看起来像这样: enter image description here

我的最终目标是跟随玩家。距离稍远,然后能够调整相机的高度,以便我的播放器朝向地面。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

wantedPosition可能有不同的 z轴,正在更改相机的 z轴。我建议你拿到相机的 z轴,然后把它存放在其他地方。在将wantedPosition的z轴分配给相机之前,务必将其更改为默认值。

public Transform target;
public float distance = 3.0f;
public float height = 3.0f;
public float damping = 5.0f;
public bool followBehind = true;
public float rotationDamping = 10.0f;

float defaultZPos = 0;

void Start()
{
    Vector3 tempCamPos = Camera.main.transform.position;
    defaultZPos = tempCamPos.z;
}


void Update()
{
    Vector3 wantedPosition;
    if (followBehind)
        wantedPosition = target.TransformPoint(0, height, -distance);
    else
        wantedPosition = target.TransformPoint(0, height, distance);

    //Change the z pos to the deafult vale
    wantedPosition.z = defaultZPos;
    transform.position = Vector3.Lerp(transform.position, wantedPosition, Time.deltaTime * damping);

}