[RESOLVIDO] Como usar o touchpad da unity para orbital o personagem em terceira pessoas ?
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Como usar o touchpad da unity para orbital o personagem em terceira pessoas ?
Eu estava usando o script do Marcos no meu jogo neste tópico
https://www.schultzgames.com/t2594-tutorial-camera-orbital-para-android-touch?highlight=touch
mas eu queria saber se tem alguma forma de fazer a camera orbitar apenas tocando na imagem que contem o script TouchPad agradeço a ajuda desde já
https://www.schultzgames.com/t2594-tutorial-camera-orbital-para-android-touch?highlight=touch
mas eu queria saber se tem alguma forma de fazer a camera orbitar apenas tocando na imagem que contem o script TouchPad agradeço a ajuda desde já
CaioItz- Membro
- PONTOS : 2604
REPUTAÇÃO : 21
Respeito as regras :
Re: [RESOLVIDO] Como usar o touchpad da unity para orbital o personagem em terceira pessoas ?
CaioItz escreveu:Eu estava usando o script do Marcos no meu jogo neste tópico
https://www.schultzgames.com/t2594-tutorial-camera-orbital-para-android-touch?highlight=touch
mas eu queria saber se tem alguma forma de fazer a camera orbitar apenas tocando na imagem que contem o script TouchPad agradeço a ajuda desde já
Você quer fazer tipo um Joystick para a câmera ou quer apenas limitar uma área de toque?
Re: [RESOLVIDO] Como usar o touchpad da unity para orbital o personagem em terceira pessoas ?
Marcos pode deixar eu ja arrumei eu queria essa segunda opção e era só trocar o "input" por "CrossPlataformInputManager"
- Código:
using System.Collections;
using System;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;
[Serializable]
public class ConfigsDaCameraOrbital {
[Range(0.01f,2.0f)] public float sensibilidade = 0.8f, velocidadeScrool = 1.0f, velocidadeY = 0.5f;
[Range(3.0f,200.0f)] public float distanciaMinima = 5.0f;
[Range(0.0f,200.0f)] public float distanciaMaxima = 50.0f;
}
public class CameraOrbital : MonoBehaviour {
float xOrbit, yOrbit, distanciaCameraOrbit;
public GameObject ObjetoCamera;
public ConfigsDaCameraOrbital Configuracoes;
void Start () {
distanciaCameraOrbit = Configuracoes.distanciaMinima;
xOrbit = ObjetoCamera.transform.eulerAngles.x;
yOrbit = ObjetoCamera.transform.eulerAngles.y;
transform.gameObject.layer = 2;
}
void LateUpdate () {
float velocidadeTimeScale = 1.0f / Time.timeScale;
float sensibilidade = Configuracoes.sensibilidade;
float distMin = Configuracoes.distanciaMinima;
float distMax = Configuracoes.distanciaMaxima;
float velocidadeScrool = Configuracoes.velocidadeScrool * 50.0f;
float sensYMouse = Configuracoes.velocidadeY * 10.0f;
//
RaycastHit hit;
if (!Physics.Linecast (transform.position, ObjetoCamera.transform.position)) {
} else if (Physics.Linecast (transform.position, ObjetoCamera.transform.position, out hit)) {
distanciaCameraOrbit = Vector3.Distance (transform.position, hit.point);
distMin = Mathf.Clamp ((Vector3.Distance (transform.position, hit.point)), distMin * 0.5f, distMax);
}
//
xOrbit += CrossPlatformInputManager.GetAxis ("Mouse X") * (sensibilidade * distanciaCameraOrbit)/(distanciaCameraOrbit*0.5f);
yOrbit -= CrossPlatformInputManager.GetAxis ("Mouse Y") * sensibilidade * sensYMouse;
yOrbit = ClampAngle (yOrbit, 0.0f, 85.0f);
Quaternion rotation = Quaternion.Euler (yOrbit, xOrbit , 0);
distanciaCameraOrbit = Mathf.Clamp (distanciaCameraOrbit - Input.GetAxis ("Mouse ScrollWheel") * velocidadeScrool, distMin, distMax);
Vector3 negDistance = new Vector3 (0.0f, 0.0f, -distanciaCameraOrbit);
Vector3 position = rotation * negDistance + transform.position;
Vector3 posicAtual = ObjetoCamera.transform.position;
Quaternion rotacAtual = ObjetoCamera.transform.rotation;
ObjetoCamera.transform.rotation = Quaternion.Lerp(rotacAtual,rotation,Time.deltaTime*5.0f*velocidadeTimeScale);
ObjetoCamera.transform.position = Vector3.Lerp(posicAtual,position,Time.deltaTime*5.0f*velocidadeTimeScale);
}
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);
}
}
CaioItz- Membro
- PONTOS : 2604
REPUTAÇÃO : 21
Respeito as regras :
Tópicos semelhantes
» [Resolvido] Como usar o Multi Touch para movimentar um personagem ?
» [RESOLVIDO] Como faço para o personagem entrar e sair do carro?
» Como usar um Boneco como Terceira Pessoa
» [RESOLVIDO] Como fazer o canvas ficar atrás do personagem? Unity 2D
» [RESOLVIDO] Como criar uma Barra de Ataque speed para um personagem
» [RESOLVIDO] Como faço para o personagem entrar e sair do carro?
» Como usar um Boneco como Terceira Pessoa
» [RESOLVIDO] Como fazer o canvas ficar atrás do personagem? Unity 2D
» [RESOLVIDO] Como criar uma Barra de Ataque speed para um personagem
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos