跳跃时摄像机不跟随目标在y轴上移动?

3

我正在为我的游戏开发课制作一个2D平台游戏,但是我想让相机只在角色跳跃时沿X轴跟随角色。是否有人知道如何做到这一点?

这是我的代码:

using UnityEngine;

public class CameraFollow : MonoBehaviour
{
    //Setter noen "variabler" slik at kameraet følger etter spilleren.
    public Transform target;
    public float smoothSpeed = 0.2f;
    public Vector3 offset;

    //Lar oss bestemme om vi vil ha avgrensning for kameraet eller ikke.
    public bool bounds;

    public Vector3 minCameraPos;
    public Vector3 maxCameraPos;



    private void FixedUpdate()
    {
        //Passer på at kameraet ikke bare følger etter spilleren, men ikke hakker, men her kan også "* Time.deltatime" bli lagt til ved 
        //siden av smoothSpeed, og smoothSpeed endres til f.eks 10, slik at kamera følger karakteren saktere enn det karakteren løper.

        Vector3 desiredPosition = target.position + offset;
        Vector3 smoothedPosition = Vector3.Lerp (transform.position, desiredPosition, smoothSpeed);
        transform.position = smoothedPosition;

        //Hvis "Bounds" er sjekket av, så vil avgrensninger for kameraet bli lagt til, men dette blir lagt til manuelt, slik at det kan endres på fra level til level på en enklere måte.
        if (bounds)
        {
            transform.position = new Vector3(Mathf.Clamp(transform.position.x, minCameraPos.x, maxCameraPos.x),
                Mathf.Clamp(transform.position.y, minCameraPos.y, maxCameraPos.y),
                Mathf.Clamp(transform.position.z, minCameraPos.z, maxCameraPos.z));
        }
    }
}

你需要控制你的相机Y轴位置。如果你不想让相机上下移动,将Y轴设为0。 - Dave
你能帮助我吗?我是一个初学者,所以我对C#脚本还不太熟悉。 - Christine
跟踪跳跃状态,如果处于跳跃状态,则不要更改变换位置的Y分量。 - mahdi mahzouni
2个回答

2
这样,您就可以仅将偏移应用于x、z,并且不更改相机的Y位置:

这样,您就可以仅将偏移应用于x、z,并且不更改相机的Y位置:

最初的回答
Vector3 desiredPosition = new Vector3(target.position.x + offset.x, transform.position.y, target.position.z + offset.z);

非常感谢您! - Christine
没问题,我稍微修改了答案。 - Dave
1
@Christine 如果这个答案解决了你的问题,请不要忘记给它点赞并将其标记为被接受的答案。 - Foggzie

0
摄像机在跟随目标,但我发现它也在x、y和z方向移动。 如果您不想在目标跳跃时跟随它,应该有一个指示器告诉您目标何时在跳跃。
public PlayerClass target; //Replace --> public Transform target;

在 FixedUpdate 中

//After the camera movement operations save the y component
originalY = this.transform.position.y;

if(target.IsJumping)
{
    this.transform.position.y = originalY;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接