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] Unity 5 - Skid Marks (marcas de derrapagem)
Como apagar Proceduram material da pista, quando for recarregar a cena?
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
[TUTORIAL] Tirar printscreen em Runtime
Melhor método de criar mapas fechados para jogos?
estou montando uma equipe para jogos Android!!!!
Como tenho que desenhar o cenario 2D?
Destruir Polygon Collider 2D e Readiciona-lo, porém não há uma precisão no colisor gerado!
[____ADMINISTRAÇÃO____] PRECISO DE AJUDA [DICA PARA SER AJUDADO]
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
Jogo Mobile - Utomate Fighter
Problema na física dos carros
Como fazer para traçar uma routa
[Ajuda] como fazer um objeto trocar de cor ao colidir com outro objeto
Botão para interagir com objeto
Sprite quando muda de animaçao muda de lugar e tamanho ajudem
Botão aparecer folha
(DÚVIDA) como eu posso fazer para a Câmera ativar um objeto ao ver?
Sistema de recoil e marca do tiro na parede!!!
[TUTORIAL] MOVIMENTO NA ARMA PARA FICAR MAIS REAL!
Estou com problemas na iluminação da minha Lanterna (jogo de terror)
Problemas na hr da build do projeto unity 2017.3.1
[TUTORIAL] Efeito Outlined (Sublinhado) com shader
Animações 3D sincronização?!
Pegar o Collision de prefabs
Auto-Update de forma rápida, simples e barata.
Problema com contator
[RESOLVIDO] Trocar controles de keyboard para gui
[DÚVIDA] Script teleporte, como esperar determinados segundos para teleportar
Como Eu fasso um Um sistema de dia e noite
Será que vale a pena colocar todas as ideias do jogo em um papel?
Duvidas sobre jogos 2d
Desativar arma quando pegar outra
Efeito arma giratória
[TUTORIAL] Sistema de tiro com RAYCAST (várias armas, mira laser, munição, dano, etc, etc)
IsLocalPlayer não existe, o que substitui ele?
Script de Chute Futebol
Polygon Collider anexado a sprite com areas transparentes
[TUTORIAL] Seleçao de personagens no Photon.
Botão para acionar velocidade e botão para retornar a posição inicial
como fazer sistema de seleção de personagem para moba no photon?
Sombras na "tampa" de buracos no blender
Gradiente de cores
Personagem olhar para frente ao andar.
[TUTORIAL] Criando um simples Multiplayer [UNITY 5]
[Dúvida] Multiplayer Client Object Spawn
Tangram ou Quebra Cabeça
[RESOLVIDO] Problema Com o transform.LookAt!
Jogo com Battle Royale já em desenvolvimento
Inimigo jogar o jogador de volta.
Como fazer um gráfico em forma de pizza na unity?
Texturização no Blender
Tudo fica bugado ao mudar o projeto de PC para Android
erro de dll's
Como alterar todos os materiais de um mesh renderer?
[TUTORIAL] Mudando material
[RESOLVIDO] Remover child
[RESOLVIDO] Como compilar pra android ?
Inimigo seguir o jogador sem usar o NavMesh
Resolução
(DUVIDA) Pq os Graficos Não Diminuem Corretamente?
[RESOLVIDO] Script não ativa bool do animator
[FORMAÇÃO DE EQUIPE]Equipe para jogo De Carros
Como evitar que o QualitySettings afete a qualidade da textura de um texto do canvas?
[TUTORIAL] Deixar o Texto (UI) mais bonito - HD
Código não compila
Há alguma forma de Fazer o apk Funcionar somente se for baixado pela Play Store ?
[Alpha Android] - Winthia Chronicles (Alpha Devlog, 21 de março de 2018). V 1.6
Configurar MS vehicle system free para UFPS
CRIAR MENSAGEM NA TELA PARA PERSOAGEM
[RESOLVIDO] Dúvida sobre animação do personagem
Duvida sobre Cenas
[RESOLVIDO] Duvida sobre versao da unity e sobre o lerp
[RESOLVIDO] problemas ao animar o game object
[DÚVIDA] Sair som e acender luz de um BOTÃO UI ao pressionar uma tecla
Dificuldade em criação de mapa simples no Unity
Procuro Modelador 3D, To criando uma equipe.vamos?
[TUTORIAL] Inteligência Artificial
[Devlog] ZByte Defender 10/04 (Alpha Aberta) + Download
[____ADMINISTRAÇÃO____] Alterações IMPORTANTES no fórum.
[TUTORIAL] Decrescer o valor do Emission Particlesystem
Limitar quantidades de vezes chamadas na void Update
[TUTORIAL] Sistema de inventário Sobrevivência
Sistema de Particulas não inicia com o jogo
[TUTORIAL] Serialização - JSON
Como posso resolver um bug reporter que não me deixa abrir o projeto?
[TUTORIAL]Sistema de Pet Virtual [Tamagotchi] Completo (ANDROID/PC)
Como arrumar efeitos do UFPS?
Servidor de discord para desenvolvedores.
Setar objeto filho de outro objeto via scrit
[RESOLVIDO] NavMesh nao funciona direito com terrain ?
[PEDIDO]Criar uma vestimenta para esse modelo que fiz no blender (Com-rig)
Duvida sobre blender para unity
Script para Sistema de Entregas e no final ganhar dinheiro
Formação de equipe
Criar jogo estilo clash of clans
Form API POST WebService unity
Por que a engine Unity 3D ficou pesado(FPS pior) depois da versão 5?
[TUTORIAL] Screenshoot do jogo no editor (em resoluções mais altas)
Ontem à(s) 9:43 pm
Ontem à(s) 9:34 pm
Ontem à(s) 9:17 pm
Ontem à(s) 9:16 pm
Ontem à(s) 7:41 pm
Ontem à(s) 2:42 pm
Ontem à(s) 1:49 pm
Ontem à(s) 11:42 am
Ontem à(s) 11:39 am
Ontem à(s) 11:38 am
Ontem à(s) 11:38 am
Ter Abr 24, 2018 9:04 pm
Ter Abr 24, 2018 7:34 pm
Ter Abr 24, 2018 7:32 pm
Ter Abr 24, 2018 7:07 pm
Ter Abr 24, 2018 6:55 pm
Ter Abr 24, 2018 6:50 pm
Ter Abr 24, 2018 3:16 pm
Seg Abr 23, 2018 8:49 pm
Seg Abr 23, 2018 8:32 pm
Seg Abr 23, 2018 8:11 pm
Seg Abr 23, 2018 6:48 pm
Seg Abr 23, 2018 10:33 am
Seg Abr 23, 2018 10:25 am
Dom Abr 22, 2018 8:49 pm
Dom Abr 22, 2018 7:12 pm
Dom Abr 22, 2018 3:52 pm
Dom Abr 22, 2018 3:42 pm
Dom Abr 22, 2018 2:25 pm
Sab Abr 21, 2018 9:54 pm
Sab Abr 21, 2018 9:01 pm
Sab Abr 21, 2018 12:22 pm
Sab Abr 21, 2018 8:36 am
Sab Abr 21, 2018 1:32 am
Sex Abr 20, 2018 7:05 pm
Sex Abr 20, 2018 6:21 pm
Sex Abr 20, 2018 3:12 pm
Sex Abr 20, 2018 3:07 pm
Sex Abr 20, 2018 12:58 pm
Sex Abr 20, 2018 6:39 am
Sex Abr 20, 2018 6:24 am
Sex Abr 20, 2018 1:05 am
Qui Abr 19, 2018 10:33 am
Qui Abr 19, 2018 9:33 am
Qui Abr 19, 2018 6:45 am
Qui Abr 19, 2018 6:02 am
Qua Abr 18, 2018 10:30 pm
Qua Abr 18, 2018 9:13 pm
Qua Abr 18, 2018 8:57 pm
Qua Abr 18, 2018 6:18 pm
Qua Abr 18, 2018 5:48 pm
Qua Abr 18, 2018 3:28 pm
Qua Abr 18, 2018 2:59 pm
Qua Abr 18, 2018 1:41 pm
Ter Abr 17, 2018 9:55 pm
Ter Abr 17, 2018 8:01 pm
Ter Abr 17, 2018 8:00 pm
Ter Abr 17, 2018 7:53 pm
Ter Abr 17, 2018 3:35 pm
Ter Abr 17, 2018 2:22 pm
Ter Abr 17, 2018 1:07 pm
Seg Abr 16, 2018 10:28 pm
Seg Abr 16, 2018 9:03 pm
Seg Abr 16, 2018 6:36 pm
Seg Abr 16, 2018 6:33 pm
Seg Abr 16, 2018 6:31 pm
Seg Abr 16, 2018 1:19 pm
Seg Abr 16, 2018 12:40 pm
Seg Abr 16, 2018 12:09 pm
Seg Abr 16, 2018 10:01 am
Seg Abr 16, 2018 1:07 am
Dom Abr 15, 2018 8:28 am
Dom Abr 15, 2018 12:06 am
Sab Abr 14, 2018 4:29 pm
Sab Abr 14, 2018 2:52 pm
Sab Abr 14, 2018 1:23 pm
Sab Abr 14, 2018 11:23 am
Sab Abr 14, 2018 11:10 am
Sab Abr 14, 2018 9:56 am
Sex Abr 13, 2018 10:20 pm
Sex Abr 13, 2018 10:01 pm
Sex Abr 13, 2018 8:12 pm
Sex Abr 13, 2018 7:22 pm
Sex Abr 13, 2018 4:50 pm
Sex Abr 13, 2018 3:12 pm
Sex Abr 13, 2018 1:30 pm
Sex Abr 13, 2018 12:59 pm
Sex Abr 13, 2018 12:20 pm
Sex Abr 13, 2018 12:16 pm
Sex Abr 13, 2018 12:02 pm
Qui Abr 12, 2018 10:14 pm
Qui Abr 12, 2018 7:01 pm
Qui Abr 12, 2018 12:09 pm
Qua Abr 11, 2018 9:02 pm
Qua Abr 11, 2018 2:00 pm
Ter Abr 10, 2018 11:33 pm
Ter Abr 10, 2018 8:26 pm
Ter Abr 10, 2018 5:57 pm
Ter Abr 10, 2018 2:30 pm
guimaraf
guimaraf
MarcosSchultz
dstaroski
isah
junkflash30
dyemerson
dashartX
dstaroski
dstaroski
dstaroski
willonplay
dstaroski
dstaroski
dstaroski
Phph09
Phph09
Daniel Pires da Silva
dstaroski
dstaroski
Leetz1k
Souris
Dom3000
Dom3000
hetrodo_gamer
Souris
guimaraf
otavio00augusto
Souris
Daniel Pires da Silva
SuperGamer
Zack2
dstaroski
Before Dawn
DreamKiller
YmKx
dstaroski
dstaroski
Callyde Jr
Phph09
Phph09
felipehobs1
dstaroski
Daniel Pires da Silva
Phph09
Callyde Jr
luizmauro123
MarcosUAC
MarcosUAC
rafaelllsd
oilson
Yagogomes
Fluttershy28
hetrodo_gamer
Dom3000
Dom3000
AmaralGabriel2
TioUV
dstaroski
Zack2
glauco
Daniel Pires da Silva
fabriciorsz34
Daniel Pires da Silva
Souris
Souris
fabriciorsz34
Cássio Ambelouer
Phph09
felipehobs1
Callyde Jr
Phph09
Ronmaster
nando07
Souris
Callyde Jr
Dom3000
Dom3000
Mateus2583
MarcosSchultz
ffabim
Daniel Pires da Silva
Fluttershy28
YmKx
natanael.olimpio
Souris
dstaroski
Phph09
BRGC
Phph09
Callyde Jr
BRGC
Zack2
heliab125
Souris
gcs13
natanael.olimpio
Daniel Pires da Silva
dstaroski

[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 PONTOS : 1571
REPUTAÇÃO : 325
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://bytsoft.rf.gd

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