Quando se vai criar um jogo na Unity, um recurso que muitas pessoas gostam de usar é fazer com que a câmera siga o player principal.
Para fazer com que um objeto siga o outro, é preciso mexer apenas na posição do objeto "seguidor".
Como?
A seguir um código que fará com que isso aconteça de forma simples. Olhe:
var target:GameObject;
var smoothTime = 0.3;
var smooth:boolean;
private var velocity = Vector3.zero;
private var offset:Vector3;
function Start () {
offset = target.transform.position - transform.position;
}
function Update () {
if(smooth){
var targetPosition : Vector3 = target.transform.position - offset;
transform.position = Vector3.SmoothDamp(transform.position, targetPosition, velocity, smoothTime);
}else{
transform.position = target.transform.position - offset;
}
}
O que está acontecendo?
No código acima temos três variáveis públicas, e são elas: target, smoothTime e smooth. A variável target será quem a câmera deverá seguir, smoothTime servira junto com a variável smooth, smoothTime diz qual o tempo de smooth da câmera até o target, e smooth é uma variável boolean que informa se o modo de seguir será ou não com a opção smooth.
Mas o que é smooth?
Smooth é apenas um "efeito gradual" no movimento a câmera, isso será mais visível com a execução do código.
Depois tem-se duas variáveis private, que são? velocity e offset. Offset é a principal, pois ela independe de usar smooth ou não, ela servirá para guardar a diferença de posição entre o player e a camera, no inicio do jogo, já a variavel velocuty sera a velocidade máxima em cada eixo que a camera poderá atingir caso o smooth esteja ativado.
Na função Start() escolhe o valor de offset para a diferença das posições entre player e câmera, isso serve para manter a visão que você escolheu durante a criação do jogo na unity.
Já na função Update() tem uma condição que depende do valor da variável smooth, explicar o else será mais fácil agora. Logo, se smooth estiver false, a posição da câmera será a posição do player menos(-) o offset, fazendo assim com que a câmera já siga o player. Porém você vai perceber que a cÂmera ficará meio travada, dando um "socos" durante o movimento do personagem, por isso criou-se o smooth, para minimizar isso.
Agora, voltando para o smooth == true, tem-se que, se smooth estive marcado como true, uma nova variável "targetPosition" foi criada, ela recebe o valor da posição do target menos(-) o offset, ou seja, ela receberá o valor da posição que nossa câmera deverá ir. Após isso, usou-se o método SmoothDamp do Vector3, que faz o smooth de forma automática, para o SmoothDamp é necessário passar a posição atual do objeto, ou seja, transform.position, em seguida, para onde o objeto deve ir, que foi pego na variável targetPosition, a velocidade máxima que poderá atingir, no caso usou-se Vector3.zero, isso indica que será infinita a velocidade nos eixos e por último a velocidade com que essa transição ocorrerá, quanto menor, mais rápido. Depois disso colocar a posição da câmera no retorno desse Vector3.SmoothDamp.
Pronto!!
E é isso, com esse código você um script simples que fará com que sua câmera siga seu personagem de forma mais "hard" ou "soft" dependendo da necessidade do seu jogo. Esse código foi usado para a câmera, mas pode ser adaptado para outros objetos dentro do seu jogo, como por exemplo, pets ou itens.
Comentários
Postar um comentário