[TUTORIAL] Criar Analógico Virtual UI Para Mobile.
+8
Chilinger
Gabriel César O
brtutors324
JohnRambo
Édipo
dinho
ismarspn
noocktall
12 participantes
Página 1 de 1
[TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Bom, só lembrando que eu ví esse tutorial na net e adaptei do jeito que eu achei mais fácil, então está aí:
Primeiro crie um UI Image e coloque o sprite de sua preferencia, recomendável um sprite com imagem redonda e mude o nome para Background.
Duplique o Background e modifique o nome para qualquer outro a sua escolha, diminua o tamanho e coloque como filho do Background, certifique-se que ele esteja no centro do Background.
Adicione o Script "VirtualJoystick" la na Background, mude a velocidade a sua preferencia, e linke seu Player.
Script:
Pronto, seu Joystick virtual está funcionando!
Primeiro crie um UI Image e coloque o sprite de sua preferencia, recomendável um sprite com imagem redonda e mude o nome para Background.
Duplique o Background e modifique o nome para qualquer outro a sua escolha, diminua o tamanho e coloque como filho do Background, certifique-se que ele esteja no centro do Background.
Adicione o Script "VirtualJoystick" la na Background, mude a velocidade a sua preferencia, e linke seu Player.
Script:
- 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);
}
}
}
Pronto, seu Joystick virtual está funcionando!
ismarspn- Programador
- PONTOS : 4001
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
legal mas tem como fazer um para mexer a camera tbm ? não necessariamente um analogico (botão)
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Tem sim, não sei muito mexer em camera, mas acho q é só programar a rotação da camera
ismarspn- Programador
- PONTOS : 4001
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
hm talvez eu crie um tópico pedindo ajuda pós todos os métodos que eu faço buga muito a camera
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Legal cara ! Eu usei o mesmo tutorial da net e consegui fazer uma adaptação parecida, gostaria de saber como posso utilizar o no tamanho proporcional ao Screen.width / Screen.height? Tenho q criar uma OnGUI ? Como ficaria?
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Eu não sei muito trabalhar com OnGUI, amigo.
ismarspn- Programador
- PONTOS : 4001
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Olá ismarspn, acompanhei esse tutorial e desenvolvi o joystick virtual , ficou exelente, mas minha dúvida é a seguinte: gostaria de fazer com que o Joystick reduzi-se proporcionalmente as configurações de tamanho da tela , como no modo Void OnGUI () { GUI DrawTexture (new Rect);}.
Tentei fazer mas deu erro , dizendo das Texturas , já que as imagens são Sprites
estou enviando o Scripts com algumas modificações, vc pode analisar p/ mim? Valeuu!!! parabens pelo tutorial.
Tentei fazer mas deu erro , dizendo das Texturas , já que as imagens são Sprites
estou enviando o Scripts com algumas modificações, vc pode analisar p/ mim? Valeuu!!! parabens pelo tutorial.
- 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;
//Posicao//
//public float pos_bgImg_x; //teste
//public float pos_bgImg_y; //teste
//public float pos_joystickImg_x; //teste
//public float pos_joystickImg_y; //teste
//tamanho//
//public float tam_bgImg_x; //teste
//public float tam_bgImg_y; //teste
//public float tam_joystickImg_x; //teste
//public float tam_joystickImg_y; //teste
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*2 + 1,0,pos.y*2 - 1);
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;
}
public float Horizontal()
{
if (inputVector.x != 0)
return inputVector.x;
else
return Input.GetAxis ("Horizontal");
}
public float Vertical()
{
if (inputVector.z != 0)
return inputVector.z;
else
return Input.GetAxis ("Vertical");
}
//void OnGUI () {
//GUI.DrawTexture (new Rect (Screen.width / tam_joystickImg_x, Screen.height / tam_joystickImg_y, Screen.width / pos_joystickImg_x, Screen.height / pos_joystickImg_y), joystickImg);//teste
//GUI.DrawTexture (new Rect (Screen.width / tam_bgImg_x, Screen.height / tam_bgImg_y, Screen.width / pos_bgImg_x, Screen.height / pos_bgImg_y), bgImg);//teste
//}
}
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
nesse caso você terá que mexer no seu canvas mesmo, tem uma opção lá que deixa os botões proporcionais a tela
ismarspn- Programador
- PONTOS : 4001
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Meu Camarada Obrigado pela dica, consegui resolver. Valeuuu!!!
Última edição por dinho em Ter maio 31, 2016 11:21 am, editado 1 vez(es)
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Bom, se resolve eu não sei, mas tenta mexer no pivot do seu botão, talvez seja esse o problema, tenta colocar tudo no meio e depois arrastar para o canto que você queira
ismarspn- Programador
- PONTOS : 4001
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Valeu cara consegui resolver, estava configurando o canvas errado. kkk.
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Dei uma mexida no script e consegui fazer o third person andar com o analógico rsrsrs
link: https://www.facebook.com/SammyPlayOficial/videos/1598924850399211/
link: https://www.facebook.com/SammyPlayOficial/videos/1598924850399211/
ismarspn- Programador
- PONTOS : 4001
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
como posso fazer esse esquema de intencidade do drag do analogico, tipo eu arasto ele um pouquinho pra borda e ele vai rotacionando de vagarzinho ai então quanto mais berto da borda ele vai adicionando mais "força" na rotação, assim como vc fez no video ai do TPS em que ele anda de vagar e quanto mais arasta pra borda ele anda mais rápido
Édipo- MembroAvançado
- PONTOS : 4009
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Édipo escreveu:como posso fazer esse esquema de intencidade do drag do analogico, tipo eu arasto ele um pouquinho pra borda e ele vai rotacionando de vagarzinho ai então quanto mais berto da borda ele vai adicionando mais "força" na rotação, assim como vc fez no video ai do TPS em que ele anda de vagar e quanto mais arasta pra borda ele anda mais rápido
Para First Person ou Third Person?
JohnRambo- Moderador
- PONTOS : 5174
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: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
para um jogo de avião :D
acho que se encaixa em third person
acho que se encaixa em third person
Édipo- MembroAvançado
- PONTOS : 4009
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Édipo- MembroAvançado
- PONTOS : 4009
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
poxa galera ninguem sabe sobre algo do tipo??
Édipo- MembroAvançado
- PONTOS : 4009
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Você tem o script da movimentação do seu avião?
ismarspn- Programador
- PONTOS : 4001
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
o script de movimentação do avião é esse mesmo que vc compartilhou ai, nada mais nada menos, tentei mexer nele pra ver se eu conseguir fazer o que estou querendo, mas não deu certo
mas o script é esse ai mesmo que vc postou
muito obrigado desde ja :D
mas o script é esse ai mesmo que vc postou
muito obrigado desde ja :D
Édipo- MembroAvançado
- PONTOS : 4009
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Você pode mudar a movimentação do avião usando o Rigidbody.velocity, pode até funcionar melhor
ismarspn- Programador
- PONTOS : 4001
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
eu tentei mas não funcionou, no caso eu troquei o...
player.transform.Translate(Vector3.right * speed * Time.deltaTime);
por
player.transform.Rotate(Vector3.up * speedUpDown * Time.deltaTime);
mas eu queria que ele funcionasse tipo um analógico de controle de verdade saca, um pouco que eu mexo para o lado ja faz a ação correspondente ao tanto que eu mexi o analógico, no caso em que esta agora, ele so movimenta quando a bolinha chega na borda, ai sim ele faz a ação, eu queria que qualquer movimentozinho que eu fizer na bola gera uma ação correspondente ao tanto que eu movimentei, deu pra entender?? :D
sou meio ruim pra explicar as coisas mas acho que é isso, desde já agradeço campeã e flw
player.transform.Translate(Vector3.right * speed * Time.deltaTime);
por
player.transform.Rotate(Vector3.up * speedUpDown * Time.deltaTime);
mas eu queria que ele funcionasse tipo um analógico de controle de verdade saca, um pouco que eu mexo para o lado ja faz a ação correspondente ao tanto que eu mexi o analógico, no caso em que esta agora, ele so movimenta quando a bolinha chega na borda, ai sim ele faz a ação, eu queria que qualquer movimentozinho que eu fizer na bola gera uma ação correspondente ao tanto que eu movimentei, deu pra entender?? :D
sou meio ruim pra explicar as coisas mas acho que é isso, desde já agradeço campeã e flw
Édipo- MembroAvançado
- PONTOS : 4009
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
alguem sabe de algo que eu possa estar fazendo?
Édipo- MembroAvançado
- PONTOS : 4009
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Se for o que eu to pensando, você quer que o avião gire igual ao analogico, certo? se for vc terá que mecher no joystickimg.rectTransform, nao testei ainda, mas fiz isso, tenta por no Update:
- Código:
aviao.transform.eulerAngles = new Vector3(joystickImg.rectTransform.anchoredPosition.x,0,joystickImg.rectTransform.anchoredPosition.y);
ismarspn- Programador
- PONTOS : 4001
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
quando eu coloco o analogico o meu personagem sai andando sozinnho quando eu do play! ME AJUDE OBG
brtutors324- Iniciante
- PONTOS : 2808
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
eu vi este tutorial aqui!ismarspn escreveu:Bom, só lembrando que eu ví esse tutorial na net e adaptei do jeito que eu achei mais fácil, então está aí:
Primeiro crie um UI Image e coloque o sprite de sua preferencia, recomendável um sprite com imagem redonda e mude o nome para Background.
Duplique o Background e modifique o nome para qualquer outro a sua escolha, diminua o tamanho e coloque como filho do Background, certifique-se que ele esteja no centro do Background.
Adicione o Script "VirtualJoystick" la na Background, mude a velocidade a sua preferencia, e linke seu Player.
Script:
- 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);
}
}
}
Pronto, seu Joystick virtual está funcionando!
Gabriel César O- Profissional
- PONTOS : 3988
REPUTAÇÃO : 217
Idade : 23
Áreas de atuação : (ESTUDANDO SEGUNDO GRAU), (FUÇANDO NO UNITY)){
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Teria como explica como consigo fazer para ao virar o volante UI o do carro faça o mesmo.
Não sou muito bom na UI eu queria saber como você fez no seu jogo na "selva" para folha carregar e aparece um butao do nada.
Não sou muito bom na UI eu queria saber como você fez no seu jogo na "selva" para folha carregar e aparece um butao do nada.
Chilinger- MembroAvançado
- PONTOS : 4094
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
pode ajudar ainda? toda vez que eu faço esse tutorial e gero o .apk, ele para de funcionar...
mateusvasco100- Iniciante
- PONTOS : 2389
REPUTAÇÃO : 1
Idade : 25
Áreas de atuação : Programação, Iniciante em unity e design de jogos.
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Como faz um botao pra pular?
francisco barroso- Programador
- PONTOS : 2615
REPUTAÇÃO : 59
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
francisco barroso escreveu:Como faz um botao pra pular?
JohnRambo- Moderador
- PONTOS : 5174
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: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
cara muito obrigado, esse script me ajuda até hj
Édipo- MembroAvançado
- PONTOS : 4009
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Tem um tutorial do Gump Flash que e igual a esse script gringo ai, so que ele mudou algumas coisas
Daniel Henrique- Iniciante
- PONTOS : 1947
REPUTAÇÃO : 0
Idade : 19
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Joystick : MonoBehaviuor, InpointerUpHandler, InpointerDownHandler, IDragHandler {
public int MovimentRange = 100;
Vector3 StartPos;
public Vector3 InputDirection;
public Image BgImage;
public Image thisImage;
public void OnDrag(PointerEventData eventdata)
{
Vector3 newPos = Vector3.zero;
int delta = (int)(eventData.position.x -
StartPos.x);
delta = Mathf.Clamp(delta, -MovimentRange, MovimentRange);
newPos.x = delta;
int delta2 = (int)(eventData.position.y - StartPos.y);
delta2 = Mathf.Clamp(delta2, -MovimentRange, MovimentRange);
newPos.y = delta2;
transform.position = new Vector3(StartPos.x + newPos.x, StartPos.y + newPos.y, StartPos.z + newPos.z);
UpdateVirtualAxes(new Vector3(newPos.x * 1f / MovimentRange, 0, newPos.y * 1 / MovimentRange));
}
public void OnPointerUp(PointerEventData eventdata)
{
transform.position = StartPos;
print(StartPos);
UpdateVirtualAxes(new Vector3(0, 0, 0));
}
//So no inicio do jogo
void Start ( ) {
thisImage = GetComponent<Image>( );
StartPos = transform.position;
}
//Para o joystick
void UpdateVirtualAxes (Vector3 value) {
var delta = StartPos - value;
delta.y = -delta.y;
delta /= MovimentRange;
InputDirection = value;
}
public void OnPointerDown(EventData event data)
{
}
}
E mais ou menos igual, mas funciona no mesmo
Daniel Henrique- Iniciante
- PONTOS : 1947
REPUTAÇÃO : 0
Idade : 19
Respeito as regras :
Re: [TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Como faço para rotacionar a camera junto com o personagem ?
dunha- Iniciante
- PONTOS : 1476
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Joystick virtual para mobile
» [TUTORIAL] - 8 Dicas de otimização para mobile (Tópico 2) (Android)
» [TUTORIAL] 42 ÓTIMAS DICAS DE OTIMIZAÇÃO PARA JOGOS MOBILE (Android)
» Logica para criar (Player, Inventario, Arma) - Mobile
» Como criar área para movimentar a câmera (MOBILE)
» [TUTORIAL] - 8 Dicas de otimização para mobile (Tópico 2) (Android)
» [TUTORIAL] 42 ÓTIMAS DICAS DE OTIMIZAÇÃO PARA JOGOS MOBILE (Android)
» Logica para criar (Player, Inventario, Arma) - Mobile
» Como criar área para movimentar a câmera (MOBILE)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos