我的相机工作方式有一些奇怪的问题。我正在尝试对播放器进行透视视图,以允许多个图层像一个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);
}
如果你看Scale,它设置为.5,但是当我按下它时,它看起来像这样:
我的最终目标是跟随玩家。距离稍远,然后能够调整相机的高度,以便我的播放器朝向地面。任何帮助都会很棒。
答案 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);
}