Как остановить камеру, следящую за Y в единстве

У меня есть этот код, и я не могу понять, как заставить камеру перестать следовать за моим игроком, когда он прыгает, в unity3d

using UnityEngine; using System.Collections;

открытый класс Camera2DFollow2: MonoBehaviour {

public Transform target;
public float damping = 1;
public float lookAheadFactor = 3;
public float lookAheadReturnSpeed = 0.5f;
public float lookAheadMoveThreshold = 0.1f;

float offsetZ;
Vector3 lastTargetPosition;
Vector3 currentVelocity;
Vector3 lookAheadPos;

// Use this for initialization
void Start () {
    lastTargetPosition = target.position;
    offsetZ = (transform.position - target.position).z;
    transform.parent = null;
}

// Update is called once per frame
void Update () {

    // only update lookahead pos if accelerating or changed direction
    float xMoveDelta = (target.position - lastTargetPosition).x;

    bool updateLookAheadTarget = Mathf.Abs(xMoveDelta) > lookAheadMoveThreshold;

    if (updateLookAheadTarget) {
        lookAheadPos = lookAheadFactor * Vector3.right * Mathf.Sign(xMoveDelta);
    } else {
        lookAheadPos = Vector3.MoveTowards(lookAheadPos, Vector3.zero, Time.deltaTime * lookAheadReturnSpeed);  
    }

    Vector3 aheadTargetPos = target.position + lookAheadPos + Vector3.forward * offsetZ;
    Vector3 newPos = Vector3.SmoothDamp(transform.position, aheadTargetPos, ref currentVelocity, damping);

    transform.position = newPos;

    lastTargetPosition = target.position;       
}

}


person Sergio Toledo Piza    schedule 20.10.2014    source источник
comment
Кроме того, вы можете использовать StackExchange для разработки игр для конкретных задач разработки игр - чтобы больше людей было готово ответить на вопросы по этой теме.   -  person Yushatak    schedule 29.07.2016


Ответы (2)


Пытаться

Vector3 aheadTargetPos = target.position + lookAheadPos + Vector3.forward * offsetZ;
Vector3 newPos = Vector3.SmoothDamp(transform.position, aheadTargetPos, ref currentVelocity, damping);
newPos.y = transform.position.y;
transform.position = newPos;

or

Vector3 aheadTargetPos = target.position + lookAheadPos + Vector3.forward * offsetZ;
aheadTargetPos.y = transform.position.y;
Vector3 newPos = Vector3.SmoothDamp(transform.position, aheadTargetPos, ref currentVelocity, damping);
transform.position = newPos;
person Max K.    schedule 20.10.2014

Вы можете установить минимальное пороговое значение для значения Y символа. Когда персонажи прыгают, вы можете сохранить эту точку трансформации y и посмотреть расстояние между этой точкой и положением персонажа. Y Если персонаж превышает этот порог, ваша камера может следовать за персонажем. Также вы можете рассмотреть возможность использования Cinemachine. Это очень мощно. (https://unity.com/unity/features/editor/art-and-design/cinemachine)

person HTugsadK    schedule 03.03.2021