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 :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Servidores sem limite por usuário.
[TUTORIAL] CONFIGURANDO O UNITY PARA COMPILAR PARA ANDROID
Como carregar imagens e videos
[DÚVIDA] usar PERSONAGEM 3D no FIRST PERSON
Transform.up Muito rápido!
[PROJETO MOBILE] Defeat the Illuminatis
Desativar HingeJoint
[RESOLVIDO] Tocar som em script que exibe uma mensagem
[RESOLVIDO] Sons na Unity 2017
tem como excluir uma( ou várias ) contas do fórum?
Como ativar animação quando o objeto se move ?? sem rigidbody
[TUTORIAL] Inteligência artificial, inimigo e AIPoints
Manager Como fazer um jogo nesse estilo?
[DÚVIDA] TIRANOSSAURO REX no UNITY?
Verificar se a camera está virada para o objeto
[TUTORIAL] Animação customizável (Por scripts)
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Duvida com animação
[TUTORIAL] Criar jogo Colors/Genius com C#
Jumper boy
[RESOLVIDO] Utilizar o mesmo botão para duas ações. (if e else)
[____ADMINISTRAÇÃO____] PRECISO DE AJUDA [DICA PARA SER AJUDADO]
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
Ajuda com AI Inimigo.
[Script] Mudar a orientação em runtime
Como mover dois objetos juntos.
[TUTORIAL] Third Person Shooter
[PEDIDOS DE TUTORIAIS]
Google Play Games
Como apagar Proceduram material da pista, quando for recarregar a cena?
PROBLEMA NULL REFERENCE EXCEPTION
Calculo de previsão de coordenada
Unity - Rodar 2 cenas ao mesmo tempo
| AJUDA DISCORD | Descubra aqui como fazer para o link do seu servidor nunca expirar.
Trigger detectando apenas o character controller
seguir 2 objetos com a mesma tag
Zezin Na Copa da Russia Realidade Aumentada
DISCORD
Novo jogo - Astero - PlayStore
Variável receber valor de uma array
erro no script
[RESOLVIDO] Bug de wallpaper preto no windows.
[TUTORIAL] Movimento de camera em primeira pessoa e sons de passos ou HeadBob
[RESOLVIDO] Tomar dano do inimigo e causar dano no mesmo
[RESOLVIDO] Texto se encaixar dentro de uma imagem.
[Projeto] Line Battle
Jogo Maria Bella
Spawner de Inimigo n preenche todas as posições
[TUTORIAL] AI Enemy ( Jogos de terror )
Como corrigir o box collider do unity?
SPAWN Baseado na Posição (UNITY)
[RESOLVIDO] Problema em um script
Unity - executável não roda banco de dados
Como criar um sistema de Ranking simples.
Animação Humanoid
Blender - Erro ao aplicar influência automática nos ossos de personagem
Objetos duplicados ao instanciar
Duvida com collider
[RESOLVIDO] Problemas com API
Pegar e Jogar armas no chão (estilo CS 1.6)
[RESOLVIDO] Projeteis Online
[TUTORIAL] Zone Wall - ESTILO BATTLE ROYALE
| DÚVIDA | - Como aprender C#?
Como criar um ranking online na Unity usando a PlayFab e o Facebook?
Dúvida sobre método de acesso as variáveis
checkpoint
Como faço para otimizar meu projeto da Unity 3D?
[RESOLVIDO] Alguém me explica isso? (Animator script)
[RESOLVIDO] Duvida com GameManager
duvidas com marcas reais em jogos
Objeto na UI
Minimap/Radar/GPS Estilo GTA V
Problemas com a câmera
PROBLEMAS COM O NAVIGATION
[TUTORIAL] Serialização - JSON
Textura de luzes rosa
Banco de dados android
Girar arma
Qual o melhor meio de iluminar essa scene?
[Jogo] Flap OCO (Android & PC)
[TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera
ANIMAÇÃO INIMIGO AI
[RESOLVIDO] Menu Pause Dúvida
Unity 5: Object reference not set to an instance of an object
Como saber se o controle foi conectado?
[ENQUETE OFICIAL] Você está vendo o CHAT DO FÓRUM?????
Onde posso aprender a fazer uma IA estilo a do jogo de tabuleiro Zombicide?
[RESOLVIDO] Erro -> Android SDK is missing required API level 23
Sprites com mesmas cores.
[Formação de Equipe] Battles of Worlds
Como fazer para sair do jogo apertando uma tecla?
VAGA MODELADOR
[Em Desenvolvimento] Battles of Worlds
[RESOLVIDO]Colocar dois fundos diferentes em um mesmo canvas dependendo do menu carregado.
[TUTORIAL] 42 ÓTIMAS DICAS DE OTIMIZAÇÃO PARA JOGOS MOBILE (Android)
[____REGRAS DO FÓRUM____]
SetPartner
Como eu posso criar uma rede social semelhante ao NEAKI?
Como colocar dois backgrounds diferentes para dois canvas diferentes?
Ontem à(s) 10:25 pm
Ontem à(s) 9:58 pm
Ontem à(s) 9:43 pm
Ontem à(s) 9:29 pm
Ontem à(s) 8:44 pm
Ontem à(s) 7:30 pm
Ontem à(s) 7:25 pm
Ontem à(s) 7:15 pm
Ontem à(s) 5:22 pm
Ontem à(s) 4:35 pm
Ontem à(s) 7:16 am
Ontem à(s) 6:36 am
Ontem à(s) 6:19 am
Ontem à(s) 12:54 am
Ter Jun 19, 2018 9:49 pm
Ter Jun 19, 2018 8:25 pm
Ter Jun 19, 2018 8:12 pm
Ter Jun 19, 2018 8:08 pm
Ter Jun 19, 2018 3:50 pm
Seg Jun 18, 2018 10:51 pm
Seg Jun 18, 2018 7:29 pm
Seg Jun 18, 2018 6:46 pm
Seg Jun 18, 2018 6:45 pm
Seg Jun 18, 2018 6:43 pm
Seg Jun 18, 2018 6:38 pm
Seg Jun 18, 2018 4:36 pm
Seg Jun 18, 2018 3:42 pm
Seg Jun 18, 2018 3:33 pm
Seg Jun 18, 2018 1:26 pm
Seg Jun 18, 2018 7:23 am
Dom Jun 17, 2018 11:54 pm
Dom Jun 17, 2018 11:50 pm
Dom Jun 17, 2018 8:49 pm
Dom Jun 17, 2018 5:21 pm
Dom Jun 17, 2018 2:37 pm
Dom Jun 17, 2018 12:48 pm
Dom Jun 17, 2018 11:34 am
Sab Jun 16, 2018 10:40 pm
Sab Jun 16, 2018 9:43 pm
Sab Jun 16, 2018 9:28 pm
Sab Jun 16, 2018 8:48 pm
Sab Jun 16, 2018 5:13 pm
Sab Jun 16, 2018 5:05 pm
Sab Jun 16, 2018 4:51 pm
Sab Jun 16, 2018 4:33 pm
Sab Jun 16, 2018 4:14 pm
Sab Jun 16, 2018 3:39 pm
Sab Jun 16, 2018 1:48 pm
Sex Jun 15, 2018 10:15 pm
Sex Jun 15, 2018 8:31 pm
Sex Jun 15, 2018 8:24 pm
Sex Jun 15, 2018 8:02 pm
Sex Jun 15, 2018 5:08 pm
Sex Jun 15, 2018 2:46 pm
Sex Jun 15, 2018 12:08 pm
Sex Jun 15, 2018 10:46 am
Qui Jun 14, 2018 6:41 pm
Qui Jun 14, 2018 4:25 pm
Qui Jun 14, 2018 2:34 pm
Qui Jun 14, 2018 6:19 am
Qua Jun 13, 2018 10:08 pm
Qua Jun 13, 2018 9:59 pm
Qua Jun 13, 2018 6:48 pm
Qua Jun 13, 2018 3:16 pm
Qua Jun 13, 2018 3:11 pm
Qua Jun 13, 2018 9:12 am
Qua Jun 13, 2018 6:25 am
Qua Jun 13, 2018 1:00 am
Qua Jun 13, 2018 12:40 am
Ter Jun 12, 2018 11:08 pm
Ter Jun 12, 2018 8:00 pm
Ter Jun 12, 2018 5:17 pm
Ter Jun 12, 2018 2:25 pm
Ter Jun 12, 2018 9:00 am
Seg Jun 11, 2018 11:57 pm
Seg Jun 11, 2018 7:17 pm
Seg Jun 11, 2018 2:51 pm
Seg Jun 11, 2018 2:42 pm
Seg Jun 11, 2018 10:18 am
Seg Jun 11, 2018 10:05 am
Dom Jun 10, 2018 10:52 pm
Dom Jun 10, 2018 7:18 pm
Dom Jun 10, 2018 6:29 pm
Dom Jun 10, 2018 6:23 pm
Dom Jun 10, 2018 3:53 pm
Dom Jun 10, 2018 12:32 pm
Dom Jun 10, 2018 9:32 am
Sab Jun 09, 2018 5:36 pm
Sab Jun 09, 2018 5:14 pm
Sab Jun 09, 2018 5:09 pm
Sab Jun 09, 2018 11:44 am
Sab Jun 09, 2018 10:49 am
Sab Jun 09, 2018 8:27 am
Sex Jun 08, 2018 4:23 pm
Sex Jun 08, 2018 3:35 pm
Sex Jun 08, 2018 3:22 pm
Sex Jun 08, 2018 8:24 am
Sex Jun 08, 2018 1:02 am
Qui Jun 07, 2018 11:48 pm
Alphax
gcs13
Zack2
gcs13
dstaroski
dstaroski
DevTerror
richardfalcos
thancor
MarcosSchultz
dstaroski
NKKF
Callyde Jr
gcs13
Alphax
Zack2
rafaelllsd
NKKF
M4theuz
SuperGamer
DevTerror
dstaroski
dstaroski
dstaroski
dstaroski
Dom3000
Phph09
Zack2
NKKF
guimaraf
fecirineu
fecirineu
ismarspn
SuperGamer
Alphax
NKKF
natanael.olimpio
Carlos Mesquita
Édipo
Flávio
dstaroski
M4theuz
dstaroski
kenau
NKKF
Alphax
foxtenn
NKKF
BrazaTattoo
lesgoy
dstaroski
Dom3000
Midoriiiiii
BRGC
Dom3000
Dom3000
Dom3000
Zack2
yVIEIRA
Phph09
fecirineu
IanLuan
IanLuan
natanael.olimpio
guimaraf
NyeTiSS
francisco barroso
Alphax
Zack2
dstaroski
Alphax
Duarte
NKKF
dstaroski
igorobm
JonathanDiego
mafipt
Zack2
fecirineu
Dom3000
francisco barroso
bertarele
Magnatah
ZeroTuhnder
FelipeSouza11
francisco barroso
YmKx
francisco barroso
NKKF
Dom3000
Isabela
Dom3000
Dom3000
kenau
FelipeSouza11
FelipeSouza11
NyeTiSS
Callyde Jr
FelipeSouza11

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

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 Posts : 779
Pontos : 1718
Reputação : 348
Registro : 25/01/2017
Idade : 15
Áreas de atuação : Oque será uma área de atuação, senão um modo de manter-nos presos ao sistema

Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com/u8329

Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum