Заставить камеру не следовать за целью по оси Y во время прыжка? - PullRequest
2 голосов
/ 14 марта 2019

Я делаю 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));
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 14 марта 2019

Таким образом, вы можете применить смещение только к x, z и не изменять положение Y камеры:

Vector3 desiredPosition = new Vector3(target.position.x + offset.x, transform.position.y, target.position.z + offset.z);
0 голосов
/ 14 марта 2019

Камера следует за целью, но, как я вижу, она также перемещается по x, y и z. Если вы не хотите следить за целью, когда прыгаете, у вас должен быть индикатор, который сообщает, когда цель прыгает.

public PlayerClass target; //Replace --> public Transform target;

In FixedUpdate

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

if(target.IsJumping)
{
    this.transform.position.y = originalY;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...