[DÚVIDA] Joystick Android FPS Controller
3 participantes
Página 1 de 1
[DÚVIDA] Joystick Android FPS Controller
Olá!
eu fiz um joystick para o meu FPS Controller andar no android. e funciona... mas ele fica sem os efeitos de som dos passos e movimento da camera, que já esta incluso no script do FPSController....
Alguem sabe um jeito de adaptar o script do FPSController para o android mantendo esses efeitos? ou alguma outra maneira de fazer isto?
Obrigado!
eu fiz um joystick para o meu FPS Controller andar no android. e funciona... mas ele fica sem os efeitos de som dos passos e movimento da camera, que já esta incluso no script do FPSController....
Alguem sabe um jeito de adaptar o script do FPSController para o android mantendo esses efeitos? ou alguma outra maneira de fazer isto?
Obrigado!
Última edição por HudsonJeff em Sex Jul 29, 2016 4:01 pm, editado 2 vez(es)
HudsonJeff- Iniciante
- PONTOS : 3122
REPUTAÇÃO : 1
Respeito as regras :
HudsonJeff- Iniciante
- PONTOS : 3122
REPUTAÇÃO : 1
Respeito as regras :
Re: [DÚVIDA] Joystick Android FPS Controller
Cara, você precisa postar como fez esse seu JoysTick, de preferência postando o script.
para deixá-lo de acordo com o FPSController, provavelmente será necessário alterar o script do controlador também
para deixá-lo de acordo com o FPSController, provavelmente será necessário alterar o script do controlador também
Re: [DÚVIDA] Joystick Android FPS Controller
aki está. fiz baseado no tutorial do ismarspn:
- Código:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;
public class VirtualJoystick : MonoBehaviour, IDragHandler, IPointerUpHandler, IPointerDownHandler {
private Image bgImg;
private Image joystickImg;
private Vector3 inputVector;
public GameObject player;
public float speed;
private void Start(){
bgImg = GetComponent<Image> ();
joystickImg = transform.GetChild (0).GetComponent<Image> ();
}
public virtual void OnDrag(PointerEventData ped){
Vector2 pos;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle (bgImg.rectTransform
, ped.position
, ped.pressEventCamera
, out pos))
{
pos.x = (pos.x / bgImg.rectTransform.sizeDelta.x);
pos.y = (pos.y / bgImg.rectTransform.sizeDelta.y);
inputVector = new Vector3(pos.x*3,0, pos.y*3);
inputVector = (inputVector.magnitude > 1.0f)?inputVector.normalized:inputVector;
// Move Joystick IMG
joystickImg.rectTransform.anchoredPosition =
new Vector3(inputVector.x * (bgImg.rectTransform.sizeDelta.x/3)
,inputVector.z * (bgImg.rectTransform.sizeDelta.y/3));
}
}
public virtual void OnPointerDown(PointerEventData ped){
OnDrag (ped);
}
public virtual void OnPointerUp(PointerEventData ped){
inputVector = Vector3.zero;
joystickImg.rectTransform.anchoredPosition = Vector3.zero;
}
void Update(){
if (joystickImg.transform.localPosition.x > 20) {
player.transform.Translate(Vector3.right * speed * Time.deltaTime);
}
if (joystickImg.transform.localPosition.x < -20) {
player.transform.Translate(Vector3.left * speed * Time.deltaTime);
}
if (joystickImg.transform.localPosition.y > 20) {
player.transform.Translate(Vector3.forward * speed * Time.deltaTime);
}
if (joystickImg.transform.localPosition.y < -20) {
player.transform.Translate(Vector3.back * speed * Time.deltaTime);
}
}
}
HudsonJeff- Iniciante
- PONTOS : 3122
REPUTAÇÃO : 1
Respeito as regras :
Re: [DÚVIDA] Joystick Android FPS Controller
HudsonJeff escreveu:Up
HudsonJeff- Iniciante
- PONTOS : 3122
REPUTAÇÃO : 1
Respeito as regras :
Re: [DÚVIDA] Joystick Android FPS Controller
UpHudsonJeff escreveu:HudsonJeff escreveu:Up
HudsonJeff- Iniciante
- PONTOS : 3122
REPUTAÇÃO : 1
Respeito as regras :
Re: [DÚVIDA] Joystick Android FPS Controller
Caraaa, jogue este script fora. Você está aplicando Translate para um personagem? Nunca.
A Unity traz controladores prontos até para android, tente usá-los. Usar Translate para personagens vai lhe causar problemas infinitos, kkkkkkkk
A Unity traz controladores prontos até para android, tente usá-los. Usar Translate para personagens vai lhe causar problemas infinitos, kkkkkkkk
Re: [DÚVIDA] Joystick Android FPS Controller
Poderia me indicar algum desses controladores ?Que tenha som dos passos e movimento da câmera embutidos?
HudsonJeff- Iniciante
- PONTOS : 3122
REPUTAÇÃO : 1
Respeito as regras :
Re: [DÚVIDA] Joystick Android FPS Controller
UpHudsonJeff escreveu:UpHudsonJeff escreveu:HudsonJeff escreveu:Up
HudsonJeff- Iniciante
- PONTOS : 3122
REPUTAÇÃO : 1
Respeito as regras :
Re: [DÚVIDA] Joystick Android FPS Controller
Nussasenhora, quantos UP's.
Por favor, poste o script do controlador que você está usando (por que varia de versão para versão). Vou tentar editá-lo.
Por favor, poste o script do controlador que você está usando (por que varia de versão para versão). Vou tentar editá-lo.
Re: [DÚVIDA] Joystick Android FPS Controller
Carinha, eu estou prestes a fazer um tutorial sobre isso...
se você nao tiver pressa...
se você nao tiver pressa...
JohnRambo- Moderador
- PONTOS : 5171
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: [DÚVIDA] Joystick Android FPS Controller
Oi galera, preciso muito de ajuda...
quando o marcos disse que a unity já traz controladores prontos eu dei uma pesquisada e vi o Cross Platform Input.
e o meu jogo é em primeira pessoa, usei o prefab Mobile Single Stick Control pois é o unico que consegui usar...
mas este tem um problema, não vira a camera, só move o player...
já futuquei em tudo que é coisa tentando resolver, mas nada... até que aí eu fui no script o first person controller e encontrei isto:
e segui os rastros até chegar ao ponto final, que eu acho que seja este, no script mouse look:
e eu até cheguei a tentar trocar essa última parte do mouse look, deixando-a assim:
e funcionou, mas só enquanto estava no pc, porque depois que eu passei para o celular, a movimentação ficou bem bugada, tipo quando eu clicava na primeira vez eu conseguia mover na boa, mas quando eu soltava e clicava de novo, a camera virava pra outro local, ela nao seguia o movimento do meu dedo, eu quero fazer igual o desse cara:
eu já consigo mover o player com som dos passos e todos os efeitos, sem usar Translate! agora o meu problema que tá me arrebentando é isso, virar a camera...
acreditem ou não, eu estou madrugando esses dias tentando resolver de todas as maneiras que eu conheço, mas nada
preciso muito de ajuda.................
quando o marcos disse que a unity já traz controladores prontos eu dei uma pesquisada e vi o Cross Platform Input.
e o meu jogo é em primeira pessoa, usei o prefab Mobile Single Stick Control pois é o unico que consegui usar...
mas este tem um problema, não vira a camera, só move o player...
já futuquei em tudo que é coisa tentando resolver, mas nada... até que aí eu fui no script o first person controller e encontrei isto:
- Código:
private void RotateView()
{
m_MouseLook.LookRotation(transform, m_Camera.transform);
}
e segui os rastros até chegar ao ponto final, que eu acho que seja este, no script mouse look:
- Código:
public void LookRotation(Transform character, Transform camera)
{
float yRot = CrossPlatformInputManager.GetAxis("Mouse X") * XSensitivity;
float xRot = CrossPlatformInputManager.GetAxis("Mouse Y") * YSensitivity;
m_CharacterTargetRot *= Quaternion.Euler(0f, yRot, 0f);
m_CameraTargetRot *= Quaternion.Euler(-xRot, 0f, 0f);
if (clampVerticalRotation)
m_CameraTargetRot = ClampRotationAroundXAxis(m_CameraTargetRot);
if (smooth)
{
character.localRotation = Quaternion.Slerp(character.localRotation, m_CharacterTargetRot,
smoothTime * Time.deltaTime);
camera.localRotation = Quaternion.Slerp(camera.localRotation, m_CameraTargetRot,
smoothTime * Time.deltaTime);
}
else
{
character.localRotation = m_CharacterTargetRot;
camera.localRotation = m_CameraTargetRot;
}
UpdateCursorLock();
}
e eu até cheguei a tentar trocar essa última parte do mouse look, deixando-a assim:
- Código:
public void LookRotation(Transform character, Transform camera)
{
float yRot = Input.GetAxis("Mouse X") * XSensitivity;
float xRot = Input.GetAxis("Mouse Y") * YSensitivity;
m_CharacterTargetRot *= Quaternion.Euler(0f, yRot, 0f);
m_CameraTargetRot *= Quaternion.Euler(-xRot, 0f, 0f);
if (clampVerticalRotation)
m_CameraTargetRot = ClampRotationAroundXAxis(m_CameraTargetRot);
if (smooth)
{
character.localRotation = Quaternion.Slerp(character.localRotation, m_CharacterTargetRot,
smoothTime * Time.deltaTime);
camera.localRotation = Quaternion.Slerp(camera.localRotation, m_CameraTargetRot,
smoothTime * Time.deltaTime);
}
else
{
character.localRotation = m_CharacterTargetRot;
camera.localRotation = m_CameraTargetRot;
}
UpdateCursorLock();
}
e funcionou, mas só enquanto estava no pc, porque depois que eu passei para o celular, a movimentação ficou bem bugada, tipo quando eu clicava na primeira vez eu conseguia mover na boa, mas quando eu soltava e clicava de novo, a camera virava pra outro local, ela nao seguia o movimento do meu dedo, eu quero fazer igual o desse cara:
eu já consigo mover o player com som dos passos e todos os efeitos, sem usar Translate! agora o meu problema que tá me arrebentando é isso, virar a camera...
acreditem ou não, eu estou madrugando esses dias tentando resolver de todas as maneiras que eu conheço, mas nada
preciso muito de ajuda.................
HudsonJeff- Iniciante
- PONTOS : 3122
REPUTAÇÃO : 1
Respeito as regras :
Re: [DÚVIDA] Joystick Android FPS Controller
Tente utilizar este script na sua camera para fazer o movimento do MouseLook
O nome do script é "MovCamera" e é em C#
O que acontece é que no android, os eixos do Input do mouse serão invertidos... Tente ver se este script serve
O nome do script é "MovCamera" e é em C#
- Código:
using UnityEngine;
using System.Collections;
public class MovCamera : MonoBehaviour {
[Range(1,20)] public float sensibilidade = 10.0f;
[Range(0,160)] public float anguloHorizntal = 65.0f;
[Range(0,85)] public float anguloVertical = 20.0f;
Quaternion rotacaoOriginalCamera;
float rotacaoX = 0.0f,rotacaoY = 0.0f;
void Start () {
rotacaoOriginalCamera = transform.localRotation;
}
void Update () {
rotacaoX -= Input.GetAxis ("Mouse X") * sensibilidade;
rotacaoY -= Input.GetAxis ("Mouse Y") * sensibilidade;
rotacaoX = ClampAngle (rotacaoX, -anguloHorizntal, anguloHorizntal);
rotacaoY = ClampAngle (rotacaoY, -anguloVertical, anguloVertical);
Quaternion xQuaternion = Quaternion.AngleAxis (rotacaoX, Vector3.up);
Quaternion yQuaternion = Quaternion.AngleAxis (rotacaoY, -Vector3.right);
Quaternion rotacFinal = rotacaoOriginalCamera * xQuaternion * yQuaternion;
transform.localRotation = Quaternion.Lerp (transform.localRotation, rotacFinal, Time.deltaTime*10.0f*(1.0f / Time.timeScale));
}
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);
}
}
O que acontece é que no android, os eixos do Input do mouse serão invertidos... Tente ver se este script serve
Re: [DÚVIDA] Joystick Android FPS Controller
Nada....
nao cheguei a testar no android, pois nao consegui fazer a minha unity remote funcionar (eu estou usando unity 5.3.1) ai eu tenho que ficar compilando toda hora e passando pro celular pra testar...
mas creio que o comando ("mousex") e ("mousey") funcione tanto no android como no pc, apesar dessa inversão que voce disse
mas então eu joguei este script que vc me passou no jogador em si (FPSController) e nao deu, depois eu joguei na camera (First Person Character) e tambem não deu
eu já troquei a plataforma do jogo pra do Android...
Será que eu esteja errado? Sera que após a troca de plataforma o comando Mouse x e y so funciona no android?
nao cheguei a testar no android, pois nao consegui fazer a minha unity remote funcionar (eu estou usando unity 5.3.1) ai eu tenho que ficar compilando toda hora e passando pro celular pra testar...
mas creio que o comando ("mousex") e ("mousey") funcione tanto no android como no pc, apesar dessa inversão que voce disse
mas então eu joguei este script que vc me passou no jogador em si (FPSController) e nao deu, depois eu joguei na camera (First Person Character) e tambem não deu
eu já troquei a plataforma do jogo pra do Android...
Será que eu esteja errado? Sera que após a troca de plataforma o comando Mouse x e y so funciona no android?
HudsonJeff- Iniciante
- PONTOS : 3122
REPUTAÇÃO : 1
Respeito as regras :
Re: [DÚVIDA] Joystick Android FPS Controller
Cara, este script é para ir na camera interna do FPSController, conforme eu disse.
Re: [DÚVIDA] Joystick Android FPS Controller
HudsonJeff escreveu:mas então eu joguei este script que vc me passou no jogador em si (FPSController) e nao deu, depois eu joguei na camera (First Person Character) e tambem não deu
HudsonJeff- Iniciante
- PONTOS : 3122
REPUTAÇÃO : 1
Respeito as regras :
Re: [DÚVIDA] Joystick Android FPS Controller
Então em vez de utilizar o meu script, tente isto:
No seu controlador, vá em MouseLook e deixe as sensibilidades X e Y com valor negativo, tipo, se está como 2, deixe como -2, tanto para X quanto para Y
No seu controlador, vá em MouseLook e deixe as sensibilidades X e Y com valor negativo, tipo, se está como 2, deixe como -2, tanto para X quanto para Y
Re: [DÚVIDA] Joystick Android FPS Controller
nada.....
tipo assim, enquanto esta no pc funciona perfeitamente, mas quando eu compilo pra android a movimentação do player continua boa, mas a da câmera fica bugadíssima, impossivel de jogar, eu apenas toco na tela e a câmera vira pra cima ou pra baixo ou para outro lado, creio que o problema nao seja essa inversão que você disse, pois eu nem se quer arrasto o dedo!
eu só encosto e a camera já vira, se eu aperto um botão na tela a camera tambem vira ;(
tipo assim, enquanto esta no pc funciona perfeitamente, mas quando eu compilo pra android a movimentação do player continua boa, mas a da câmera fica bugadíssima, impossivel de jogar, eu apenas toco na tela e a câmera vira pra cima ou pra baixo ou para outro lado, creio que o problema nao seja essa inversão que você disse, pois eu nem se quer arrasto o dedo!
eu só encosto e a camera já vira, se eu aperto um botão na tela a camera tambem vira ;(
HudsonJeff- Iniciante
- PONTOS : 3122
REPUTAÇÃO : 1
Respeito as regras :
Re: [DÚVIDA] Joystick Android FPS Controller
É por que o Input eh bem maio no android...
Então em vez de deixar em -2 e -2, tente -0.2 e -0.2, a velocidade vai diminuir bastante.
Mas se você quer girar com o dedo na tela, você vai precisar aprimorar muito o seu sistema para checar em todo o botão se você não está girando a camera... Por isso que a maioria dos jogos possui um analógico próprio para girar a camera.
Então em vez de deixar em -2 e -2, tente -0.2 e -0.2, a velocidade vai diminuir bastante.
Mas se você quer girar com o dedo na tela, você vai precisar aprimorar muito o seu sistema para checar em todo o botão se você não está girando a camera... Por isso que a maioria dos jogos possui um analógico próprio para girar a camera.
Tópicos semelhantes
» Como fazer um botão Joystick que controle o First Person Controller?
» CONTROLES COM JOYSTICK PARA ANDROID
» Joystick - Android
» Joystick para Android!
» Meu Joystick virtual pra Android só funciona uma vez!!!
» CONTROLES COM JOYSTICK PARA ANDROID
» Joystick - Android
» Joystick para Android!
» Meu Joystick virtual pra Android só funciona uma vez!!!
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos