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:
[TUTORIAL] Camera orbital com zoom (scroll)
Como faz a geração de terreno aleatório???
Bugs na textura
[Alpha Android] - Night Hunter DevLog - Action RPG (23 de julho de 2017) Baixe!
Vagas para o Naufrágio, um jogo sobrevivência que estou desenvolvendo
Update desenvolvimento do meu jogo Epic Survival (Re Survival :D)
O que voces esperam em um jogo onde voce e um peixe???
[Equipe] Equipe para jogo tower defense low poly
COMO FAZER UM SISTEMA DE PARKOUR (SEM ANIMACAO) IDEIAS
Arrastar um botão ao manter o mouse pressionado
[DUVIDA]Como usar o setActive no photon
como reconhecer a ''face'' de uma mesh da agua
Diminuir a velocidade do veiculo Ativa um setActive
Como coloco video do youtube
Oque acham dessa Meia Historia para meu jogo de sobrevivencia!
PESSOAL PRA VOCÊS OQUE TEM QUE TER EM UM JOGO DE SOBREVIVENCIA?
Duvidas sobre a criação de jogos para celular
Grupo de desenvolvimento no Discord
Ajuda em Script de colisao na unity
Dúvida de Botões mobile, no c#???
[RESOLVIDO] jogo buga a textura (manchas azuis e vermelhas)
ROTACIONAR NO ÂNGULO DO GAMEOBJECT
dúvida sobre resolução para mobile
[RESOLVIDO] CAMERA NÃO VISUALIZA LENS FLARE
Ajuda com scripts de inimigo e player'' interação de zumbi e player''
como abrir o app de email a partir de um jogo unity ?
[DÚVIDA] [2D] ALTERAR SPRITE SEM PRECISAR IMPORTAR DE NOVO
Script para Câmera em primeira pessoa.
[TUTORIAL] Luz Principal,Luz de Freio,Piscas para Carro,Moto,Caminhão,Ônibus,Etc...
Bug Unity ?
Criar Cidade Para Game
(DUVIDA)PlayerPrefs
[TUTORIAL] Suspensão de carro com SLIDER
[TUTORIAL] Script de arma automatica
[_____CRONOGRAMA DO CANAL_____]
Pulo 2D
Procurar um Índice em uma lista
Alguem me recomenda uma versao estavel e atualizada da unity :C
[dúvida] Comando tranform.rotatante.x não funcionando direito.
[tutorial]Teleporte com tempo.
Laser 2D
Procuro equipe para criar jogo multiplayer online de sobrevivência.
[TUTORIAL] Unity 5 - Sistema Completo de PORTAS E CHAVES
Script não detecta certos comandos como "Input" e "GetKeyDown"
Duvida com Transform.position
Rotação apontando para um Objeto.
MS Vehicles Free em vídeo de melhores assets
Marcos Elias Proton Bus Simulator AJUDA COM SISTEMA DE MAPA CONTÍNUO
Desativar Terrain
Sistema de corrida
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
Como resolver
[TUTORIAL] Inteligência artificial, inimigo e AIPoints
Dúvidas Script
problemas com rb.velocity e gravidade
[TUTORIAL] Script de pulo para jogos 3D em geral (Unity - C#)
3D, Player gruda na parede
Como puxar várias animações ao mesmo tempo
[TUTORIAL] Camera orbital para android (TOUCH)
[DÚVIDA] SITE DE MODELOS 3D PARA USO GRATUITO
[TUTORIAL] C# .NET | Visual Studio - conexão com banco de dados MySQL
COMO FAZER UM SISTEMA DE VIAGEM IGUAL (No Man's Sky)
Gerador de mesh procedual
Nova atualização do meu rpg De açao Opinioes
[TUTORIAL] Sistema de escolha de personagens
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
[TUTORIAL] C# .NET | Launcher simples que acessa um site.
[TUTORIAL] - Como fazer download da OBB do jogo, in-game! (Android)
Variavel UI
Apk Google Play
[DICA] - Traduzir o assistente de downloads do "Google Play OBB Downloader"
Duvidas sobre programação em C#
Problema ao renderizar dois lado de uma malha (blender)
Novo jogo survival sendo feito por mim
[TUTORIAL] - 8 Dicas de otimização para mobile (Tópico 2) (Android)
[TUTORIAL] Como criar suas texturas Normal Map, Displacement Map e Bump Map (Photoshop)
[DIVULGAÇÃO]Avaliem Meu Jogo Na Play Store!
Estudo Game da Carro Mobile
[TUTORIAL] C# .NET| Instalar Cargas de trabalho/Componentes Individuais no Visual Studio
Instanciar objetos na mão do Player
[____EFICIÊNCIA DO FÓRUM____]
[TUTORIAL] Aprenda a programar em C# des do começo :D
[TUTORIAL] ENVIAR A OPINIÃO DO SEU JOGADOR, PARA UM SERVIDOR
[TUTORIAL] Objeto flutuar como se estivesse no espaço ou na água
[DESENVOLVEDORES MOBILE] - NOVA AREA DO FÓRUM DEDICADA AO MOBILE! (Android e iOS)
[DESENVOLVIMENTO C# .NET] - NOVA AREA DO FÓRUM DEDICADA AO C# .NET!
Versão Unity
Como fazer um FAQ?
[RESOLVIDO] PLAYER ANDAR MAIS DEVAGAR AO APERTAR SHIFT
[TUTORIAL] Movimento simples para objetos filiados ao FPSController da Unity por código.
[Resolvido] Como animar a camera do FPSController da unity ? sem dar bug...
Tiro sistema dano
Duvida em Disparo em jogo de Fps.
Divulgaçao de Battle of Worlds
[duvida] Easy Roads
[DÚVIDA] TOCAR ANIMAÇÕES EM SEU TEMPO CORRETO
[____ADMINISTRAÇÃO____] Alterações IMPORTANTES no fórum.
[TUTORIAL] Como fazer porta malas do carro abrir atravez de um botão? Clica aq e veja
gravidade está agindo de forma estranha em objetos diferentes
Hoje à(s) 9:02 pm
Hoje à(s) 8:12 pm
Hoje à(s) 7:53 pm
Hoje à(s) 7:52 pm
Hoje à(s) 7:34 pm
Hoje à(s) 7:32 pm
Hoje à(s) 5:36 pm
Hoje à(s) 5:34 pm
Hoje à(s) 4:14 pm
Hoje à(s) 2:52 pm
Hoje à(s) 12:00 pm
Hoje à(s) 10:51 am
Hoje à(s) 10:42 am
Hoje à(s) 6:00 am
Hoje à(s) 5:35 am
Hoje à(s) 5:32 am
Hoje à(s) 5:30 am
Hoje à(s) 1:56 am
Ontem à(s) 11:48 pm
Ontem à(s) 11:30 pm
Ontem à(s) 9:42 pm
Ontem à(s) 8:31 pm
Ontem à(s) 7:30 pm
Ontem à(s) 7:19 pm
Ontem à(s) 4:05 pm
Ontem à(s) 3:04 pm
Ontem à(s) 2:35 pm
Ontem à(s) 12:54 pm
Ontem à(s) 11:10 am
Ontem à(s) 10:49 am
Ontem à(s) 9:53 am
Ontem à(s) 8:48 am
Ontem à(s) 6:19 am
Ontem à(s) 6:17 am
Ontem à(s) 3:51 am
Ontem à(s) 1:45 am
Sex Jul 21, 2017 11:57 pm
Sex Jul 21, 2017 11:33 pm
Sex Jul 21, 2017 10:37 pm
Sex Jul 21, 2017 10:33 pm
Sex Jul 21, 2017 10:24 pm
Sex Jul 21, 2017 9:29 pm
Sex Jul 21, 2017 9:27 pm
Sex Jul 21, 2017 9:25 pm
Sex Jul 21, 2017 9:17 pm
Sex Jul 21, 2017 9:15 pm
Sex Jul 21, 2017 9:08 pm
Sex Jul 21, 2017 9:07 pm
Sex Jul 21, 2017 9:00 pm
Sex Jul 21, 2017 8:57 pm
Sex Jul 21, 2017 8:52 pm
Sex Jul 21, 2017 8:49 pm
Sex Jul 21, 2017 8:47 pm
Sex Jul 21, 2017 8:38 pm
Sex Jul 21, 2017 8:29 pm
Sex Jul 21, 2017 8:24 pm
Sex Jul 21, 2017 8:23 pm
Sex Jul 21, 2017 8:03 pm
Sex Jul 21, 2017 7:19 pm
Sex Jul 21, 2017 7:05 pm
Sex Jul 21, 2017 5:42 pm
Sex Jul 21, 2017 3:56 pm
Sex Jul 21, 2017 10:25 am
Sex Jul 21, 2017 7:35 am
Qui Jul 20, 2017 11:48 pm
Qui Jul 20, 2017 11:48 pm
Qui Jul 20, 2017 7:32 pm
Qui Jul 20, 2017 7:26 pm
Qui Jul 20, 2017 6:36 pm
Qui Jul 20, 2017 4:45 pm
Qui Jul 20, 2017 4:43 pm
Qui Jul 20, 2017 4:36 pm
Qui Jul 20, 2017 4:26 pm
Qui Jul 20, 2017 2:50 pm
Qui Jul 20, 2017 10:03 am
Qui Jul 20, 2017 9:07 am
Qua Jul 19, 2017 11:42 pm
Qua Jul 19, 2017 10:31 pm
Qua Jul 19, 2017 10:12 pm
Qua Jul 19, 2017 9:40 pm
Qua Jul 19, 2017 7:26 pm
Qua Jul 19, 2017 6:28 pm
Qua Jul 19, 2017 6:14 pm
Qua Jul 19, 2017 5:48 pm
Qua Jul 19, 2017 2:26 pm
Qua Jul 19, 2017 2:21 pm
Qua Jul 19, 2017 11:49 am
Qua Jul 19, 2017 6:04 am
Ter Jul 18, 2017 9:31 pm
Ter Jul 18, 2017 9:03 pm
Ter Jul 18, 2017 8:56 pm
Ter Jul 18, 2017 8:37 pm
Ter Jul 18, 2017 8:25 pm
Ter Jul 18, 2017 6:13 pm
Ter Jul 18, 2017 5:17 pm
Ter Jul 18, 2017 4:55 pm
Ter Jul 18, 2017 1:16 pm
Ter Jul 18, 2017 12:54 pm
Ter Jul 18, 2017 11:43 am
Gregory2017
DementeCraft
Yagogomes
marcos4503
Onagro
joabr
IanLuan
IanLuan
rafaelllsd
ManoTrevor
fecirineu
thzin
thzin
vermelhinho
vermelhinho
vermelhinho
vermelhinho
dimmuo
Weverton Borges da Silva
hamerom
Extreme Craft
marcos4503
marcos4503
Diego Felix
Robinsandi
marcos4503
IanLuan
Gaimo
bitgames
sidney1234
Duarte
Zecandy
Gabriel César O
Gabriel César O
Joaopm1
roger224
Joaopm1
marcos4503
arthearthutr
arthearthutr
roger224
Gaimo
MarcosSchultz
xXGianlucksXx
MarcosSchultz
Annko
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
thzin
Gabriel César O
Gabriel César O
weslleyFx
ManoTrevor
Madness
dstaroski
PauloFR
MarcosSchultz
Mateus2583
ubroly
marcos4503
marcos4503
marcos4503
poyser
hetrodo_gamer
zMicael
Édipo
Madness
marcos4503
Gabriel César O
PauloFR
Dom3000
PauloFR
Callyde Jr
Callyde Jr
ManoTrevor
marcos4503
marcos4503
Weverton Borges da Silva
marcos4503
Gabriel César O
PauloFR
PauloFR
Bruno
Duarte
Dom3000
Gabriel César O
Gabriel César O
MarcosSchultz
Gabriel César O
dstaroski

[TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

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

TUTORIAL [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por marcos4503 em Dom Abr 30, 2017 3:07 am

OPAAAAAA! Eaí véééééééééééi! Bêles? Marcos aqui! Dessa vez to trazendo meu primeiro tutorial (bem explicado) aqui para o fórum, e resolvi começar com algo que pode ajudar bastante gente, e que eu levei tempos quebrando a cabeça e pesquisando bastante pra desenvolver. Que é uma mecânica legal para jogos de tiro em terceira pessoa ou para primeira pessoa(se você souber adaptar).

A mecânica resumidamente seria isso..


  • Um joystick, que rotaciona o Personagem na direção em que o joystick esta rotacionado, e tambem move o personagem, obviamente
  • Camera, que pode ser rotacionada (para cima e para os lados) usando o Swipe do touch (movimento de arrastar com o dedo)
  • Rotações suaves
  • O personagem sempre olha para onde a mira esta, quando o jogador para de andar
  • Camera inteligente que detecta quando há paredes atras dela, assim ela não buga e entra dentro de modelos 3d por exemplo (Aquele esquema do GTA San Andreas)
  • Sensibilidade, inversão de camera configuraveis


Bom. Vale lembrar que isso é um prototipo, que esta em experiemento, então não é nada 100% perfeito, mais já esta funcional! Se você conhece uma forma para melhorar o código, ou algo a mais, sinta-se a vontade para comentar!

Abaixo uma pequena gameplay de 48 segundos, já rodando em meu celular, ao som de Avicii - True Believer. (kkkkkkkj)


PS: Não animei o personagem porque isso é apenas um prototipo, por favor, não reparem!





Antes de mais nada.. Eu estou utilizando o Unity 5.6.0f3 nesse tutorial. Tambem sugiro que entenda pelo menos um pouco de programação em C# antes de faze-lo. Eu vou postar todos os scripts, comenta-los e tal, mais é sempre bom entender um pouco do que voce esta vendo, assim voce vai poder personaliza-lo e fazer variantes de acordo com a proposta do seu game. Eu estou oferecendo apenas a base.

Sem mais delongas, vamos a ação.

Parte 1 - Preparando o terreno com os Standard Assets do Unity


Bom.. Vamos começar importando os Assets "Cross Plataform Input" do Unity. Para isso, vá até a Guia "Assets" depois clique em "Import Package" e por fim, "CrossPlataformInput". Espere extrair todo o conteudo e então clique em "Import".


Feito isso, você já tera um Pack de controles Touch, oferecidos pela Unity. O Joystick que estou utilizando é desse Asset. Mais só usaremos o Joystick.


Parte 2 - Preparando a UI


Ok.. Agora iremos colocar o Joystick na tela, o configurar, posicionar e fazer aquela custimização básica.


Passo 1 - Crie um Canvas


(Irei colocar todas as explicações dos passos dentro de Spoilers, pra reduzir o tamanho do tópico. Basta clicar nos spoilers se precisar de ajuda.)

Ajuda:
Clique na guia "GameObject" > "UI" > "Canvas".

Passo 2 - Pegue o Prefab "MobileSingleJoystickControl" e o adicione a sua cena. Pegue o "MobileJoystick" que esta dentro do prefab, e o arraste para dentro da Canvas que voce acabou de criar. Agora você pode deletar o prefab, pois o resto é inutil para nós.

Ajuda:
O prefab "MobileSingleJoystickControl" se encontra na pasta "Standard Assets" > "CrossPlataformInput" > "Prefabs". Ele adiciona um joystick, e um botão de "Jump". Imagem mostrando o diretório abaixo. Feito isso, seu canvas devera estar parecido com isso...  Voce tambem pode alterar a imagem do joystick. Eu alterarei a minha para um circulo branco.

Passo 3 - Crie uma imagem, que cubra  70% da tela, a mesma deve começar no lado direito da tela. Ela servira para detectar, quando o player tira o dedo da tela. Explicarei mais abaixo.

Ajuda:
A imagem deve ficar parecida com isso...  Você pode modificar o Alpha da imagem para deixa-la 100% transparente, como mostrado aqui...  Ao terminar, devera estar parecido com isso...


Parte 3 - Preparando o Personagem, sua malha, e a Camera




Passo 1 - Crie um GameObject vazio, adicione um "Capsule Collider" e um "Rigid Body" a ele, chame-o de Player, Dentro de Player, Crie outro GameObject, chame-o de Malha. Malha, deve ter uma posição de X = 0, Y = 0, Z = 0. Pegue o modelo 3D de seu personagem, e coloque-o dentro de Malha, a posição do modelo tambem deve ser igual a X = 0, Y = Altura, varia de acordo com a altura da sua malha, Z = 0.




Ajuda:
Crie um GameObject vazio, adicione um Capsule Collider ao mesmo, e um RigidBody. O nomeie de "Player"  Crie um GameObject vazio dentro de Player e o chame de Malha.  o mesmo deve ter a posição em X, Y e Z igual  0. Dentro da malha, adicione o modelo 3d de seu personagem, e regule a altura dele em Y de acordo com a altura dele, para que ele não fique bugado dentro do chão. A posição em X e Z deve ser 0.  ajuste o capsule collider que voce colocou no Player, até que ele fique nas proporções do seu modelo 3d.




Passo 2 - Dentro de Player crie um GameObject vazio e o chame de "Pivot Camera". A sua posição deve ser X = 0, Z = 0. A posição em Y pode ser ajustada, para ter a altura que voce desejar na camera. Mova sua Main Camera, para dentro de Pivot Camera. Altere a posição da camera para X = 1.66, Y = 0, Z = -9.93. Voce pode alterar o X de acordo com a quantidade que voce quer que o personagem fique de lado. Altere o Z para mudar a distancia entre a camera e o personagem. Crie outro GameObject vazio, e o nomeie para "PontoPadrao" esse sera o ponto padrão para o qual a camera irá retornar após sair de uma colisão com algo. O ponto padrão deve ter a mesma posição da camera, ao qual voce acabou de configurar.




Ajuda:
Deverá ficar parecido com isso...
Parte 4 - Analisando e adicionando os scripts


Ok.. Vamos começar com o Script do Swiper, que vai mandar os dados do touch. O chamaremos de Mouse, ele deve ser adicionado a imagem que voce criou no Canvas.


LEMBRETE: Não esqueça de que o nome do arquivo do Script, deve ser o mesmo nome que eu dei.



Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class Mouse : MonoBehaviour, IPointerDownHandler, IPointerUpHandler{

    public static Vector2 TouchPad; //Variavel que ira transmitir o quanto o player moveu seu dedo, para que assim possa rotacionar a camera.
    public static bool MovendoMira; //Variavel que indica se o player esta com o dedo na tela, controlando a camera.

    public int sensibilidadeX = 350; //Variavel que configura a sensibilidade no vetor X
    public int sensibilidadeY = 350; //Variavel que configura a sensibilidade no vetor Y
    public int inverterX = 1; //Variavel que inverte o eixo X, sendo 1 = sem inversão e -1 = com inversão
    public int inverterY = 1; //Variavel que ivnerte o eixo Y, sendo 1= sem inversão e -1 com inversão

    private bool PrimeiroToque;
    private int ID = -1;
    private bool Movendo;
    private float TempoParado;

    void Start()
    {
        Input.multiTouchEnabled = true; //Variavel que ativa o multitouch, caso ele esteja desativad por algum motivo
    }

    void Update() //Usaremos o Update, porque ele reconhecerá o toque do usuario em todas as vezes, sendo que o FixedUpdate, poderá falhar algumas
//vezes

    {
        if (Input.touchCount > 0) //Verificamos se existe um toque
        {
            foreach (Touch touch in Input.touches)
            {

                if (touch.position.x > Screen.width / 2.7f && touch.phase == TouchPhase.Began && PrimeiroToque == false) //Aqui verificamos se o
//o jogador esta tocando o lado direito da tela. Para isso usamos um calculo em que pegamos a largura da tela e dividimos por uma quantia. Eu
//dividi por 2.7, o que da por volta de 70% da tela. Por exemplo, numa tela com largura de 960 pixels, ele ira calcular e dividir por 2.7, o que
//sobra por volta de 355, esses 355 pixels de largura, serão a area em que o swipe sera ignorado. Voce pode alterar o valor para aumentar ou reduzir
//a area em que o touch sera ignorado, ou reconhecido.
                {
                    ID = touch.fingerId; //Aqui damos um ID ao dedo que o jogador esta usando para tocar, para não confundir com o dedo do Joystick
                    MovendoMira = true; //Aqui fazemos uma verificação e marcamos a booleana que informa que o jogador esta com o dedo na tela
                    PrimeiroToque = true; //Aqui fazemos uma verificação interna, que informa que o jogador esta dando seu primeiro toque
                }

                if (touch.phase == TouchPhase.Moved && PrimeiroToque == true && touch.fingerId == ID) //Aqui verificamos se o jogador esta movendo
//seu dedo pela tela
                {
                    TouchPad.x = touch.deltaPosition.x; //Aqui reconhecemos o quanto o jogador moveu seu dedo pelo eixo X no ultimo tempo
                    TouchPad.y = touch.deltaPosition.y; //Aqui reconhecemos o quanto o jogador moveu seu dedo pelo eixo Y no ultimo tempo

                    TouchPad.x *= sensibilidadeX * Time.deltaTime * inverterX; //Aqui acrescentamos a sensibilidade, multiplicamos por
http://Time.deltaTime, para que ele tenha uma velocidade fixa, e multiplicamos tambem pela variavel de inversão.
                    TouchPad.y *= sensibilidadeY * Time.deltaTime * inverterY;

                    TempoParado = 0; //Aqui informamos que o jogador esta movendo o dedo ainda
                    Movendo = true; //Aqui tambem
                    MovendoMira = true; //E aqui tambem
                }

                if(touch.phase == TouchPhase.Stationary && Movendo == true && touch.fingerId == ID) //Aqui verificamos se o jogador esta com o dedo
//parado.
                {
                    TempoParado += Time.deltaTime; //Caso ele esteja com o dedo parado, iremos começar a contar por quanto tempo ele esta parado

                    if (TempoParado >= 0.1f) //Caso ele esteja com o dedo parado por mais de 0.1 milisegundos, a variavel de controle, sera zerada
//para a camera parar de girar.
                    {
                        TouchPad = Vector2.zero;
                        TempoParado = 0; //O tempo tambem sera resetado para que o codigo continue verificando se o player continua com o dedo parado
                    }
                }

                if (touch.phase == TouchPhase.Ended && PrimeiroToque == true && touch.fingerId == ID) //Aqui fazemos uma checagem se o jogador
//tirou o dedo da tela
                {
                    MovendoMira = false; //Aqui informamos ao codigo que ele parou de mover a mira
                    Movendo = false; //Aqui tambem
                    ID = -1; //Aqui resetamos o ID de seu dedo
                    PrimeiroToque = false; //Aqui informamos que o primeiro toque acabou
                    TouchPad = Vector2.zero; //Aqui resetamos a variavel, para que a camera pare de girar.
                }
            }
        }
    }

    public void OnPointerDown(PointerEventData data)
    {

    }

    public void OnPointerUp(PointerEventData data) //Esse é apenas mais uma checagem de segurança para informar se o jogador parou de tocar.
//Caso a ultima chegagem não funcione, essa deverá entrar em ação, para parar a giração frenetica da camera.
    {
        MovendoMira = false;
        ID = -1;
        PrimeiroToque = false;
        TouchPad = Vector2.zero;
        Movendo = false;
        TempoParado = 0;
    }
}




Agora vamos ao codigo do personagem, que deve ser adicionado ao objeto Player. Chamaremos esse script de teste



Código:
using System.Collections;
using System.Collections.Generic;
using System;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;

public class teste : MonoBehaviour {
    public LayerMask Camadas; //Aqui escolhemos a camada que sera verificada pelo colisor de camera
    public Rigidbody Char; //Aqui adicionamos o Rigid Body do personagem
    public Transform MalhaChar; //Aqui adicionamos o Transform do gameobject MALHA
    public Transform Cam; //Aqui adicionamos o Transform do gameobject PIVOT CAMERA
    public Transform PosCam; //Aqui adicionamos o Transform do gameobject POSICAO PADRAO
    public Transform Camera; //Aqui adicionamos o Transform da Camera
    private Vector3 lookVec;
    private Vector3 moveVec;
    private Vector3 camVec;
    private RaycastHit CameraHit;
    private float CameraDistancia;

    private float EixoV;
    private float EixoH;
    private float MouseY;
    private float MouseX;

    void Start () {
        RaycastHit distanciaCamera;

        if (Physics.Linecast(-Cam.position, PosCam.position, out distanciaCamera)) //Aqui fazemos uma checagem rapida da distancia do ponto padrao
//para o centro da malha, isso pode ser util, caso voce queira aumentar a distancia da camera em relação ao player, assim ira alterar automaticamente
//a distancia da camera.
        {
            Debug.DrawLine(Cam.position, PosCam.position);
            CameraDistancia = distanciaCamera.distance + 3; //Aqui pegamos a distancia e guardamos numa variavel
        }
    }

    void FixedUpdate () {
        CameraConfiguracao();
        Andar();
        Mira();

        
    }

    private void CameraConfiguracao()
    {
        if (Physics.Raycast(Cam.position, -Cam.forward, out CameraHit, CameraDistancia, Camadas)) //Aqui emitimos um raycast do centro da malha até
//para tras, numa distancia determinada pela verificação anterior. Caso esse raio colida com alguma coisa, a camera, sera movida até lá
//assim ela não ira bugar dentro de nada. O objeto deve ter um colisor para que essa checagem aconteça com sucesso.
        {
            Camera.position = Vector3.Lerp(Camera.position, CameraHit.point, 18 * Time.deltaTime); //A camera é movida suavemente, graças ao Lerp.
            Debug.DrawLine(Cam.position, CameraHit.point);
        }
        else //Caso o raio não esteja colidindo com nada, a camera ira apenas seguir o seu ponto padrão suavemente.
        {
            Camera.position = Vector3.Lerp(Camera.position, PosCam.position, 18 * Time.deltaTime);
        }
    }

    private void Andar()
    {
        EixoH = CrossPlatformInputManager.GetAxis("Horizontal"); //Aqui pegamos os dados do Joystick e armazenamos numa variavel
        EixoV = CrossPlatformInputManager.GetAxis("Vertical"); //Aqui tambem

        lookVec = new Vector3(EixoH, 0, EixoV);
        moveVec = new Vector3(EixoH, 0, EixoV);

        //Joystick
        if (EixoV != 0 || EixoH != 0) //Aqui fazemos uma verificação para ver se o player esta ou não movendo o joystick
        {
            Char.velocity = transform.TransformVector(moveVec) * 18; //Caso ele esteja movendo, o player sera movido. O gameobject Player, é movido
//Na horizontal e vertical, ele não é rotacionado.
            MalhaChar.localRotation = Quaternion.Slerp(MalhaChar.localRotation, Quaternion.LookRotation(lookVec, Vector3.up), 14 * Time.deltaTime);
//Aqui ja rotacionamos a malha de acordo com o joystick, criando a ilusão de que o Joystick esta rotacionando o Player tambem.
        }

        if (EixoV == 0 && EixoH == 0) //Quando o jogador soltar o joystick, o personagem para de se mover.
        {
            Char.velocity = Vector3.zero;
        }
    }

    private void Mira()
    {
        if (Mouse.MovendoMira == true && EixoV == 0 && EixoH == 0) //Aqui fazemos uma checagem se o player esta com o dedo na tela, mais não esta se
//movendo. Então se isso estiver acontecendo, o personagem irá olhar para a mira.
        {
            MalhaChar.localRotation = Quaternion.Slerp(MalhaChar.localRotation, Quaternion.Euler(0, 0, 0), 12 * Time.deltaTime);
        }

        MouseX += Mouse.TouchPad.x * Time.deltaTime; //Aqui pegamos o valor da variavel do Mouse e armazenamos.
        MouseY += Mouse.TouchPad.y * Time.deltaTime; //Aqui tambem

        MouseY = Mathf.Clamp(MouseY, -20, 20); //Aqui limitamos a rotação em Y da camera, para que a camera não de cambalhotas.

        transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(0, MouseX, 0), 25 * Time.deltaTime); //Quando o jogador move os
//dedos no eixo X, o Player é rotacionado.
        Cam.localRotation = Quaternion.Slerp(Cam.localRotation, Quaternion.Euler(MouseY, 0, 0), 25 * Time.deltaTime); //Quando o jogador move os dedos
//em Y, o pivot da camera, é rotacionado para cima e para baixo.
    }
}


Agora alguns prints de como deve ficar a configuração...






Bom pessoal.. Era isso.. Me desculpem se ficou algo confuso.. São 3 da manhã e eu to com muito sono kkk, talvez não tenha conseguido deixar varias coisas claro... Mais nos proximos dias estarei a disposição para responder feedbacks e duvidas... Obrigado e não usem drogas!


Última edição por marcos4503 em Dom Abr 30, 2017 10:59 am, editado 3 vez(es)
avatar
marcos4503
Instrutor

Masculino PONTOS : 2033
REPUTAÇÃO : 433
Idade : 18
Áreas de atuação : Desenvolvimento Android
Básico de Design
Básico Blender
Unity
Programação em C#
Outras linguas.
Respeito as regras :

Ver perfil do usuário http://www.windsoft.pe.hu

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por fecirineu em Ter Maio 09, 2017 2:25 am

aqui não funcionou, amigo, mais tbm não deu erro kk não sei qual e o pior..


acredito que fiz tudo certo mesmo assim não funcionou..


avatar
fecirineu
Programador

Masculino PONTOS : 619
REPUTAÇÃO : 83
Respeito as regras :

Ver perfil do usuário http://gamesbr.cf/

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por fecirineu em Ter Maio 09, 2017 3:10 am

fecirineu escreveu:aqui não funcionou, amigo, mais tbm não deu erro kk não sei qual e o pior..


acredito que fiz tudo certo mesmo assim não funcionou..



precisava soo por na plataforma android kk
avatar
fecirineu
Programador

Masculino PONTOS : 619
REPUTAÇÃO : 83
Respeito as regras :

Ver perfil do usuário http://gamesbr.cf/

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por marcos4503 em Ter Maio 09, 2017 6:15 am

Kkkkkk ainda bem que deu certo!!
avatar
marcos4503
Instrutor

Masculino PONTOS : 2033
REPUTAÇÃO : 433
Idade : 18
Áreas de atuação : Desenvolvimento Android
Básico de Design
Básico Blender
Unity
Programação em C#
Outras linguas.
Respeito as regras :

Ver perfil do usuário http://www.windsoft.pe.hu

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por dstaroski em Ter Maio 09, 2017 7:41 am

Parabéns cara! vai ajudar muito a galera!
avatar
dstaroski
Instrutor

Masculino PONTOS : 1707
REPUTAÇÃO : 452
Idade : 28
Áreas de atuação : Téc. Hardware e Redes, Programação C#, Daz3D and Gimp

Respeito as regras :

Ver perfil do usuário https://www.daz3d.com/gallery/users/1575361

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por IanLuan em Ter Maio 09, 2017 10:30 am

Que isso cara, que tutorial lindo hehe. Parabéns e OBRIGADO !
avatar
IanLuan
MembroAvançado

Masculino PONTOS : 515
REPUTAÇÃO : 73
Idade : 17
Áreas de atuação : Programação, Modelagem Intermediária e Design (Ilustrator e Photsohop)
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por marcos4503 em Ter Maio 09, 2017 12:02 pm

Valeus!
avatar
marcos4503
Instrutor

Masculino PONTOS : 2033
REPUTAÇÃO : 433
Idade : 18
Áreas de atuação : Desenvolvimento Android
Básico de Design
Básico Blender
Unity
Programação em C#
Outras linguas.
Respeito as regras :

Ver perfil do usuário http://www.windsoft.pe.hu

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por rafaelllsd em Ter Maio 09, 2017 12:06 pm

Fico muito bom Very Happy
avatar
rafaelllsd
ProgramadorMaster

Masculino PONTOS : 1989
REPUTAÇÃO : 298
Idade : 16
Áreas de atuação : Programação C#.
Modelagem Básica.
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por marcos4503 em Ter Maio 09, 2017 12:07 pm

Sera que to fazendo jus a minha classe de programador? kkkkkkk
avatar
marcos4503
Instrutor

Masculino PONTOS : 2033
REPUTAÇÃO : 433
Idade : 18
Áreas de atuação : Desenvolvimento Android
Básico de Design
Básico Blender
Unity
Programação em C#
Outras linguas.
Respeito as regras :

Ver perfil do usuário http://www.windsoft.pe.hu

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por IanLuan em Ter Maio 09, 2017 12:36 pm

Kkkkk tá sim
avatar
IanLuan
MembroAvançado

Masculino PONTOS : 515
REPUTAÇÃO : 73
Idade : 17
Áreas de atuação : Programação, Modelagem Intermediária e Design (Ilustrator e Photsohop)
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por Gabriel César O em Ter Maio 09, 2017 1:32 pm


MANERÃO EM GOSTEI!
avatar
Gabriel César O
Programador

Masculino PONTOS : 1283
REPUTAÇÃO : 190
Idade : 15
Áreas de atuação : (ESTUDANDO SEGUNDO GRAU), (FUÇANDO NO UNITY)){
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por fecirineu em Sex Maio 19, 2017 2:54 pm

marcos4503 escreveu:Sera que to fazendo jus a minha classe de programador? kkkkkkk
a parte da camera não ta funcionando pq sera?

o joystick funciona perfeitamente porem a camera nao vira e não tem mira = o seu
avatar
fecirineu
Programador

Masculino PONTOS : 619
REPUTAÇÃO : 83
Respeito as regras :

Ver perfil do usuário http://gamesbr.cf/

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por marcos4503 em Sex Maio 19, 2017 3:04 pm

Você colocou tudo certo? Cada objeto como parente dos objetos certos etc?
avatar
marcos4503
Instrutor

Masculino PONTOS : 2033
REPUTAÇÃO : 433
Idade : 18
Áreas de atuação : Desenvolvimento Android
Básico de Design
Básico Blender
Unity
Programação em C#
Outras linguas.
Respeito as regras :

Ver perfil do usuário http://www.windsoft.pe.hu

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por fecirineu em Sab Maio 20, 2017 8:13 pm

marcos4503 escreveu:Você colocou tudo certo? Cada objeto como parente dos objetos certos etc?
sim porem não ta funcionando a camera nem o a bolinha aparece poderia vereficar o toturial e ver se tem algo errado? que faltou
avatar
fecirineu
Programador

Masculino PONTOS : 619
REPUTAÇÃO : 83
Respeito as regras :

Ver perfil do usuário http://gamesbr.cf/

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por marcos4503 em Sab Maio 20, 2017 8:17 pm

Aquela bolinha branca é do meu celular. Você pode ativala nas configurações de desenvolvedor do android. Eu testei os scripts, se você colocou cada objeto em seu lugar e entendeu o que os scripts fazem certinho, isso tem que funcionar... tenta verificar tudo denovo.. Ou testar em um projeto novo..
avatar
marcos4503
Instrutor

Masculino PONTOS : 2033
REPUTAÇÃO : 433
Idade : 18
Áreas de atuação : Desenvolvimento Android
Básico de Design
Básico Blender
Unity
Programação em C#
Outras linguas.
Respeito as regras :

Ver perfil do usuário http://www.windsoft.pe.hu

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por Dark_The_King em Ter Jun 20, 2017 7:29 pm

Ola amigo ficou muito bom só que no meu projeto deu um problema e a câmera fica indo pra longe do player tem alguma dica do que pode ser?

Dark_The_King
Membro
Membro

Masculino PONTOS : 824
REPUTAÇÃO : 1
Idade : 17
Respeito as regras :

Ver perfil do usuário http://organizacaox.comunidades.net/

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por marcos4503 em Ter Jun 20, 2017 9:55 pm

Mais o que foi pra longe? O Pivô? a camera? Qual componente? E você verificou se colocou todos os objetos como filhos dos outros corretamente e tal?
avatar
marcos4503
Instrutor

Masculino PONTOS : 2033
REPUTAÇÃO : 433
Idade : 18
Áreas de atuação : Desenvolvimento Android
Básico de Design
Básico Blender
Unity
Programação em C#
Outras linguas.
Respeito as regras :

Ver perfil do usuário http://www.windsoft.pe.hu

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por Dark_The_King em Qua Jun 21, 2017 2:02 pm

marcos4503 escreveu:Mais o que foi pra longe? O Pivô? a camera? Qual componente? E você verificou se colocou todos os objetos como filhos dos outros corretamente e tal?
ss a câmera msm mais eu ja arrumei era um erro na minha cena muito obg msm assim féis um ótimo tutorial Laughing

Dark_The_King
Membro
Membro

Masculino PONTOS : 824
REPUTAÇÃO : 1
Idade : 17
Respeito as regras :

Ver perfil do usuário http://organizacaox.comunidades.net/

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por marcos4503 em Qua Jun 21, 2017 2:12 pm

Ah, sim! Perfeito!
avatar
marcos4503
Instrutor

Masculino PONTOS : 2033
REPUTAÇÃO : 433
Idade : 18
Áreas de atuação : Desenvolvimento Android
Básico de Design
Básico Blender
Unity
Programação em C#
Outras linguas.
Respeito as regras :

Ver perfil do usuário http://www.windsoft.pe.hu

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por Duarte em Qua Jul 05, 2017 11:11 pm

Estou com um probleminha na fisica do meu personagem acho que esse script nao é apropriado para pulo, ou altura, porque ele cai lentamente quando esta no alto a fisica nao fica realista, teria como arrumar?
avatar
Duarte
MembroAvançado

Masculino PONTOS : 149
REPUTAÇÃO : 22
Idade : 17
Áreas de atuação : Programação
Desenvolvedor
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por marcos4503 em Qua Jul 05, 2017 11:15 pm

Só alterar a linha que faz o movimento pra isso:

Código:
Char.velocity = transform.TransformVector(moveVec.x * 18, Physics.gravity.y, moveVec.z * 18);
avatar
marcos4503
Instrutor

Masculino PONTOS : 2033
REPUTAÇÃO : 433
Idade : 18
Áreas de atuação : Desenvolvimento Android
Básico de Design
Básico Blender
Unity
Programação em C#
Outras linguas.
Respeito as regras :

Ver perfil do usuário http://www.windsoft.pe.hu

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por Duarte em Qua Jul 05, 2017 11:19 pm

marcos4503 escreveu:Só alterar a linha que faz o movimento pra isso:

Código:
Char.velocity = transform.TransformVector(moveVec.x * 18, Physics.gravity.y, moveVec.z * 18);
Alterei ele so reconhece a fisica quando esta movendo o JoyStick.
avatar
Duarte
MembroAvançado

Masculino PONTOS : 149
REPUTAÇÃO : 22
Idade : 17
Áreas de atuação : Programação
Desenvolvedor
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por fecirineu em Qua Jul 05, 2017 11:57 pm

Muito Bom Parabens!
avatar
fecirineu
Programador

Masculino PONTOS : 619
REPUTAÇÃO : 83
Respeito as regras :

Ver perfil do usuário http://gamesbr.cf/

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera

Mensagem por marcos4503 em Qui Jul 06, 2017 6:23 am

É só substituir o Vector3.zero pra Vector3(0, Physics.gravity.y, 0) na linha que faz ele parar de andar.
avatar
marcos4503
Instrutor

Masculino PONTOS : 2033
REPUTAÇÃO : 433
Idade : 18
Áreas de atuação : Desenvolvimento Android
Básico de Design
Básico Blender
Unity
Programação em C#
Outras linguas.
Respeito as regras :

Ver perfil do usuário http://www.windsoft.pe.hu

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