public void FocarCamera(/*GerenciadorDeCamera gerenteC*/) { Quaternion alvoQ = Quaternion.LookRotation(caracteristicas.alvo.forward + caracteristicas.altura / 10 * Vector3.down); x = Mathf.LerpAngle(x, alvoQ.eulerAngles.y, caracteristicas.velocidadeMaxFoco * Time.deltaTime); y = Mathf.LerpAngle(y, alvoQ.eulerAngles.x, caracteristicas.velocidadeMaxFoco * Time.deltaTime); float paraContinha = Mathf.Min(Mathf.Abs(x - alvoQ.eulerAngles.y), Mathf.Abs(360 - Mathf.Abs(x - alvoQ.eulerAngles.y) % 360)); if (paraContinha % 360 < 5 && Mathf.Abs(y - alvoQ.eulerAngles.x) % 360 < 15) { estadoAtual = EstadoDeCamera.controlando; } }
public void AplicaCamera(float altura) { if (caracteristicas.alvo && caracteristicas.minhaCamera) { if (Input.GetButtonDown("focarCamera")) { EstadoAtual = EstadoDeCamera.focando; } if (estadoAtual == EstadoDeCamera.controlando) { CameraControlavel(); } else if (estadoAtual == EstadoDeCamera.focando) { FocarCamera(); } Quaternion rotation = Quaternion.Euler(y, x, 0); Vector3 position = rotation * (new Vector3(0.0f, 0.0f, -caracteristicas.distancia)) + caracteristicas.alvo.position + (altura + caracteristicas.AlturaDoPersonagem) * Vector3.up; caracteristicas.minhaCamera.rotation = rotation; caracteristicas.minhaCamera.position = position + Vector3.up; SetarTransformsDeRetorno(); CameraDeLuta.contraParedes(caracteristicas.minhaCamera, caracteristicas.alvo, altura + caracteristicas.AlturaDoPersonagem); } else { caracteristicas.alvo = GameController.g.Manager.transform; } }