[TUTORIAL] Unity 5 - Pulo Duplo (Double Jump) para 2D e 3D
+2
MarcosSchultz
ldmldm
6 participantes
Página 1 de 1
[TUTORIAL] Unity 5 - Pulo Duplo (Double Jump) para 2D e 3D
Fala pessoal, elaborei este tutorial simples mostrando como fazer um sistema de Pulo Duplo, tanto para jogos 2D como também para jogos 3D...
Vídeo:
Script para 2D
=========================================================================
Script para 3D
Vídeo:
Script para 2D
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Rigidbody2D))]
public class Pulo : MonoBehaviour {
public Vector2 direcaoDoPulo = new Vector3(0,1);
public float distanciaDoChao = 1, forcaDoPulo = 7, tempoPorPulo = 1;
public LayerMask LayersNaoIgnoradas = -1;
private bool estaNoChao, pulou1, pulou2, podePular;
private Rigidbody2D corpoRigido;
void Start () {
corpoRigido = GetComponent<Rigidbody2D> ();
pulou1 = pulou2 = false;
podePular = true;
}
void Update () {
estaNoChao = Physics2D.Linecast (transform.position, transform.position - Vector3.up*distanciaDoChao, LayersNaoIgnoradas);
if ((pulou1 == true || pulou2 == true) && estaNoChao == true) {
pulou1 = pulou2 = false;
}
if (Input.GetKeyDown (KeyCode.Space) && estaNoChao == false) {
pulou1 = true;
}
if (Input.GetKeyDown (KeyCode.Space) && estaNoChao == true && pulou1 == false && pulou2 == false && podePular == true) {
StartCoroutine ("CronometroPular");
pulou1 = true;
pulou2 = false;
corpoRigido.AddForce (direcaoDoPulo * forcaDoPulo, ForceMode2D.Impulse);
}
if (Input.GetKeyDown (KeyCode.Space) && estaNoChao == false && pulou1 == true && pulou2 == false && podePular == true) {
StartCoroutine ("CronometroPular");
pulou1 = true;
pulou2 = true;
corpoRigido.AddForce (direcaoDoPulo * forcaDoPulo*2, ForceMode2D.Impulse);
}
}
IEnumerator CronometroPular(){
podePular = false;
yield return new WaitForSeconds (tempoPorPulo);
podePular = true;
}
}
=========================================================================
Script para 3D
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Rigidbody))]
public class Pulo : MonoBehaviour {
public Vector3 direcaoDoPulo = new Vector3(0,1,0);
public float distanciaDoChao = 1, forcaDoPulo = 7, tempoPorPulo = 1;
public LayerMask LayersNaoIgnoradas = -1;
private bool estaNoChao, pulou1, pulou2, podePular;
private Rigidbody corpoRigido;
void Start () {
corpoRigido = GetComponent<Rigidbody> ();
pulou1 = pulou2 = false;
podePular = true;
}
void Update () {
estaNoChao = Physics.Linecast (transform.position, transform.position - Vector3.up*distanciaDoChao, LayersNaoIgnoradas);
if ((pulou1 == true || pulou2 == true) && estaNoChao == true) {
pulou1 = pulou2 = false;
}
if (Input.GetKeyDown (KeyCode.Space) && estaNoChao == false) {
pulou1 = true;
}
if (Input.GetKeyDown (KeyCode.Space) && estaNoChao == true && pulou1 == false && pulou2 == false && podePular == true) {
StartCoroutine ("CronometroPular");
pulou1 = true;
pulou2 = false;
corpoRigido.AddForce (direcaoDoPulo * forcaDoPulo, ForceMode.Impulse);
}
if (Input.GetKeyDown (KeyCode.Space) && estaNoChao == false && pulou1 == true && pulou2 == false && podePular == true) {
StartCoroutine ("CronometroPular");
pulou1 = true;
pulou2 = true;
corpoRigido.AddForce (direcaoDoPulo * forcaDoPulo*2, ForceMode.Impulse);
}
}
IEnumerator CronometroPular(){
podePular = false;
yield return new WaitForSeconds (tempoPorPulo);
podePular = true;
}
}
Última edição por MarcosSchultz em Ter Jun 07, 2016 8:47 pm, editado 1 vez(es)
Re: [TUTORIAL] Unity 5 - Pulo Duplo (Double Jump) para 2D e 3D
Parabéns pelos excelentes tutoriais... estou aprendendo muito com seu canal e este fórum. Me tira algumas dúvidas (faça um vídeo no canal se preferir também): e aquele projeto junto com o Jean da TlesGames, esta rolando ainda? E aquele outro projeto seu de veículos que você colocaria na Asset Store de graça ou para vender, também está rolando ainda? Forte abraço e fique com Deus.
ldmldm- Iniciante
- PONTOS : 3224
REPUTAÇÃO : 4
Respeito as regras :
Re: [TUTORIAL] Unity 5 - Pulo Duplo (Double Jump) para 2D e 3D
ldmldm escreveu:Parabéns pelos excelentes tutoriais... estou aprendendo muito com seu canal e este fórum. Me tira algumas dúvidas (faça um vídeo no canal se preferir também): e aquele projeto junto com o Jean da TlesGames, esta rolando ainda? E aquele outro projeto seu de veículos que você colocaria na Asset Store de graça ou para vender, também está rolando ainda? Forte abraço e fique com Deus.
Vera a página "Tutoriais Unity 3D Brasil" no facebook, sempre posto atualizações lá :D
O projeto está andando devagar, conforme cada um tem tempo... e o asset está sendo trabalhado a 3 meses já, e está em processo contínuo de desenvolvimento. É algo realmente complexo, e acho que vai chegar nas 4000 mil linhas.
Ainda não apareceram colaboradores para o projeto sair de graça, talvez pela complexidade dos modelos e pelo fato de terem de ser originais. A idéia é ter uns 10 veículos e também um cenário top para poder testar o asset a vontade...
Re: [TUTORIAL] Unity 5 - Pulo Duplo (Double Jump) para 2D e 3D
como eu faço pra utilizar esse jump com character controller tem como ??
PiTLorD- Iniciante
- PONTOS : 3374
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Unity 5 - Pulo Duplo (Double Jump) para 2D e 3D
PiTLorD escreveu:como eu faço pra utilizar esse jump com character controller tem como ??
ahh, difícil....
você teria que deixar o jump em 0, más tem alguns problemas, por que o characterController trabalhar com um Rigidbody kinemático, dentre outras coisas... teria que refazer todo o sistema
Re: [TUTORIAL] Unity 5 - Pulo Duplo (Double Jump) para 2D e 3D
vlw ai consegui um jeito meio na gambiara ...
PiTLorD- Iniciante
- PONTOS : 3374
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Unity 5 - Pulo Duplo (Double Jump) para 2D e 3D
Callyde Jr escreveu:Ele tambem funciona com a Unity 4?
Acredito que sim... não tem nada de novo no script.
Mas por que usar Unity 4? Ela é muito menos otimizada e tem muitos recursos a menos.
Re: [TUTORIAL] Unity 5 - Pulo Duplo (Double Jump) para 2D e 3D
Só faltou colocar no pulo2 a velocidade do rigidbory para zero. Assim o pulo fica melhor, pois quando você pula e aperta para dar o segundo com o player já voltando um pouco para baixo do primeiro pulo ele tipo só para no ar, ou sobe bem pouquinho. Se colocar a velocidade em zero ele vai aplicar a mesma força do primeiro puro normal, ficando perfeito!
Obrigado por compartilhar Marcos. Muito bom o tuto.
Segue o comendo se alguém precisar.
Ps: Com esse comando não precisa fazer o segundo pulo *2 para pular mais.
Obrigado por compartilhar Marcos. Muito bom o tuto.
Segue o comendo se alguém precisar.
Ps: Com esse comando não precisa fazer o segundo pulo *2 para pular mais.
- Código:
GetComponent<Rigidbody2D>().velocity = Vector2.zero;
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: [TUTORIAL] Unity 5 - Pulo Duplo (Double Jump) para 2D e 3D
Estou tentando usar esse sistema se usado num botao UI
mais nao estou conseguindo
mais nao estou conseguindo
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Rigidbody))]
public class Pulo : MonoBehaviour {
public Vector3 direcaoDoPulo = new Vector3(0,1,0);
public float distanciaDoChao = 1, forcaDoPulo = 7, tempoPorPulo = 1;
public LayerMask LayersNaoIgnoradas = -1;
private bool estaNoChao, pulou1, pulou2, podePular;
private Rigidbody corpoRigido;
void Start () {
corpoRigido = GetComponent<Rigidbody> ();
pulou1 = pulou2 = false;
podePular = true;
}
void Update () {
estaNoChao = Physics.Linecast (transform.position, transform.position - Vector3.up*distanciaDoChao, LayersNaoIgnoradas);
if ((pulou1 == true || pulou2 == true) && estaNoChao == true) {
pulou1 = pulou2 = false;
}
if (Input.GetKeyDown (KeyCode.Space) && estaNoChao == false) {
pulou1 = true;
}
if (Input.GetKeyDown (KeyCode.Space) && estaNoChao == true && pulou1 == false && pulou2 == false && podePular == true) {
StartCoroutine ("CronometroPular");
pulou1 = true;
pulou2 = false;
corpoRigido.AddForce (direcaoDoPulo * forcaDoPulo, ForceMode.Impulse);
}
if (Input.GetKeyDown (KeyCode.Space) && estaNoChao == false && pulou1 == true && pulou2 == false && podePular == true) {
StartCoroutine ("CronometroPular");
pulou1 = true;
pulou2 = true;
corpoRigido.AddForce (direcaoDoPulo * forcaDoPulo*2, ForceMode.Impulse);
}
}
IEnumerator CronometroPular(){
podePular = false;
yield return new WaitForSeconds (tempoPorPulo);
podePular = true;
}
public void UsandoButton(bool Ativar)//Para usar o butao
{
pulou1 = Ativar;
}
}
Re: [TUTORIAL] Unity 5 - Pulo Duplo (Double Jump) para 2D e 3D
Agora esta funcionando coloquei assim
- Código:
public void BotaoPular(bool cliquei)
{
pulou1 = cliquei;
pulou2 = cliquei;
if(estaNoChao == true){
corpoRigido.AddForce (direcaoDoPulo * forcaDoPulo, ForceMode.Impulse);
}
Re: [TUTORIAL] Unity 5 - Pulo Duplo (Double Jump) para 2D e 3D
nesse script 2D eu pulo e o segundo pulo ou não funciona para na ar e não pula ou quando pula ele pula muito mas muito alto demais,como resolve isso?queira ficar pular sem bugar e na mesma altura que o 1 pulo
Phirdy- Iniciante
- PONTOS : 1686
REPUTAÇÃO : 1
Áreas de atuação : queria programaço que tal?
Respeito as regras :
Tópicos semelhantes
» script 2D double jump erro no 2 pulo que não pla ou pula alto demais
» [TUTORIAL] Script de pulo para jogos 3D em geral (Unity - C#)
» [TUTORIAL]Duplo clicke do mouse(Serve para UI)
» [TUTORIAL] Double Jumping para games em 2D
» [TUTORIAL] Sistema de pulo ( com linecast ) para jogos 2D
» [TUTORIAL] Script de pulo para jogos 3D em geral (Unity - C#)
» [TUTORIAL]Duplo clicke do mouse(Serve para UI)
» [TUTORIAL] Double Jumping para games em 2D
» [TUTORIAL] Sistema de pulo ( com linecast ) para jogos 2D
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos