J'ai un jeu de voiture 3D où la caméra pointe du haut vers le bas. Lorsque la voiture se déplace, j'ai besoin que la caméra le suive. Je sais comment faire la position suivante, mais je ne sais pas comment faire la même rotation que pour la voiture en douceur. Je n'ai besoin que de changer l'axe y
. x = 90
et z = 0
tout le temps. La voiture tourne également seulement sur l'axe y
.Comment faire pivoter la caméra en douceur dans Unity?
public float interpVelocity;
public float minDistance;
public float followDistance;
public GameObject target;
public Vector3 offset;
Vector3 targetPos;
// Use this for initialization
void Start()
{
targetPos = transform.position;
}
// Update is called once per frame
void FixedUpdate()
{
if (target)
{
Vector3 posNoZ = transform.position;
posNoZ.z = target.transform.position.z;
Vector3 targetDirectionZ = (target.transform.position - posNoZ);
interpVelocity = targetDirectionZ.magnitude * 5f;
targetPos = transform.position + (targetDirectionZ.normalized * interpVelocity * Time.deltaTime);
transform.position = Vector3.Lerp(transform.position, targetPos + offset, 0.25f);
Vector3 posNoX = transform.position;
posNoX.x = target.transform.position.x;
Vector3 targetDirectionX = (target.transform.position - posNoX);
interpVelocity = targetDirectionX.magnitude * 5f;
targetPos = transform.position + (targetDirectionX.normalized * interpVelocity * Time.deltaTime);
transform.position = Vector3.Lerp(transform.position, targetPos + offset, 0.25f);
}
}
cette question pourrait être plus approprié sur https://gamedev.stackexchange.com/ – Sty
Pensez à utiliser Slerp plutôt que Lerp – gareththegeek