Fazer um player
Do projeto vazio a um personagem que anda, pula, corre e colide, com câmera em órbita, controles de toque e animação, rodando no Play do celular.
Parcial · APK 0.4.0 · roteiro conferido na fonte; o giro do Personagem foi visto no POCO F7 em 27/10; a execução completa entra com a rodada de capturas
Ao final você terá um personagem que anda com o joystick de toque e vira para onde anda, olha arrastando o dedo, pula, corre segurando um botão, para nas paredes e troca entre parado e andando.
O que o Play já dá de graça
Seção intitulada “O que o Play já dá de graça”No Play do editor, o toque já controla o personagem sem você montar nenhuma interface:
- metade esquerda da tela: um joystick aparece onde você encosta o dedo (ação Mover);
- metade direita: arrastar gira a câmera (ação Olhar);
- botão Saltar: aparece quando há um personagem com Velocidade do salto maior que zero.
O projeto novo já vem com essas três ações no mapa de entrada. Quem recebe o controle é o personagem ligado à câmera (o alvo da Câmera virtual ou da Câmera seguidora).
1. Projeto
Seção intitulada “1. Projeto”Na tela de Projetos, Novo projeto › nome MeuPlayer › Criar projeto.
2. Chão com colisão
Seção intitulada “2. Chão com colisão”Uma malha sozinha não colide: no Play, só têm física os objetos com Corpo físico e Colisor 3D.
- + › Geometria › Chão. Ele nasce como uma caixa de 20 × 0,2 × 20 m com o topo na altura 0.
- No Inspector, Adicionar componente › Corpo físico (o padrão é Estático).
- Adicionar componente › Colisor 3D (o padrão é Caixa, que acompanha a escala do objeto e cobre o chão inteiro).
3. Paredes
Seção intitulada “3. Paredes”- Parede visível: + › Geometria › Cubo, escala 10 × 3 × 0,5, posição Y 1,5, e os mesmos Corpo físico e Colisor 3D do chão.
- Parede invisível: + › Física › Caixa de colisão (corpo estático sem malha).
4. Personagem
Seção intitulada “4. Personagem”+ › Física › Personagem cilíndrico cria a raiz com o componente Personagem e um cilindro como visual. Ponha a posição Y em 0,1, logo acima do chão.
No Inspector do Personagem, para começar:
| Campo | Valor | Por quê |
|---|---|---|
| Velocidade | 4 m/s | o padrão (8) é rápido para andar |
| Aceleração | 20 | arranca sem escorregar |
| Frenagem | 25 | para logo ao soltar o joystick |
| Controle no ar | 0,5 | dá para corrigir o salto no ar |
| Velocidade do salto | 5 (padrão) | maior que zero faz o botão Saltar aparecer |
| Fonte de controle | Automático (padrão) | toque, teclado, gamepad e script disputam pela prioridade |
| Girar para a direção do movimento | ligado | o corpo vira para onde anda, suavizado (grupo Direção) |
| Relativo à câmera | ligado (padrão) | o joystick para cima anda para onde a câmera olha |
Com um modelo seu (.glb ou .fbx): importe o modelo, selecione a malha, segure o dedo na linha da Hierarquia e escolha Criar raiz Character…. A cápsula é medida pelo modelo, a malha vira filha, a raiz fica no pé e Girar para a direção do movimento já vem ligado.
No grupo Direção também ficam Velocidade do giro (720 °/s) e Suavização do giro (0,12 s, como o Rotation Smooth Time do Third Person Controller da Unity). Em C#: Character.FaceMovement, CameraRelative, FaceTurnSpeed e RotationSmoothTime.
Ficha completa: Personagem.
5. Câmera
Seção intitulada “5. Câmera”- Selecione o personagem.
- + › Básicos › Câmera virtual. Ela já vem em Órbita, Olhar para o alvo, com Evitar obstáculos e Alvo rastreado = o personagem. A Main Camera, que o projeto novo já traz, ganha um Cérebro e passa a seguir a Câmera virtual.
- Na Câmera virtual, Raio da órbita = 4.
Controlar pela entrada de olhar já vem ligado: no Play, arrastar na metade direita gira a órbita. A Main Camera já tem a marca MainCamera, que define a câmera do jogo; se criar outras câmeras, deixe a marca só nela.
6. Primeiro Play
Seção intitulada “6. Primeiro Play”Toque ▶. O joystick à esquerda move o personagem relativo à câmera e o corpo vira para onde anda, arrastar à direita gira a câmera, Saltar pula e as paredes bloqueiam.
7. Botão Correr
Seção intitulada “7. Botão Correr”- ☰ › Configurações do projeto › Entrada.
- + Ação. Na aba Ação, Nome =
Correr. Na aba Vínculos, confira Fonte = Botão touch (o código fica em Avançado). - A seção passa a mostrar 4 ações: Mover, Olhar, Saltar e Correr. No Play aparece o botão Correr ao lado de Saltar.
8. O script de correr
Seção intitulada “8. O script de correr”No painel Arquivos, toque o ícone de código › Novo componente C#, cole o código, Salvar tudo e Recompilar projeto. Na raiz do personagem, Adicionar componente › Scripts do projeto › Correr.
Conferido contra a API C# do APK (tipos e membros um a um); a compilação e o Play no aparelho entram com a rodada de capturas.
using Astra;using Astra.Components;
[ComponentId("tutorial.correr")]public sealed class Correr : Behavior{ [PropertyId("acao")] public string Acao = "Correr"; [PropertyId("multiplicador")] public float Multiplicador = 1.8f;
private Character personagem; private bool pronto; private float velocidadeBase;
public override void Start() { var encontrado = Object.GetComponent<Character>(); if (encontrado is null) { Scene.Log(ObjectId, "Correr: coloque este script no objeto que tem Personagem"); Enabled = false; return; } personagem = encontrado.Value; velocidadeBase = personagem.Speed; pronto = true; if (!Input.Exists(Acao)) Scene.Log(ObjectId, "Correr: crie a ação '" + Acao + "' em Configurações do projeto › Entrada"); }
public override void Update(float deltaTime) { if (!pronto || !personagem.IsAlive) return; var alvo = Input.Pressed(Acao) ? velocidadeBase * Multiplicador : velocidadeBase; if (personagem.Speed != alvo) personagem.Speed = alvo; }
public override void Disable() { if (pronto && personagem.IsAlive) personagem.Speed = velocidadeBase; }}O que cada parte faz:
[ComponentId]dá a identidade do componente no projeto;[PropertyId]faz o campo aparecer no Inspector (dá para trocar o multiplicador sem mexer no código).Startacha o Personagem no mesmo objeto e guarda a velocidade original.Update, a cada quadro, usa a velocidade maior enquanto Correr está apertado. A física relê a velocidade a cada passo, então muda na hora.Disabledevolve a velocidade original.
Sem script: reagir ao botão com a Entrada do jogador
Seção intitulada “Sem script: reagir ao botão com a Entrada do jogador”Para ações que só disparam algo (tocar um som, acender uma luz, ligar um efeito), não precisa de código: no personagem, Adicionar componente › Entrada do jogador, marque Correr em Ações e, numa Conexão de evento, use Entrada: ação executada com o filtro Ação = Correr. Detalhes em Entrada do jogador. Para mudar a velocidade enquanto o botão está segurado, o script acima continua sendo o caminho.
9. Animação (com um modelo seu)
Seção intitulada “9. Animação (com um modelo seu)”O cilindro não anima. Com um modelo importado que tenha clipes de parado e andar:
- Selecione o visual (o filho com a malha) › + › Gameplay › Animator.
- No Inspector, Abrir grafo do Animator › Criar recurso.
- + Float, nome
Velocidade, Fonte = Velocidade no plano, Resposta 0,1 s. Em Corpo / motor, escolha a raiz do personagem. - +Estado duas vezes:
ParadoeAndar, tipo Clipe, cada um com seu clipe. Em Parado, Definir como padrão. - Ligar Parado → Andar com + condição Velocidade Maior que 0,2 e Tempo de saída desligado; e Andar → Parado com Menor que 0,2.
O Animator lê a velocidade do Personagem sozinho, sem script. Alternativa: um estado Mistura 1D com o parâmetro Velocidade e os dois clipes.
10. Interface de toque própria (opcional)
Seção intitulada “10. Interface de toque própria (opcional)”Para desenhar seus próprios controles: ☰ › Interface (UI + ImGui) › composição HUD / controles touch (cria um Joystick e o botão Saltar) › Salvar. Num objeto, adicione Canvas UI com Documento UI = o arquivo salvo e Jogador / receptor = o personagem. Detalhes na trilha UI de jogo e HUD.
Limites
Seção intitulada “Limites”- A Velocidade no plano do Animator usa a velocidade pedida ao Personagem: contra uma parede, ele pode continuar em Andar.
- Os controles automáticos (joystick, olhar, Saltar) são do Play do editor; no APK exportado, monte a interface de toque do passo 10.
- O que você muda durante o Play volta ao parar.
- Próximo passo: ilumine a cena do seu player em Cena, luz, céu e clima.