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:
IDB JAM #10
O software Revit é uma boa ferramenta para criação de cenários para unity?
[TUTORIAL] Lanterna
como deixar ativos os botões Escape/Home/Menu?
Seguir um raio no raycast a partir do ponto da tela clicado
MOVIMENTAÇÃO EM 8 DIREÇÕES.
Auto-Complete do Visual Studios
Contar pontos não faz a soma e tambem não atualiza
[TUTORIAL] Mostrar Data e Hora atual do Computador em um texto
Estamos precisando de um Programador que Programe em C# para Unity
Verificar inventario
Compilar pra Android
Baixos Brasil - Jogo de Carro Brasileiro!
[Teste]Testem Meu Jogo - Geometry Destroy Beta
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
[TUTORIAL] Como fazer uma Barra de Loading na Unity 5
[TUTORIAL] Derrubar arvores e dropar madeiras dela
Detectar Hit
[DUVIDA] Trocar botoes no teclado por joystick UI
Me ajudem, com a criação de terreno !
[RESOLVIDO]animações não sendo reproduzidas
DUVIDA : Raycast
Como fazer Escudo seguir a movimentação do Player?
Como fazer para o tiro ir para a direção onde o cano está apontado e não para cima
Unity Ads ou AdMob!
Render texture invertida
Como fazer barco estilo minecraft ou estilo navio que da pra andar dentro
Como locomover um trem
Pequeno problema com no Debug
Building System
TELEPORT 2D
Adicionar linhas no TXT pelo codigo
[TUTORIAL] Sistema de inventário Sobrevivência
Formação De Equipe Pra Criar RPG
Como não perder qualidade nas texturas 2d?
Personagem morrer ao cair da tela
Deixar objeto invisível.
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Divulgaçao de Battle of Worlds
[Resolvido]Problema nesse pequeno script
Movimentação
Puzzle para jogo de terror , abrir portas etc..
Script para mudar posição do personagem
Como saber quando minha animação terminou?
system inventory , craft
ajuda
Aplicar roupa no Rig do blender...
Project Valley of Trees - Primeiro nome que faz sentido KK
A.S TRUCK
Som de correr não para de tocar
Reproduzir audio no if c## e musica continuar tocando entre cenas.
Como Colocar Pontuação Final na GUI de GAME OVER
Unity 2017 Iluminação RealTime VS Baked [Comparaçâo]
Programador para equipe
Da pra colocar sisteminha em um jogo da unity pra trolar quem for piratear o jogo?
Como colocar musicas em sequencia para tocar?
Trajetória da bala com predição
Ajudinha com Bug
[RESOLVIDO] Poblema com Rigidbody
[DEVLOG] Projeto - Girl Blade (download Pré-Alpha)
Erro ao bulidar para Windows(.exe)
Mudar a gravidade com rotação (sensores do smartphone)
Problemas na detecção de colisão
Trabalhar simultaneamente na Unity
Movimetaçao infinita
(duvida)pq isso acontece com o inimigo?
[TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
[DUVIDA] Como alterar a intensidade do ChromaticAberration do PostProcessing?
Joystick VR não funciona no ios
Problema na minha animação feita na Unity
[TUTORIAL] Unity 5 - Como criar o próprio FPS Controller
IA para inimigo seguir o jogador ( Plataforma )
Tirar Fotos no Unity 5 FPS
[TUTORIAL] Cena inicial de CARREGAMENTO, creditos, logo, etc [UNITY 5]
Como Limitar Spawn de Hordas
Desmembramento
Exemplo de UI com abas - utilizando toggles e toggle group.
Ajuda Blender
Quando Instancio botão ele não aparece no canvas
Sistema de pesca 2D
Metroidvania - procuro membros
Criação de Update para Seus jogos?
Blender, animação + Unity
Preciso de alguém que desenvolva Craft, e Inventario com sistema de Bolsas, Pago bem
[MODELADOR] Procurando Projetos
Carákas que Tops WO.OW
Anexar GameObject por scrit
Como cria um sistema de seve game
Efeito de Audio
Bug de sumir todas as modelagens 3D na unity 2017
Quero fazer minha propria lens flare
Menu para selecao de cena
Dificuldades com programação no Unity 5 2D
Bug ? offline e online
Conflito de ações HELP
como saber a posição que a particula bateu?
Formação de Equipe Battle of Worlds
[JOGO EM BETA] Batalha de Canhão
Jogo de sobrevivência na ilha PRE-Alpha
Hoje à(s) 12:19 am
Hoje à(s) 12:13 am
Ontem à(s) 11:50 pm
Ontem à(s) 11:24 pm
Ontem à(s) 10:11 pm
Ontem à(s) 10:10 pm
Ontem à(s) 10:09 pm
Ontem à(s) 10:06 pm
Ontem à(s) 9:57 pm
Ontem à(s) 9:53 pm
Ontem à(s) 9:49 pm
Ontem à(s) 9:35 pm
Ontem à(s) 9:19 pm
Ontem à(s) 8:27 pm
Ontem à(s) 8:17 pm
Ontem à(s) 6:57 pm
Ontem à(s) 6:46 pm
Ontem à(s) 6:44 pm
Ontem à(s) 6:41 pm
Ontem à(s) 4:12 pm
Ontem à(s) 1:35 pm
Ontem à(s) 1:09 pm
Ontem à(s) 12:29 pm
Ontem à(s) 12:22 pm
Qui Set 21, 2017 10:03 pm
Qui Set 21, 2017 9:37 pm
Qui Set 21, 2017 9:36 pm
Qui Set 21, 2017 7:17 pm
Qui Set 21, 2017 5:37 pm
Qui Set 21, 2017 3:54 pm
Qui Set 21, 2017 12:19 pm
Qui Set 21, 2017 12:17 pm
Qui Set 21, 2017 11:00 am
Qui Set 21, 2017 9:00 am
Qua Set 20, 2017 11:07 pm
Qua Set 20, 2017 9:57 am
Qua Set 20, 2017 7:07 am
Qua Set 20, 2017 12:13 am
Ter Set 19, 2017 11:53 pm
Ter Set 19, 2017 10:15 pm
Ter Set 19, 2017 8:34 pm
Ter Set 19, 2017 7:40 pm
Ter Set 19, 2017 4:29 pm
Ter Set 19, 2017 12:14 pm
Ter Set 19, 2017 10:55 am
Ter Set 19, 2017 10:26 am
Ter Set 19, 2017 8:21 am
Ter Set 19, 2017 2:42 am
Seg Set 18, 2017 10:20 pm
Seg Set 18, 2017 9:16 pm
Seg Set 18, 2017 8:40 pm
Seg Set 18, 2017 8:39 pm
Seg Set 18, 2017 8:08 pm
Seg Set 18, 2017 2:22 pm
Seg Set 18, 2017 12:15 pm
Seg Set 18, 2017 9:33 am
Seg Set 18, 2017 8:21 am
Seg Set 18, 2017 12:59 am
Dom Set 17, 2017 5:04 pm
Dom Set 17, 2017 3:45 pm
Dom Set 17, 2017 10:49 am
Sab Set 16, 2017 11:18 pm
Sab Set 16, 2017 5:57 pm
Sab Set 16, 2017 4:10 pm
Sab Set 16, 2017 3:05 pm
Sab Set 16, 2017 2:23 pm
Sab Set 16, 2017 12:40 pm
Sab Set 16, 2017 12:16 pm
Sab Set 16, 2017 10:17 am
Sab Set 16, 2017 9:53 am
Sab Set 16, 2017 9:26 am
Sab Set 16, 2017 9:10 am
Sex Set 15, 2017 11:51 pm
Sex Set 15, 2017 8:27 pm
Sex Set 15, 2017 7:27 pm
Sex Set 15, 2017 6:17 pm
Sex Set 15, 2017 3:08 pm
Sex Set 15, 2017 11:19 am
Sex Set 15, 2017 9:43 am
Qui Set 14, 2017 11:50 pm
Qui Set 14, 2017 1:55 pm
Qui Set 14, 2017 12:13 pm
Qui Set 14, 2017 10:07 am
Qua Set 13, 2017 9:52 pm
Ter Set 12, 2017 10:33 pm
Ter Set 12, 2017 10:21 pm
Ter Set 12, 2017 9:34 pm
Ter Set 12, 2017 8:52 pm
Ter Set 12, 2017 7:05 pm
Ter Set 12, 2017 6:53 pm
Ter Set 12, 2017 6:51 pm
Ter Set 12, 2017 3:04 pm
Ter Set 12, 2017 2:04 pm
Ter Set 12, 2017 11:54 am
Ter Set 12, 2017 9:59 am
Ter Set 12, 2017 9:43 am
Ter Set 12, 2017 12:17 am
Seg Set 11, 2017 8:54 pm
Seg Set 11, 2017 8:48 pm
dimmuo
André Gomes
walibaka
Weslley
Weslley
Weslley
Weslley
Weslley
JorgeLuizxd
Weslley
Weslley
Weslley
Duarte
dstaroski
dstaroski
raulframos
MarcosSchultz
MarcosSchultz
MarcosSchultz
EndStarsProgramming2
Phph09
Phph09
RobinF
Jmspp
Duarte
g
Unidade3d5
Zecandy
ManoTrevor
AndyShow
Weslley
Weslley
916anderson
Bruno
JorgeLuizxd
Bruno
GabriG07
Dom3000
Dom3000
g
Weslley
Zecandy
Weslley
artplayer
PatifeCraft
Lteo
Fagner
Madness
PatifeCraft
dstaroski
eduu10
JorgeLuizxd
MateusWTP
Brunotrinkss
guimaraf
Weslley
guimaraf
ManoTrevor
PedroL123
dstaroski
GabriG07
Brgs886
Madness
Fagner
PedroL123
glauco
Callyde Jr
JorgeLuizxd
Henrique Ramires
Weslley
Weslley
Weslley
Weslley
Weslley
Weslley
916anderson
rafaelllsd
Fagner
Fagner
rafaelllsd
Carlin
artplayer
Ronnisz
Jhonatham1
mrariel2011
AndyShow
Fagner
PatifeCraft
AndyShow
AndyShow
AndyShow
Alessandra Matheus
Lteo
Callyde Jr
Weslley
Dom3000
Dom3000
dstaroski
dstaroski

[TUTORIAL] Como programar um carro/moto voador(a)

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

TUTORIAL [TUTORIAL] Como programar um carro/moto voador(a)

Mensagem por PauloFR em Sab Abr 29, 2017 2:06 am

Não sei se Voador ou Voadora é o termo correto para uma moto/carro q voa mas acho que é isso.. ;-;

Resolvi fazer um scriptzinho para movimentar motos e carros voadores depois de quase 4 horas programando (quase porque não fiquei 4 horas direto huehuehue) ai está ele  Surprised
lotado de ifs mas serve

Comentar o código todo foi cansativo então to com preguiça de explicar detalhadamente como funciona...
Mas a movimentação é parecida com as motos e carros dos jogos da Lego

Coisitas configuraveis:
Todas as teclas,Velocidade,AlturaPulo e etc

Vídeo demonstrativo e informativo:

Tudo que da para fazer com esse script está nesse vídeo hehe ;-;
as partes que cai na água e não cai da moto é porque a água está sem a tag do mapa...
Desculpe a baixa qualidade novamente...  os motivos são os mesmo: Gravador não grava em hd sem lagar, pc não é muito bom...

E agora vamos para o tutorial em texto huehuehue

Na verdade só comentei o código todo...

Script Moto & Carro:


Deverá ter o nome Moto ou a public class de acordo com o nome do .cs

Código:
// Grande parte das bools podem ser removidas só deixei para saber oque cada comando estava fazendo na hora de programar....
// pq não gosto do debug ;-;


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; // Biblioteca Ui usada para usar a ui
using System; // Biblioteca System usada para o serializable


[Serializable] // Cria uma nova class e adiciona uma setinha no Inspector
public class TeclasMov {
 public KeyCode Frente, Re, Esquerda, Direita, Cima, ResetarPos, Spawnar, Interagir; // KeyCode é usado para salvar teclas
 public GameObject CorpoPersonagem; // GameObject é usado para salvar Objetos
 public Vector3 RotacaoDireita,RotacaoEsquerda; // Vector3 é usado para salvar o x,y,z
}
// Para mudar o nome troque o public class pelo nome do script.
public class Moto : MonoBehaviour { // Nome do script

 // Variaveis //
 public GameObject SpawnMoto; // GameObject é usado para salvar 1 Objeto
 public Canvas Interagir; // Canvas é usado para salvar Canvas
 public static bool Queda; // É uma alternativa que pode ser acessada por outros scripts se conter statice ex: Verdadeiro ou Falso
 public TeclasMov Movimentos; // Aqui chamaremos a class criada acima pelo Serializable que é TeclasMov e daremos o nome de Movimentos
 public float Velocidade,DistanciaMax, AlturaPulo; // É usada para salvar numeros com virgulas ex: 0,1 // As virgulas na variavel podem separar os mesmos tipos de variaveis em slots diferentes
 private Quaternion RotacaoSalva; //Uma variavel privada que não será vista no inspector que guarda 4 eixos x,y,z,w
 private bool Acelerando, Re, VirandoD, VirandoE, Pulo, Pegou; // É uma alternativa privada ex: Verdadeiro ou Falso
    Rigidbody Fisica; // Variavel privada que guarda o 1 Rigibody
 GameObject Jogador; // Variavel privada que guarda 1 Objeto
 // Variaveis //

 void Start () { // Void que será chamada apenas no incio do jogo
 Interagir.enabled = false; // O Canvas "interagir" ficará desativado
 Movimentos.CorpoPersonagem.SetActive (false); // O "CorpoPersonagem" será desativado
 RotacaoSalva = this.transform.rotation; // A variavel "RotacaoSalva" receberá a rotação inicial do objeto com o script "Moto"
 Fisica = GetComponent<Rigidbody> (); // A variavel "Fisica" receberá o Rigidbody do objeto com o script "Moto"
 Jogador = GameObject.FindWithTag ("Player"); // "Jogador" receberá o objeto com a tag "Player"
 }

 void Update () { // Void chamada em todos os frames
 
 // Variaveis na void Update //
 float Distancia; // Já explicado
 Quaternion RotacaoDireitaDelta = Quaternion.Euler (Movimentos.RotacaoDireita * Time.deltaTime); // Aqui a "RotacaoDireitaDelta" receberá o "Movimentos.RotacaoDireita * Time.deltaTime"
                                                                                                // Sempre que usarmos alguma variavel criada na class "Movimentos" terá " Movimentos. "
 Quaternion RotacaoEsquerdaDelta = Quaternion.Euler (Movimentos.RotacaoEsquerda * Time.deltaTime);// Aqui a "RotacaoEsquerdaDelta" receberá o "Movimentos.RotacaoEsquerda * Time.deltaTime"
 // Variaveis na void Update //

 // Codigos sozinhos //
 Distancia = Vector3.Distance (this.transform.position, Jogador.transform.position); // A variavel Distancia será sempre a soma da distancia desse objeto com o "Jogador"
 // Codigos sozinhos //

 // Queda //

 if (Queda == true) { // Se a variavel Queda for true acontecerá ós códigos dentro da chave
 Pegou = false; // "Pegou" será false
               // "Pegou" é como se o jogador estive-se em cima da moto nesse caso
 Movimentos.CorpoPersonagem.SetActive (false); // O "CorpoPersonagem" será desativado
 Jogador.transform.position = this.transform.position; // O "Jogador" ficará na posição desse objeto
 this.transform.position = this.transform.position; // Esse objeto travará na posição atual
 Jogador.SetActive (true); // O "Jogador" será ativado
 Queda = false; // A variavel "Queda" ficará false
 }
 // Queda //

 // Interação //
 if (Distancia < DistanciaMax) { // Se a Distancia for menor que a DistanciaMax acontecerá ós códigos dentro da chave
 Interagir.enabled = true; // O Canvas "Interagir" será ativado
 if (Input.GetKeyDown (Movimentos.Interagir)) { // Se apertar a tecla "Interagir" e a distancia for menor acontecerá ós códigos dentro da chave
 Interagir.enabled = false; // O Canvas "Interagir" será desativado
 Movimentos.CorpoPersonagem.SetActive (true); // O "CorpoPersonagem" será ativado
 this.transform.rotation = RotacaoSalva; // A rotacao desse objeto será a "RotacaoSalva"
 Pegou = true; // "Pegou" Ficará true
 Jogador.SetActive (false); // O "Jogador" será desativado
 }
 } else {
           Interagir.enabled = false; // Já explicado
 }
 // Interação //
 if (Input.GetKeyDown (Movimentos.Spawnar)) { // Já explicado
 StartCoroutine ("DarSpawn"); // A Coroutine "DarSpawn" será chamada se a condição for feita.
 }

 if (Pegou == true) { // Já explicado

 // Teclas //
 if (Input.GetKey (Movimentos.ResetarPos)) { // Já explicado
 this.transform.rotation = RotacaoSalva; // Já explicado
 StartCoroutine ("Parar");// A Coroutine "Parar" será chamada se a condição for feita.
 }
 if (Input.GetKey (Movimentos.Frente)) { // Já explicado
 Acelerando = true; // "Acelerando" Ficará true
 Re = false; // "Re" Ficará true
 } else { // Se a condição não for feita os codigos da chave serão executados
 if (Re == false) { // Já explicado
 StartCoroutine ("Parar"); // Já explicado
 }
 }
 if (Input.GetKey (Movimentos.Re)) {
 Re = true; // Já explicado
 Acelerando = false; // Já explicado
 } else { // Se a condição não for feita os codigos da chave serão executados
 if (Acelerando == false) { // Já explicado
 StartCoroutine ("Parar"); // Já explicado
 }
 }
 if (Input.GetKey (Movimentos.Direita)) { // Já explicado
 VirandoD = true; // "VirandoD" Ficará true
 VirandoE = false;// "VirandoE" Ficará false
 } else { // Se a condição não for feita os codigos da chave serão executados
 if (VirandoE == false) { // Já explicado
 StartCoroutine ("Parar"); // Já explicado
 }
 }
 if (Input.GetKey (Movimentos.Esquerda)) { // Já explicado
 VirandoE = true; // Já explicado
 VirandoD = false; // Já explicado
 } else { // Já explicado
 if (VirandoD == false) { // Já explicado
 StartCoroutine ("Parar"); // Já explicado
 }
 }
 if (Input.GetKey (Movimentos.Cima)) { // Já explicado
 Pulo = true; // Já explicado
 } else { // Já explicado
 Pulo = false; // Já explicado
 }
 // Teclas //

 // Movimento //
 if (Acelerando == true) { // Já explicado
 Fisica.AddForce (transform.forward * Velocidade, ForceMode.Acceleration); // Será adicionada força do tipo Acceleration na parte "forward" vezes a "Velocidade" do objeto com o rigibody Fisica
                                                                                //AddForce          //ForceMode.Acceleration  // transform.forward * Velocidade
 }
 if (Re == true) {
 Fisica.AddForce (transform.forward * -Velocidade, ForceMode.Acceleration); // Será adicionada força do tipo Acceleration na parte negativa do "forward" vezes a "Velocidade" do objeto com o rigibody Fisica
                                                                                              //AddForce    //ForceMode.Acceleration  // transform.forward * -Velocidade
 }
 if (VirandoD == true) {
 Fisica.MoveRotation (Fisica.rotation * RotacaoDireitaDelta); // O Objeto com a variavel "Fisica" será rotacionado de sua posicao atual até a "RotacaoDireitaDelta"
                                                                  //Fisica.MoveRotation                              //(Fisica.rotation * RotacaoDireitaDelta)
 }
 if (VirandoE == true) {
 Fisica.MoveRotation (Fisica.rotation * RotacaoEsquerdaDelta);// O Objeto com a variavel "Fisica" será rotacionado de sua posicao atual até a "RotacaoEsquerdaDelta"
                                                                 http://Fisica.MoveRotation                              //(Fisica.rotation * RotacaoEsquerdaDelta)
 }

 // ^^^^
 // Também funcionaria Usar uma rotacaoDelta negativa em vez de colocar 2 ifs nessa parte acima ^^^^
 // ^^^^

 if (Pulo == true) { // Já explicado
 Fisica.AddForce (transform.up * AlturaPulo, ForceMode.Impulse); // Será adicionada força do tipo Impulse na parte "up" vezes a "AlturaPulo" do objeto com o rigibody Fisica
                                                                     // Fisica.AddForce  // ForceMode.Impulse       http://transform.up * AlturaPulo
 }
 // Movimento //
 }
 }

 IEnumerator Parar () { // A coroutine "Parar" chamada anteriormente será ativada aqui
 yield return new WaitForSeconds (1); // Aguardará 1 segundo e executará os comandos abaixo
 Re = false; // Já explicado
 Acelerando = false; // Já explicado
 VirandoD = false; // Já explicado
 VirandoE = false; // Já explicado
 StopCoroutine ("Parar"); // Irá parar a couroutine "Parar"
 }

 IEnumerator DarSpawn () { // A coroutine "DarSpawn" chamada anteriormente será ativada aqui
 yield return new WaitForSeconds (3);// Aguardará 3 segundos e executará os comandos abaixo
 Re = false; // Já explicado
 Acelerando = false; // Já explicado
 VirandoD = false; // Já explicado
 VirandoE = false; // Já explicado
 this.transform.position = SpawnMoto.transform.position; // A posição do objeto será a mesma do "SpawnMoto"
 this.transform.rotation = SpawnMoto.transform.rotation; // A rotação do objeto será a mesma do "SpawnMoto"
 StopCoroutine ("DarSpawn"); // Irá parar a couroutine "DarSpawn"
 }
} // Finaliza o script

Script Queda da moto:


Deverá ter o nome motoQueda ou a public class de acordo com o nome do .cs

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

public class motoQueda : MonoBehaviour {

 public string TagMapa; // Será usada para gravar a "TagMapa" // Strings são utilizadas para gravar arquivos em textos ex: "Irineu você não sabe nem eu"

 void OnTriggerEnter (Collider Col) { // Ao entrar no trigger com o Colisor "col" os comandos dentro da chave serão executados
 if (Col.gameObject.tag == TagMapa) { // Se o colisor "col" colidir com o objeto com a "TagMapa"
 Moto.Queda = true; // Chamaremos a  " bool static Queda " do script moto e deixaremos true
 }
 }
} // Finaliza o código

Script Limite:


Deverá ter o nome Limite ou a public class de acordo com o nome do .cs

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

public class Limite : MonoBehaviour {

 // Variaveis //
 public string TagMoto; // Será usada para gravar a "TagMoto"
 bool Atuando;
 // Variaveis //

 void OnTriggerEnter (Collider col) { // Ao entrar no trigger com o Colisor "col" os comandos dentro da chave serão executados
 if (col.gameObject.tag == TagMoto) { // Se o colisor "col" colidir com o objeto com a "TagMoto"
 Atuando = true; // Atuando ficará true
 }
 }

 void OnTriggerExit (Collider col) { // Ao sair do trigger com o Colisor "col" os comandos dentro da chave serão executados
 if (col.gameObject.tag == TagMoto) { // Se o colisor "col" parar de colidir com o objeto com a "TagMoto"
 Atuando = false; // Atuando ficará false
 }
 }


 //                                                                              //
 // Modifique essa parte para que tenha diferentes reações na chegada no limite //
 //                                                                            //
 void Update () {
 if (Atuando == true) { // Se atuando for true
 Moto.Queda = true; // Chamaremos a  " bool static Queda " do script moto e deixaremos true
 }
}
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
 // Modifique essa parte para que tenha diferentes reações na chegada no limite //
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//


} // Finaliza o codigo

Fiz um exemplo de como usar  para motos  Smile mas é quase a mesma coisa para carros.

Modo de usar:


1 - Faça um Collider de preferencia um cubo e ajuste de modo que sobre algum espaço sobre o lado da moto.



Observe que o mesh não está no meio mas tente deixar bem centralizado...

2 - Coloque o mesh da moto como filho do collider.

3 - Faça um outro collider só que agora coloque ele como filho do collider com a mesh da moto.

4 - Coloque bem centralizado na cabeça do personagem.


5 - Adicione um rigibody ao primeiro collider.

6 - Configure do modo que você quiser, eu configurei assim:



7 - Adicione o script moto ao primeiro collider.

8 - Configure do modo que seja adequado em relação ao rigidbody, o meu está assim:



A variavel Rotacao Direita define a velocidade e o eixo que a moto rotacionará para a Direita.
A variavel Rotacao Esquerda define a velocidade e o eixo que a moto rotacionará para a Esquerda.
Velocidade é a velocidade.
Distancia Max é a distancia necessaria para subir na moto.
Altura Pulo é a altura precisa para o Pulo.
Resetar Pos é a tecla que resetará a rotação da moto.
Spawnar é a tecla que instanciará a moto.
O resto é meio obvio ;-;

Ignore os GameObjects por hora jaja irei explicar.

9 - Faça duas tags uma para o Mapa  e outra para a Moto ou utilize a própria do player (não explicarei porque é algo fácil de se encontrar por ai).

10 - Coloque o script motoQueda no segundo collider e coloque a tag do mapa criada no passo 9.



11 - Faça um terceiro Collider que será o Limite de altura.

12 - Coloque o script Limite nele e configure da melhor forma, o meu está assim.



Ignore o slot da Gravidade ele seria a força que a moto seria empurrada para baixo, mas fazer algo bom demoraria mais ainda, talvez em uma breve att do script ensino a fazer esse sisteminha...

13 - Faça um Objeto vazio e coloque o personagem dentro dele juntamente com a camera que seguirá o mesmo (não é preciso colocar a camera mas se você quiser coloque...).

14 - Faça um canvas com um Text e configure do modo que você quiser, caso já tenha um canvas apenas mude o "Interagir" do script moto de Canvas para Text.

15 - Faça outro Objeto vazio e deixe como filho do jogador ele será onde a moto será spawnada.

16 - Coloque o primeiro Objeto vazio na variavel CorpoPersonagem.

17 - Coloque o canvas na variavel Interagir.

18 - Coloque o segundo objeto vazio na variavel SpawnMoto.

Pronto seu script está configurado.



Para melhorar a movimentação basta configurar o rigibody e as forças + o -  e se quiser deixar o script menor é só remover as bools e colocar direto no código da key ;-; se mesmo assim não ficar bom sinta-se livre para modificar ;-;


Se esqueci de algo ou não está funcionando corretamente é só comentar que tento ajudar  Smile
avatar
PauloFR
Instrutor

Masculino PONTOS : 1248
REPUTAÇÃO : 309
Idade : 15
Áreas de atuação : Iniciante:Modelagem e Terminal-Linux. Intermediário:C#,Java,HTML e CSS
Respeito as regras :

Ver perfil do usuário http://ppaulofr.blogspot.com.br

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