Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

ainda não entendi como que funciona isso

Sei que é pra fazer a câmera ficar afastada do jogador e seguir ele, mas ainda não entendi como que a câmera fica afastada to jogador.

Pra mim pareceu que no Start, distCompensar é igual ao pé do jogador, ou seja, a distancia fica no jogador, e no Update, transform.position é igual a ao mesmo, o pé do jogador, porque jogador.tranform.position é igual ao pé do jogador e distCompensar também é.

Sei que não é assim, tanto que a câmera fica atras do jogador quando dou um play.

Então o problema é que eu não entendi como que funciona a parte que calcula a posição da câmera.

Se possível, por favor me explique de forma simples como funciona esse calculo.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ControlaCamera : MonoBehaviour {

    public GameObject Jogador;
    private Vector3 distCompensar;

    // Use this for initialization
    void Start () {
        distCompensar = transform.position - Jogador.transform.position;
    }

    // Update is called once per frame
    void Update () {
        transform.position = Jogador.transform.position + distCompensar;
    }
}
1 resposta
solução!

Oi, Victor, tudo bem?

Vou falar em números que acho que vai ficar mais claro.

Vamos supor que nosso personagem está na posição:

x: 0, y: 0, z: 0

E queremos que a nossa câmera siga o personagem mas sempre mantendo 5 de distância em cada eixo, sua posição inicial seria x: 5, y: 5, z: 5.

Só que quando o personagem se move a câmera tem que mover o mesmo que ele mas mantendo essa distância, certo? É isso que o distCompensar calcula, qual a distância que ela tem que manter. Nesse caso então

distCompensar = (x: 5, y: 5, z: 5) - (x: 0, y: 0, z: 0)

que resulta em : distCompensar = (x: 5, y: 5, z: 5)

Agora para fazer a câmera seguir o jogador podemos usar a linha:

transform.position = Jogador.transform.position

Só que dessa forma a câmera segue o pé do jogador e não mantém a distância calculada anteriormente. Temos então que seguir o jogador mas para manter a distância vamos somar o valor de distCompensar:

transform.position = Jogador.transform.position + distCompensar

Agora se o jogador se move para frente em 1 a câmera segue ele, mas sempre mantendo a distância definida inicialmente.