2014-10-20 4 views
1

У меня есть этот код, и я не могу понять, как сделать остановку камеры после моего игрока, когда он прыгает, в Unity3DКак остановить камеру следующее Y в единстве

с использованием UnityEngine; с использованием 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;  
} 

}

+0

Как и в сторону, вы можете использовать StackExchange разработки игр для вещей, специфичных для разработка игр - больше людей готовы ответить на вопросы по этой теме. – Yushatak

ответ

1

Попробуйте

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; 

или

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; 
Смежные вопросы