SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida Very Happy
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Desenvolvendo um aeronave VTOL
[DÚVIDA] Como descobrir se o Player está na frente do Npc
Diminuir tamanho do //BUILD// do projeto
MoonthyStudios, se junte a nós e seja reconhecido.
Preciso de ajuda com Programação no Unity
[Dúvida] Movimentação com touch
[Asset] sendo criada, Hotel Completo(Ainda n esta pronta)
Erro ao tentar instalar o Visual Studio 2015
Unity ADS tem limite de anuncios diarios?
[PROBLEMA] Problema ao conectar a um host com o Unet. (Localmente)
Como colocar o personagem a piscar quando bate num espinho por exemplo e perde vida???
[____ADMINISTRADOR OFFLINE____]
Idéias para games
BRASILIAN TRUCK SIMULADOR
Skript para atravessar uma area e ir para outra cena já como personagem
Como muda o shaders da unity
[RESOLVIDO] Script
RIGIDBODY...
Uno Game with Unity 3D
multiplayer
Android Swipe
Menu Button UI
Objeto ir para raycast
[DUVIDA] como melhorar a jogabilidade de um jogo 2D
Formaçao de equipe para jogo de sobrevivencia online
[MODELO 3D] Fita K7 para Uso Comercial
[TUTORIAL] Unity 5 - Sistema Completo de PORTAS E CHAVES
Resolver Error
[____TÓPICO LIVRE____] FALE O QUE QUISER
Recarregador de arms
Alguém Para Dar Uma Avaliada no Meu Jogo de Terror :)
Tela rosa em jogos
MonoDevelop
[TUTORIAL] Cutscene inicial!
Design de apartamento (interior)
[RESOLVIDO] //Script// pressionar botão e destruir objeto não funciona
Objeto ultrapassando Colisor
Stop Animation
Como usar uma animação de uma arma animada na Unity...
Como funciona esse script?!
Delay e ativar variavel de audio
Text to Speech ou outra sugestão
[RESOLVIDO] Como deixar sempre com dois dígitos
[RESOLVIDO] ERRO NO SISTEMA DE FOME, VIDA, STAMINA ETC... DO MARCOS
[RESOLVIDO] VOID START???
DESLIGAR E LIGAR O CARRO
[RESOLVIDO] Animação
jogo quiz 2D unity 5...
(Dúvida) Objeto receber posição do Raycast.
Personagem em 3ª pessoa
Projeto - IMU, terror de sobrevivência em primeira pessoa (estilo silent hill)
JUMP no estilo Subwey surf
Auxilio para script de Câmera
[TUTORIAL] AI Enemy ( Jogos de terror )
Criar varias funções de mesmo nome em um script
Como Que faço Para Quando Eu Reentrar no game o PlayerPrefs restaurar os dados salvos?
[ASSET] Cama Realista 3D + Download Grátis!
[RESOLVIDO] Meu Script Sumiu!
Como colocar arvores configuradas pelo terrain?
Duvida de camera
Problema de conexão com o fórum
Brasileiros podem usar o Unity ADS?
Desenvolvimento de game PokeGen MS - Vídeo e informações
dúvida com variáveis
Câmera tipo Uncharted
Como verificar se a animação términou no animator
[TUTORIAL] Sistema COMPLETO de câmeras
Iluminação unity 5
Procuro membros para minha Equipe (Programadores, designers, etc)
Galera aki tenho um site com muitos models 3d
COMO COLOCO LANTERNA DE LED NO MEU JOGO DE BUS
DUVIDA SCRIPT DO MARCOS SELEÇÃO DE PERSONAGEM !
SOBRE "IK" INVERSE KINEMATICS
Duvida como instância um game objeto com Raycast
Problema Com Virtual Buttons Help me ;-;
Hoje à(s) 8:15 pm
Hoje à(s) 8:10 pm
Hoje à(s) 7:47 pm
Hoje à(s) 7:26 pm
Hoje à(s) 6:49 pm
Hoje à(s) 6:38 pm
Hoje à(s) 6:36 pm
Hoje à(s) 6:19 pm
Hoje à(s) 6:14 pm
Hoje à(s) 5:02 pm
Hoje à(s) 4:41 pm
Hoje à(s) 3:08 pm
Hoje à(s) 1:25 pm
Hoje à(s) 1:07 pm
Hoje à(s) 12:56 pm
Hoje à(s) 12:23 pm
Hoje à(s) 12:22 pm
Hoje à(s) 12:21 pm
Hoje à(s) 8:23 am
Ontem à(s) 10:13 pm
Ontem à(s) 10:04 pm
Ontem à(s) 9:39 pm
Ontem à(s) 9:34 pm
Ontem à(s) 9:25 pm
Ontem à(s) 9:17 pm
Ontem à(s) 4:48 pm
Ontem à(s) 4:08 pm
Ontem à(s) 3:21 pm
Ontem à(s) 2:22 pm
Ontem à(s) 1:45 pm
Ontem à(s) 1:23 pm
Ontem à(s) 1:16 pm
Ontem à(s) 2:31 am
Ontem à(s) 1:38 am
Ontem à(s) 12:07 am
Sex Jan 20, 2017 10:23 pm
Sex Jan 20, 2017 9:23 pm
Sex Jan 20, 2017 8:04 pm
Sex Jan 20, 2017 7:56 pm
Sex Jan 20, 2017 7:51 pm
Sex Jan 20, 2017 2:53 pm
Sex Jan 20, 2017 10:34 am
Sex Jan 20, 2017 5:22 am
Qui Jan 19, 2017 10:05 pm
Qui Jan 19, 2017 10:04 pm
Qui Jan 19, 2017 8:24 pm
Qui Jan 19, 2017 3:31 pm
Qui Jan 19, 2017 2:41 pm
Qui Jan 19, 2017 11:02 am
Qui Jan 19, 2017 10:17 am
Qui Jan 19, 2017 9:58 am
Qua Jan 18, 2017 11:04 pm
Qua Jan 18, 2017 10:35 pm
Qua Jan 18, 2017 10:10 pm
Qua Jan 18, 2017 8:27 pm
Qua Jan 18, 2017 8:27 pm
Qua Jan 18, 2017 7:45 pm
Qua Jan 18, 2017 7:21 pm
Qua Jan 18, 2017 5:32 pm
Qua Jan 18, 2017 4:53 pm
Qua Jan 18, 2017 3:58 pm
Qua Jan 18, 2017 3:04 pm
Qua Jan 18, 2017 2:07 pm
Qua Jan 18, 2017 12:59 pm
Qua Jan 18, 2017 12:23 pm
Qua Jan 18, 2017 12:22 pm
Qua Jan 18, 2017 4:58 am
Ter Jan 17, 2017 8:57 pm
Ter Jan 17, 2017 8:17 pm
Ter Jan 17, 2017 6:54 pm
Ter Jan 17, 2017 5:13 pm
Ter Jan 17, 2017 4:33 pm
Ter Jan 17, 2017 1:19 pm
Ter Jan 17, 2017 11:57 am
Ter Jan 17, 2017 10:16 am
gametrueheroes
Matheus sonico
joabr
dimmuo
kalel013
Feoliveira
LukkaFA
Fabroid
Kenji Haruno
John Rambo
John Rambo
John Rambo
MateusWTP
kalel013
kalel013
lucasfera15
GabrielRaaposo
lucasfera15
dstaroski
anizioNoob
anizioNoob
TassoCervi
George Lucas Vieira
George Lucas Vieira
MateusWTP
John Rambo
Alerson Software
OnofreUnity
joabr
Callyde Jr
Moa
weslleyFx
Alerson Software
Dayzr
LukkaFA
joabr
AndyShow
weslleyFx
weslleyFx
weslleyFx
GustavoMaster
AndyShow
AndyShow
Joker 22
lucasfera15
GustavoMaster
GustavoMaster
Kenji Haruno
luKkaSs
AndyShow
joabr
poker14k
artplayer
Pedro Canassa Garcia
pablo10544
LegendGames
artplayer
AndyShow
artplayer
weslleyFx
Weverton Borges da Silva
Hardencio
AndyShow
AndyShow
John Rambo
John Rambo
MonsaM
John Rambo
dstaroski
MonsaM
John Rambo
LuizFixa3D
XavezZ
R R
anizioNoob

[TUTORIAL] Sistema COMPLETO de câmeras

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

TUTORIAL [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por MarcosSchultz em Qua Jan 11, 2017 3:59 pm

Olá galera, desenvolvi este sistema completo de câmeras para o meu asset de veículos, e estou disponibilizando para vocês Very Happy

Vídeo:





//A camera "OlharParaOPlayer" fica olhando para o objeto que contém o script. Não necessita estar filiada ao jogador
//A camera "primeiraPessoa" funciona como um MouseLook, e necessita estar filiada ao jogador
//A camera "SeguirPlayer" segue o objeto que contém o script.
//A camera "orbital" orbita o objeto que contém o script
//A camera "parada" não possui função alguma além de ser ativada ou desativada. Pode estar em qualquer lugar
//A camera "paradaRetilinea" fica sempre na mesma posição e rotação, mas mantém o horizonte sempre reto. Ideal para visão de veículos.
//A camera "OrbitalQueSeque" é uma camera orbital que assume a função de seguir o player caso não exista nenhum input do Mouse

//A camera "CameraEstiloETS" é uma câmera em primeira pessoa que funciona como um MouseLook, mas se desloca para fora do veículo quando olhamos para a esquerda.


Script utilizado:
Código:
using UnityEngine;
using System;

//
//A camera "OlharParaOPlayer" fica olhando para o objeto que contém o script. Não necessita estar filiada ao jogador
//A camera "primeiraPessoa" funciona como um MouseLook, e necessita estar filiada ao jogador
//A camera "SeguirPlayer" segue o objeto que contém o script.
//A camera "orbital" orbita o objeto que contém o script
//A camera "parada" não possui função alguma além de ser ativada ou desativada. Pode estar em qualquer lugar
//A camera "paradaRetilinea" fica sempre na mesma posição e rotação, mas mantém o horizonte sempre reto. Ideal para visão de veículos.
//A camera "OrbitalQueSeque" é uma camera orbital que assume a função de seguir o player caso não exista nenhum input do Mouse
//A camera "CameraEstiloETS" é uma câmera em primeira pessoa que funciona como um MouseLook, mas se desloca para fora do veículo quando olhamos para a esquerda.
//

[Serializable]
public class TipoDeCam {
 public Camera _camera;
 public enum TipoRotac{OlharParaOPlayer, primeiraPessoa, SeguirPlayer, orbital, parada, paradaRetilinea, OrbitalQueSegue, CameraEstiloETS}
 public TipoRotac TipoDeRotacao = TipoRotac.OlharParaOPlayer;
 [Range(0.0f,1.0f)] public float volume = 1;
}
[Serializable]
public class ConfigsCamera {
 public KeyCode TeclaTrocarDeCamera = KeyCode.C;
 [Range(1,20)] public float sensibilidade = 10.0f;
 [Range(0,360)] public float anguloHorizntal = 65.0f;
 [Range(0,85)] public float anguloVertical = 20.0f;
 [Range(1,20)] public float velocidadeCameraSeguir = 5.0f;
 [Range(1,30)] public float velocidadeCameraGirar = 15.0f;
 [Range(0.5f,3.0f)] public float deslocamentoCameraETS = 2.0f;
 public ConfigsCameraOrbital cameraOrbital;
}
[Serializable]
public class ConfigsCameraOrbital {
 [Range(0.01f,2.0f)] public float sensibilidade = 0.8f, velocidadeScrool = 1.0f, velocidadeY = 0.5f;
 [Range(3.0f,20.0f)] public float distanciaMinima = 5.0f;
 [Range(20.0f,1000.0f)] public float distanciaMaxima = 50.0f;
}

public class Cameras : MonoBehaviour {

 public TipoDeCam[] cameras;
 public ConfigsCamera ConfiguracoesCameras;

 private int indiceCameras = 0;
 private float rotacaoX = 0.0f,rotacaoY = 0.0f, tempoOrbit = 0.0f, rotacaoXETS = 0.0f, rotacaoYETS = 0.0f;
 private GameObject[] objetosPosicCamerasParadasRetilineas;
 private Quaternion[] rotacaoOriginalCameras;
 private GameObject[] posicaoOriginalCameras;
 private float[] xOrbit,yOrbit,distanciaCameraOrbit;
 private bool orbitalAtiv;
 Vector3[] posicOriginalCameraETS;
 void Awake(){
 objetosPosicCamerasParadasRetilineas = new GameObject[cameras.Length];
 rotacaoOriginalCameras = new Quaternion[cameras.Length];
 posicaoOriginalCameras = new GameObject[cameras.Length];
 posicOriginalCameraETS = new Vector3[cameras.Length];
 xOrbit = new float[cameras.Length];
 yOrbit = new float[cameras.Length];
 distanciaCameraOrbit = new float[cameras.Length];
 for (int x = 0; x < cameras.Length; x++) {
 distanciaCameraOrbit[x] = ConfiguracoesCameras.cameraOrbital.distanciaMinima;
 if (cameras [x]._camera == null) {
 Debug.LogError ("Não existe nenhuma camera linkada no indice  " + x);
 }
 if (cameras [x].TipoDeRotacao == TipoDeCam.TipoRotac.paradaRetilinea) {
 objetosPosicCamerasParadasRetilineas [x] = new GameObject ("posicaoDaCameraParadaRetilinea"+x);
 objetosPosicCamerasParadasRetilineas [x].transform.parent = cameras [x]._camera.transform;
 objetosPosicCamerasParadasRetilineas [x].transform.localPosition = new Vector3 (0, 0, 1.0f);
 objetosPosicCamerasParadasRetilineas [x].transform.parent = transform;
 }
 if (cameras [x].TipoDeRotacao == TipoDeCam.TipoRotac.primeiraPessoa) {
 rotacaoOriginalCameras [x] = cameras [x]._camera.transform.localRotation;
 }
 if (cameras [x].TipoDeRotacao == TipoDeCam.TipoRotac.SeguirPlayer) {
 posicaoOriginalCameras [x] = new GameObject ("posicaoDaCameraSeguir" + x);
 posicaoOriginalCameras [x].transform.parent = transform;
 posicaoOriginalCameras [x].transform.localPosition = cameras [x]._camera.transform.localPosition;
 transform.gameObject.layer = 2;
 foreach (Transform trans in this.gameObject.GetComponentsInChildren<Transform>(true)) {
 trans.gameObject.layer = 2;
 }
 }
 if (cameras [x].TipoDeRotacao == TipoDeCam.TipoRotac.orbital) {
 xOrbit [x] = cameras [x]._camera.transform.eulerAngles.x;
 yOrbit [x] = cameras [x]._camera.transform.eulerAngles.y;
 transform.gameObject.layer = 2;
 foreach (Transform trans in this.gameObject.GetComponentsInChildren<Transform>(true)) {
 trans.gameObject.layer = 2;
 }
 }
 if (cameras [x].TipoDeRotacao == TipoDeCam.TipoRotac.OrbitalQueSegue) {
 xOrbit [x] = cameras [x]._camera.transform.eulerAngles.x;
 yOrbit [x] = cameras [x]._camera.transform.eulerAngles.y;
 //
 posicaoOriginalCameras [x] = new GameObject ("posicaoDaCameraSeguir" + x);
 posicaoOriginalCameras [x].transform.parent = transform;
 posicaoOriginalCameras [x].transform.localPosition = cameras [x]._camera.transform.localPosition;
 //
 transform.gameObject.layer = 2;
 foreach (Transform trans in this.gameObject.GetComponentsInChildren<Transform>(true)) {
 trans.gameObject.layer = 2;
 }
 }
 if (cameras [x].TipoDeRotacao == TipoDeCam.TipoRotac.CameraEstiloETS) {
 rotacaoOriginalCameras [x] = cameras [x]._camera.transform.localRotation;
 posicOriginalCameraETS [x] = cameras [x]._camera.transform.localPosition;
 }
 AudioListener captadorDeSom = cameras [x]._camera.GetComponent<AudioListener> ();
 if (captadorDeSom == null) {
 cameras [x]._camera.transform.gameObject.AddComponent (typeof(AudioListener));
 }
 }
 }

 void Start(){
 AtivarCameras (indiceCameras);
 }

 void AtivarCameras (int indicePedido){
 if (cameras.Length > 0) {
 for (int x = 0; x < cameras.Length; x++) {
 if (x == indicePedido) {
 cameras [x]._camera.gameObject.SetActive (true);
 } else {
 cameras [x]._camera.gameObject.SetActive (false);
 }
 }
 }
 }

 void GerenciarCameras(){
 for (int x = 0; x < cameras.Length; x++) {
 if (cameras [x].TipoDeRotacao == TipoDeCam.TipoRotac.SeguirPlayer) {
 if (cameras [x]._camera.isActiveAndEnabled) {
 cameras [x]._camera.transform.parent = null;
 } else {
 cameras [x]._camera.transform.parent = transform;
 }
 }
 }
 //
 AudioListener.volume = cameras [indiceCameras].volume;
 //
 float velocidadeTimeScale = 1.0f / Time.timeScale;
 switch (cameras[indiceCameras].TipoDeRotacao ) {
 case TipoDeCam.TipoRotac.parada:
 //camera parada, nao faz nada
 break;
 case TipoDeCam.TipoRotac.paradaRetilinea:
 var newRotationDest = Quaternion.LookRotation(objetosPosicCamerasParadasRetilineas[indiceCameras].transform.position - cameras [indiceCameras]._camera.transform.position, Vector3.up);
 cameras [indiceCameras]._camera.transform.rotation = Quaternion.Slerp(cameras [indiceCameras]._camera.transform.rotation, newRotationDest, Time.deltaTime * 15.0f);
 break;
 case TipoDeCam.TipoRotac.OlharParaOPlayer:
 cameras [indiceCameras]._camera.transform.LookAt (transform.position);
 break;
 case TipoDeCam.TipoRotac.primeiraPessoa:
 rotacaoX += Input.GetAxis ("Mouse X") * ConfiguracoesCameras.sensibilidade;
 rotacaoY += Input.GetAxis ("Mouse Y") * ConfiguracoesCameras.sensibilidade;
 rotacaoX = ClampAngle (rotacaoX, -ConfiguracoesCameras.anguloHorizntal, ConfiguracoesCameras.anguloHorizntal);
 rotacaoY = ClampAngle (rotacaoY, -ConfiguracoesCameras.anguloVertical, ConfiguracoesCameras.anguloVertical);
 Quaternion xQuaternion = Quaternion.AngleAxis (rotacaoX, Vector3.up);
 Quaternion yQuaternion = Quaternion.AngleAxis (rotacaoY, -Vector3.right);
 Quaternion rotacFinal = rotacaoOriginalCameras [indiceCameras] * xQuaternion * yQuaternion;
 cameras [indiceCameras]._camera.transform.localRotation = Quaternion.Lerp (cameras [indiceCameras]._camera.transform.localRotation, rotacFinal, Time.deltaTime*10.0f*velocidadeTimeScale);
 break;
 case TipoDeCam.TipoRotac.SeguirPlayer:
 //camera seguir
 RaycastHit hit;
 float velocidade = ConfiguracoesCameras.velocidadeCameraSeguir;
 if (!Physics.Linecast (transform.position, posicaoOriginalCameras [indiceCameras].transform.position)) {
 cameras [indiceCameras]._camera.transform.position = Vector3.Lerp (cameras [indiceCameras]._camera.transform.position, posicaoOriginalCameras [indiceCameras].transform.position, Time.deltaTime * velocidade);
 }
 else if(Physics.Linecast(transform.position, posicaoOriginalCameras [indiceCameras].transform.position,out hit)){
 cameras [indiceCameras]._camera.transform.position = Vector3.Lerp(cameras [indiceCameras]._camera.transform.position, hit.point,Time.deltaTime * velocidade);
 }
 //camera rodar
 float velocidadeGir = ConfiguracoesCameras.velocidadeCameraGirar;
 var newRotation = Quaternion.LookRotation(transform.position - cameras [indiceCameras]._camera.transform.position, Vector3.up);
 cameras [indiceCameras]._camera.transform.rotation = Quaternion.Slerp(cameras [indiceCameras]._camera.transform.rotation, newRotation, Time.deltaTime * velocidadeGir);
 break;
 case TipoDeCam.TipoRotac.orbital:
 float sensibilidade = ConfiguracoesCameras.cameraOrbital.sensibilidade;
 float distMin = ConfiguracoesCameras.cameraOrbital.distanciaMinima;
 float distMax = ConfiguracoesCameras.cameraOrbital.distanciaMaxima;
 float velocidadeScrool = ConfiguracoesCameras.cameraOrbital.velocidadeScrool * 50.0f;
 float sensYMouse = ConfiguracoesCameras.cameraOrbital.velocidadeY * 10.0f;
 //
 RaycastHit hit2;
 if (!Physics.Linecast (transform.position, cameras [indiceCameras]._camera.transform.position)) {

 } else if (Physics.Linecast (transform.position, cameras [indiceCameras]._camera.transform.position, out hit2)) {
 distanciaCameraOrbit [indiceCameras] = Vector3.Distance (transform.position, hit2.point);
 distMin = Mathf.Clamp ((Vector3.Distance (transform.position, hit2.point)), distMin * 0.5f, distMax);
 }
 //
 xOrbit [indiceCameras] += Input.GetAxis ("Mouse X") * (sensibilidade * distanciaCameraOrbit [indiceCameras])/(distanciaCameraOrbit [indiceCameras]*0.5f);
 yOrbit [indiceCameras] -= Input.GetAxis ("Mouse Y") * sensibilidade * sensYMouse;
 yOrbit [indiceCameras] = ClampAngle (yOrbit [indiceCameras], 0.0f, 85.0f);
 Quaternion rotation = Quaternion.Euler (yOrbit [indiceCameras], xOrbit [indiceCameras], 0);
 distanciaCameraOrbit [indiceCameras] = Mathf.Clamp (distanciaCameraOrbit [indiceCameras] - Input.GetAxis ("Mouse ScrollWheel") * velocidadeScrool, distMin, distMax);
 Vector3 negDistance = new Vector3 (0.0f, 0.0f, -distanciaCameraOrbit [indiceCameras]);
 Vector3 position = rotation * negDistance + transform.position;
 Vector3 posicAtual = cameras [indiceCameras]._camera.transform.position;
 Quaternion rotacAtual = cameras [indiceCameras]._camera.transform.rotation;
 cameras [indiceCameras]._camera.transform.rotation = Quaternion.Lerp(rotacAtual,rotation,Time.deltaTime*5.0f*velocidadeTimeScale);
 cameras [indiceCameras]._camera.transform.position = Vector3.Lerp(posicAtual,position,Time.deltaTime*5.0f*velocidadeTimeScale);
 break;
 case TipoDeCam.TipoRotac.OrbitalQueSegue:
 float movX = Input.GetAxis ("Mouse X");
 float movY = Input.GetAxis ("Mouse Y");
 float movZ = Input.GetAxis ("Mouse ScrollWheel");

 if (movX > 0.0f || movY > 0.0f || movZ > 0.0f) {
 orbitalAtiv = true;
 tempoOrbit = 0.0f;
 } else {
 tempoOrbit += Time.deltaTime;
 }
 if (tempoOrbit > 3.0f) {
 tempoOrbit = 3.1f;
 orbitalAtiv = false;
 }
 if(orbitalAtiv == true){
 float _sensibilidade = ConfiguracoesCameras.cameraOrbital.sensibilidade;
 float _distMin = ConfiguracoesCameras.cameraOrbital.distanciaMinima;
 float _distMax = ConfiguracoesCameras.cameraOrbital.distanciaMaxima;
 float _velocidadeScrool = ConfiguracoesCameras.cameraOrbital.velocidadeScrool * 50.0f;
 float _sensYMouse = ConfiguracoesCameras.cameraOrbital.velocidadeY * 10.0f;
 //
 RaycastHit _hit;
 if (!Physics.Linecast (transform.position, cameras [indiceCameras]._camera.transform.position)) {

 } else if (Physics.Linecast (transform.position, cameras [indiceCameras]._camera.transform.position, out _hit)) {
 distanciaCameraOrbit [indiceCameras] = Vector3.Distance (transform.position, _hit.point);
 _distMin = Mathf.Clamp ((Vector3.Distance (transform.position, _hit.point)), _distMin * 0.5f, _distMax);
 }
 //
 xOrbit [indiceCameras] += movX * (_sensibilidade * distanciaCameraOrbit [indiceCameras]) / (distanciaCameraOrbit [indiceCameras] * 0.5f);
 yOrbit [indiceCameras] -= movY * _sensibilidade * _sensYMouse;
 yOrbit [indiceCameras] = ClampAngle (yOrbit [indiceCameras], 0.0f, 85.0f);
 Quaternion _rotation = Quaternion.Euler (yOrbit [indiceCameras], xOrbit [indiceCameras], 0);
 distanciaCameraOrbit [indiceCameras] = Mathf.Clamp (distanciaCameraOrbit [indiceCameras] - movZ * _velocidadeScrool, _distMin, _distMax);
 Vector3 _negDistance = new Vector3 (0.0f, 0.0f, -distanciaCameraOrbit [indiceCameras]);
 Vector3 _position = _rotation * _negDistance + transform.position;
 Vector3 _posicAtual = cameras [indiceCameras]._camera.transform.position;
 Quaternion _rotacAtual = cameras [indiceCameras]._camera.transform.rotation;
 cameras [indiceCameras]._camera.transform.rotation = Quaternion.Lerp (_rotacAtual, _rotation, Time.deltaTime * 5.0f * velocidadeTimeScale);
 cameras [indiceCameras]._camera.transform.position = Vector3.Lerp (_posicAtual, _position, Time.deltaTime * 5.0f * velocidadeTimeScale);
 } else {
 RaycastHit __hit;
 float __velocidade = ConfiguracoesCameras.velocidadeCameraSeguir;
 if (!Physics.Linecast (transform.position, posicaoOriginalCameras [indiceCameras].transform.position)) {
 cameras [indiceCameras]._camera.transform.position = Vector3.Lerp (cameras [indiceCameras]._camera.transform.position, posicaoOriginalCameras [indiceCameras].transform.position, Time.deltaTime * __velocidade);
 }
 else if(Physics.Linecast(transform.position, posicaoOriginalCameras [indiceCameras].transform.position,out __hit)){
 cameras [indiceCameras]._camera.transform.position = Vector3.Lerp(cameras [indiceCameras]._camera.transform.position, __hit.point,Time.deltaTime * __velocidade);
 }
 //camera rodar
 float __velocidadeGir = ConfiguracoesCameras.velocidadeCameraGirar;
 var __newRotation = Quaternion.LookRotation(transform.position - cameras [indiceCameras]._camera.transform.position, Vector3.up);
 cameras [indiceCameras]._camera.transform.rotation = Quaternion.Slerp(cameras [indiceCameras]._camera.transform.rotation, __newRotation, Time.deltaTime * __velocidadeGir);
 }
 break;
 case TipoDeCam.TipoRotac.CameraEstiloETS:
 rotacaoXETS += Input.GetAxis ("Mouse X") * ConfiguracoesCameras.sensibilidade;
 rotacaoYETS += Input.GetAxis ("Mouse Y") * ConfiguracoesCameras.sensibilidade;
 Vector3 novaPosicao = new Vector3 (posicOriginalCameraETS [indiceCameras].x + Mathf.Clamp (rotacaoXETS / 50 + (ConfiguracoesCameras.deslocamentoCameraETS/3.0f), -ConfiguracoesCameras.deslocamentoCameraETS, 0), posicOriginalCameraETS [indiceCameras].y, posicOriginalCameraETS [indiceCameras].z);
 cameras [indiceCameras]._camera.transform.localPosition = Vector3.Lerp (cameras [indiceCameras]._camera.transform.localPosition, novaPosicao, Time.deltaTime * 10.0f);
 rotacaoXETS = ClampAngle (rotacaoXETS, -180, 80);
 rotacaoYETS = ClampAngle (rotacaoYETS, -60, 60);
 Quaternion _xQuaternionETS = Quaternion.AngleAxis (rotacaoXETS, Vector3.up);
 Quaternion _yQuaternionETS = Quaternion.AngleAxis (rotacaoYETS, -Vector3.right);
 Quaternion _rotacFinalETS = rotacaoOriginalCameras [indiceCameras] * _xQuaternionETS * _yQuaternionETS;
 cameras [indiceCameras]._camera.transform.localRotation = Quaternion.Lerp (cameras [indiceCameras]._camera.transform.localRotation, _rotacFinalETS, Time.deltaTime * 10.0f * velocidadeTimeScale);
 break;
 }
 }

 public static float ClampAngle (float angulo, float min, float max){
 if (angulo < -360F) { angulo += 360F; }
 if (angulo > 360F) { angulo -= 360F; }
 return Mathf.Clamp (angulo, min, max);
 }

 void Update(){
 if (Input.GetKeyDown (ConfiguracoesCameras.TeclaTrocarDeCamera) && indiceCameras < (cameras.Length - 1)) {
 indiceCameras++;
 AtivarCameras (indiceCameras);
 } else if (Input.GetKeyDown (ConfiguracoesCameras.TeclaTrocarDeCamera) && indiceCameras >= (cameras.Length - 1)) {
 indiceCameras = 0;
 AtivarCameras (indiceCameras);
 }
 }

 void LateUpdate(){
 if (cameras.Length > 0) {
 GerenciarCameras ();
 }
 }
}


Última edição por MarcosSchultz em Sex Jan 13, 2017 2:52 pm, editado 3 vez(es)

MarcosSchultz
Administrador

Masculino PONTOS : 7531
REPUTAÇÃO : 995
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por dstaroski em Qua Jan 11, 2017 4:29 pm

Parabéns cara! Excelente tutorial! Irá ajudar muita gente! Abraço!

dstaroski
Instrutor

Masculino PONTOS : 644
REPUTAÇÃO : 160
Idade : 27
Áreas de atuação : Téc. Hardware e Redes, Programação C#, Desenvolvimento Android

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por AndyShow em Qua Jan 11, 2017 7:08 pm

Muito Bom, Vai Ajudar Varias pessoas!

AndyShow
Instrutor

Masculino PONTOS : 1405
REPUTAÇÃO : 305
Idade : 33
Áreas de atuação : Blender e Unity
Respeito as regras :

Ver perfil do usuário http://mundounity3d.forumbom.com/

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por MarcosSchultz em Qua Jan 11, 2017 7:20 pm

Vlw Very Happy

Ahh, lembrando que se alguém sentir falta de algum sistema, pode comentar ai... se for possível, editarei o script e o adicionarei ao sistema Very Happy

MarcosSchultz
Administrador

Masculino PONTOS : 7531
REPUTAÇÃO : 995
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por LucioHenrique em Qua Jan 11, 2017 8:05 pm

marcos  o meu deu erro
diz que precisa estar derivada de um
 monobehaviour

LucioHenrique
Iniciante
Iniciante

PONTOS : 22
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por MarcosSchultz em Qua Jan 11, 2017 8:28 pm

LucioHenrique escreveu:marcos  o meu deu erro
diz que precisa estar derivada de um
 monobehaviour

Então você não copiou o script todo

MarcosSchultz
Administrador

Masculino PONTOS : 7531
REPUTAÇÃO : 995
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

TUTORIAL 3rd Camera para carros estilo GTA

Mensagem por AnderGames em Qua Jan 11, 2017 8:58 pm

Olá!
Estou precisando de ajuda em um script.
Eu queria um que quando o jogador estiver movendo o mouse, a camera se comportasse como uma orbital, mas quando o mouse estiver parado, ela lentamente começa a se comportar como uma "CarCamera"
Alguém pode me ajudar?

AnderGames
Iniciante
Iniciante

PONTOS : 214
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por MarcosSchultz em Qua Jan 11, 2017 9:02 pm

AnderGames escreveu:Olá!
Estou precisando de ajuda em um script.
Eu queria um que quando o jogador estiver movendo o mouse, a camera se comportasse como uma orbital, mas quando o mouse estiver parado, ela lentamente começa a se comportar como uma "CarCamera"
Alguém pode me ajudar?

Vou ver se implemento isto no sistema

MarcosSchultz
Administrador

Masculino PONTOS : 7531
REPUTAÇÃO : 995
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por AnderGames em Qua Jan 11, 2017 9:36 pm

MarcosSchultz escreveu:
AnderGames escreveu:Olá!
Estou precisando de ajuda em um script.
Eu queria um que quando o jogador estiver movendo o mouse, a camera se comportasse como uma orbital, mas quando o mouse estiver parado, ela lentamente começa a se comportar como uma "CarCamera"
Alguém pode me ajudar?

Vou ver se implemento isto no sistema

Obrigado ^^

AnderGames
Iniciante
Iniciante

PONTOS : 214
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por MarcosSchultz em Sex Jan 13, 2017 12:27 am

Script atualizado... um novo sistema chamado "OrbitalQueSegue" foi adicionado.

Várias outras atualizações para este script ainda virão.

MarcosSchultz
Administrador

Masculino PONTOS : 7531
REPUTAÇÃO : 995
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por Chilinger em Sex Jan 13, 2017 9:20 am

Marcos vc usou a minha ideia de script kkkkk

Chilinger
MembroAvançado

Masculino PONTOS : 1058
REPUTAÇÃO : 26
Idade : 22
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por MarcosSchultz em Sex Jan 13, 2017 2:35 pm

usei é?


@@ mais um estilo de câmera implementado... Agora temos "CameraEstiloETS", que funciona como uma camera do EuroTruckSimulador... Básicamente é uma camera em primeira pessoa, com MouseLook, mas caso você olhe para a esquerda, a câmera se desloca também, como se você estivesse olhando para fora do veículo.

Mais sugestões, é só pedir Very Happy

MarcosSchultz
Administrador

Masculino PONTOS : 7531
REPUTAÇÃO : 995
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por Xenguei em Seg Jan 16, 2017 7:54 am

Não consegui colocar, aparece isso:

Xenguei
Iniciante
Iniciante

PONTOS : 8
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por Xenguei em Seg Jan 16, 2017 8:15 am

Arrumei já

Xenguei
Iniciante
Iniciante

PONTOS : 8
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por Chilinger em Seg Jan 16, 2017 10:48 am

As class mas adianta bastante.

Chilinger
MembroAvançado

Masculino PONTOS : 1058
REPUTAÇÃO : 26
Idade : 22
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por MonsaM em Ter Jan 17, 2017 6:05 pm

eu queria uma câmera que fosse orbital mais quando eu mexer o mouse e câmera rodar queria que o player rodasse também

MonsaM
Iniciante
Iniciante

PONTOS : 44
REPUTAÇÃO : 2
Idade : 15
Áreas de atuação : Tudo oque puder tentarei kkkkk
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema COMPLETO de câmeras

Mensagem por MonsaM em Qua Jan 18, 2017 4:58 am

tem como se fazer um tutorial

MonsaM
Iniciante
Iniciante

PONTOS : 44
REPUTAÇÃO : 2
Idade : 15
Áreas de atuação : Tudo oque puder tentarei kkkkk
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum