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:
PITCH para aceleração de carro. Como que faço mesmo?
Sistema de Yu-Gi-Oh! - ATT [2020]
[ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
Somar int, como faz pra ele adicionar o valor que eu quero.
NavMashAgent
Bug? no animator
Duvida Material c#
Unity Admob Erro
Unity - Lentidão e Aceleração alteradas do nada!!!
Como faço para mudar o valor de uma float gradualmente
[TUTORIAL] Criando um simples Multiplayer [UNITY 5]
Como selecionar ou desselecionar uma imagem na Unity com uma borda?
Random Material
Dúvida sobre detecção do personagem
Procurando Equipe para Dev de um Gta Brasileiro.
Problemas com o transform.position com GameObjects 3D
Shaders
Botão no canvas faz o player movimentar
Sistema de Screenshots v2
Textura está bugada ficando branco em uma parte
Calculadora com raiz quadrada C#
Conectar ao servidor
Script de tiro unity 3d
Barra de procura
Randomizar objetos em posições válidas.
Unity-Transform.position e Rigidbory VS CharacterController. Qual o melhor?
[RESOLVIDO] network transform e network identity nos objetos filhos
Como trocar um sprite pelo outro?
Como faço para detectar a velocidade do meu player?
como faço um multiplayer na unity 5?
Dúvida sobre "Luzinha"?
Meu primero multiplayer online game feito no unity
Como mudar a cor de um sprite?
Demo do meu jogo Survival Zombie
Unity5 FBX Exporter (Free Package/Asset)
Personagem tremendo
[RESOLVIDO] Movetowards depois de esperar um tempo, não funciona!
Como fazer para aparecer poucas resoluções no meu menu de opções.
Contagem C#
Raycast colidindo com Player
Duvidas sobre soma entre float
Como faço para modificar o ponto incial e direcionar um raycast?
Unity
como resolver bordas pixelizadas?
Transformação de personagem
ao buildar para android o jogo tem compotamento diferente
[RESOLVIDO] Copiar a rotação de um Objeto para outro.
Ajuda com php
Animação não está a funcionar
[RESOLVIDO] Duvida com raycast
Animator
FixedUpdate Fica Dando Erro na Hora que a Colisão Acontece
ERRO NO JOGO BUILDADO, MAS OCORRE TUDO CERTO NO CONSOLE
Preciso de dicas para configurar o Bake do Lighting Para Android
como dminuir o lag no meu unity 5
Qual seria a melhor maneira de criar um Map Mundi interativo?
Ativar Ui apenas se o player estiver perto do objeto especifico
Tela de missão
[RESOLVIDO] Como fazer efeitos sonoros tocarem aleatoriamente
Collab Arruinando meu Projeto
Textura escura
Erro no SketchUP
3D Text Material Sobressalente
[RESOLVIDO] Problema no Input System
Como faço para um objeto ficar num tom de azul?
[RESOLVIDO] erro: ''ArgumentException: Input Button jump is not setup'' ?
Photon Pun2 - Error: NewScene Clean
[TUTORIAL] Acessar o objeto pai de algum hit.
[RESOLVIDO] Encontrar um objeto que está dentro de um Prefab.
[TUTORIAL] Inimigo olhar para você (Java Script)
[RESOLVIDO] Erro no Script tocar Audio
[RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Duvida sobre deixar jogo online.
Unity - Animator Controller sendo apagado sozinho
[RESOLVIDO] Meu jogo ta com uns bug no fog linear. o chão fica preto :/
[RESOLVIDO] AI Points e NavMesh
[RESOLVIDO] Como pegar moeda e ela desaparecer?
[TUTORIAL] Sistema Pdv, Mercado, Padaria, Conveniência, Lojas Em Geral - C# VISUAL STUDIO
Como desativar o FirstPersonController
Como tira Application.UptadeScene?
Gostaria de fazer a animação do arco seguir animação do personagem
Animação Blender para Unity?
[RESOLVIDO] Unity - Giro do Personagem não está funcionando direito
Bug - Unity rodando com menos FPS no BAIXO e MAIS no ULTRA
[RESOLVIDO] Dúvida sobre multiplayer
Luz atravessando paredes
Problema de compilação
[RESOLVIDO] LayerMask
c# unity
[TUTORIAL] Banco de dados || MySQL
[RESOLVIDO] Fade In e Out na Timeline
[RESOLVIDO] Unity - Testar o Jogo pelo Celular em Tempo Real
Ajuda com Grappling hook
[RESOLVIDO] Erro criando IA inimigo
[RESOLVIDO] Animator
[RESOLVIDO] Como salvar a posição do FPS Controller da Unity
[RESOLVIDO] c# unity
[TUTORIAL] Photon Networking Part.3 (Gerenciando salas)
EMBARQUE E DESEMBARQUE DE UM ROBÔ
Ontem à(s) 10:47 pm
Ontem à(s) 9:43 pm
Ontem à(s) 8:33 pm
Ontem à(s) 6:06 pm
Ontem à(s) 11:41 am
Sex Maio 14, 2021 7:42 pm
Sex Maio 14, 2021 2:08 pm
Sex Maio 14, 2021 10:50 am
Sex Maio 14, 2021 2:12 am
Qui Maio 13, 2021 11:39 pm
Qui Maio 13, 2021 8:01 pm
Qui Maio 13, 2021 2:42 pm
Qui Maio 13, 2021 2:35 pm
Qui Maio 13, 2021 1:43 pm
Qui Maio 13, 2021 12:39 pm
Qui Maio 13, 2021 11:36 am
Qui Maio 13, 2021 8:38 am
Qua Maio 12, 2021 10:25 pm
Qua Maio 12, 2021 4:59 pm
Qua Maio 12, 2021 4:24 pm
Qua Maio 12, 2021 2:15 pm
Qua Maio 12, 2021 12:59 pm
Ter Maio 11, 2021 11:27 pm
Ter Maio 11, 2021 6:59 pm
Ter Maio 11, 2021 4:07 pm
Seg Maio 10, 2021 9:53 pm
Seg Maio 10, 2021 7:13 pm
Seg Maio 10, 2021 7:05 pm
Seg Maio 10, 2021 5:19 pm
Seg Maio 10, 2021 4:42 pm
Seg Maio 10, 2021 3:19 pm
Seg Maio 10, 2021 12:43 pm
Seg Maio 10, 2021 9:23 am
Dom Maio 09, 2021 4:08 pm
Sab Maio 08, 2021 4:57 pm
Sab Maio 08, 2021 4:56 pm
Sab Maio 08, 2021 4:31 pm
Sab Maio 08, 2021 3:50 pm
Sab Maio 08, 2021 2:30 pm
Sex Maio 07, 2021 8:56 pm
Sex Maio 07, 2021 8:14 pm
Sex Maio 07, 2021 3:15 pm
Sex Maio 07, 2021 10:23 am
Sex Maio 07, 2021 8:24 am
Qui Maio 06, 2021 9:32 pm
Qui Maio 06, 2021 8:46 pm
Qui Maio 06, 2021 8:15 pm
Qui Maio 06, 2021 8:14 pm
Qui Maio 06, 2021 3:21 pm
Qui Maio 06, 2021 2:46 pm
Qui Maio 06, 2021 11:36 am
Qui Maio 06, 2021 3:08 am
Qua Maio 05, 2021 8:27 pm
Ter Maio 04, 2021 6:50 pm
Ter Maio 04, 2021 7:38 am
Seg Maio 03, 2021 11:34 am
Seg Maio 03, 2021 11:22 am
Seg Maio 03, 2021 8:53 am
Seg Maio 03, 2021 2:44 am
Dom Maio 02, 2021 6:04 pm
Dom Maio 02, 2021 5:22 pm
Dom Maio 02, 2021 5:03 pm
Dom Maio 02, 2021 5:00 pm
Sab Maio 01, 2021 8:02 pm
Sab Maio 01, 2021 12:07 pm
Sab Maio 01, 2021 11:02 am
Sab Maio 01, 2021 7:08 am
Sex Abr 30, 2021 4:34 pm
Sex Abr 30, 2021 2:12 pm
Qui Abr 29, 2021 1:26 pm
Qui Abr 29, 2021 12:48 pm
Qui Abr 29, 2021 12:45 pm
Qui Abr 29, 2021 11:02 am
Qui Abr 29, 2021 12:31 am
Qua Abr 28, 2021 10:53 pm
Qua Abr 28, 2021 6:01 pm
Qua Abr 28, 2021 3:55 pm
Qua Abr 28, 2021 2:35 pm
Qua Abr 28, 2021 2:03 pm
Ter Abr 27, 2021 10:50 pm
Seg Abr 26, 2021 10:07 pm
Seg Abr 26, 2021 3:18 pm
Seg Abr 26, 2021 12:41 am
Seg Abr 26, 2021 12:28 am
Dom Abr 25, 2021 10:01 pm
Dom Abr 25, 2021 8:17 pm
Dom Abr 25, 2021 1:52 am
Sab Abr 24, 2021 3:37 pm
Sab Abr 24, 2021 11:34 am
Sex Abr 23, 2021 11:46 pm
Sex Abr 23, 2021 3:22 pm
Qui Abr 22, 2021 7:54 pm
Qui Abr 22, 2021 2:18 pm
Qui Abr 22, 2021 6:45 am
Qua Abr 21, 2021 10:54 pm
Qua Abr 21, 2021 3:44 pm
Qua Abr 21, 2021 1:00 pm
Qua Abr 21, 2021 11:58 am
Qua Abr 21, 2021 11:21 am
RodrigoPrivilegium
MajorH
Felipe42
Fagner
Fagner
WLCS22
Fagner
nando07
WLCS22
MayLeone
RGT2020
tautologias345
Pokedlg
Xavier
glauco
vphyre
Joana
acefogo
AnderGames
marbiel18
AthaideYi
Xavier
Charlesoff
Joana
Mozinhas2
WLCS22
Xavier
Pokedlg
Charlesoff
TIKO
Fagner
RGT2020
stratengine
stratengine
ProBrStalker
xYcar
WLCS22
Pokedlg
Mozinhas2
Charlesoff
stratengine
Charlesoff
Joana
NKKF
Xavier
Fagner
Fagner
loucoporjogo
Joana
Pokedlg
Xavier
adrianobros2
stratengine
glauco
speedluk
Traygus
MarcosSchultz
Maria Elisa
BlesseD
NKKF
Fagner
Fagner
Fagner
Rangel Oblivion
Phelipe
Pokedlg
Elizeuvix
MartinsCG
RenatoBarreto
MartinsCG
FelipeSouza11
adrianobros2
loucoporjogo
WLCS22
JulioWinchester
TIKO
FelixTedesco
dirceuinfo
FelixTedesco
poyser
hendrick22
ProblemX
WLCS22
NKKF
Xavier
SauloeArthur
MayLeone
hellside
Mozinhas2
LuccaGiffoni
Triskal
WLCS22
JohnRambo
SauloeArthur
Fagner
jeancvo3
Pokedlg
CleiMac
dutrabr100

[TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Ir em baixo

TUTORIAL [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por MarcosSchultz Sex Jul 06, 2018 8:48 pm

Fala galera, elaborei este tutorial simples mostrando como fazer um sistema para voltar no tempo na Unity 3D.

Vídeo tutorial:



Código utilizado (versão corrigida):
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ReverseTime : MonoBehaviour {

 public KeyCode teclaReverseTime = KeyCode.Y;
 public float frequencia_Hz = 30;
 public int maxFrames = 100;
 [Space(15)]
 public bool fixedUpdate_50Hz = false;
 //
 float freq;
 float cronometro;
 bool reverseTime = false;

 List<Vector3> posicoes = new List<Vector3>();
 List<Quaternion> rotacoes = new List<Quaternion>();
 List<Vector3> rbVelocity = new List<Vector3>();
 List<Vector3> rbAngularVelocity = new List<Vector3>();
 Rigidbody componentRig;

 void Start () {
 freq = 1 / frequencia_Hz;
 componentRig = GetComponent<Rigidbody> ();
 }

 void Update () {
 if (Input.GetKeyDown (teclaReverseTime)) {
 if (posicoes.Count > 1 && rotacoes.Count > 1) {
 reverseTime = true;
 if (componentRig) {
 componentRig.useGravity = false;
 }
 }
 }
 if (Input.GetKeyUp (teclaReverseTime)) {
 reverseTime = false;
 if (componentRig) {
 componentRig.useGravity = true;
 //explicar
 componentRig.velocity = rbVelocity[rbVelocity.Count - 1];
 componentRig.angularVelocity = rbAngularVelocity[rbAngularVelocity.Count - 1];
 }
 }
 if (!fixedUpdate_50Hz) {
 cronometro += Time.deltaTime;
 if (cronometro >= freq) {
 cronometro = 0;
 ChecarReverseTime ();
 }
 }
 if (reverseTime) {
 transform.position = Vector3.Lerp (transform.position, posicoes [posicoes.Count - 1], Time.deltaTime * 5.0f);
 transform.rotation = Quaternion.Lerp (transform.rotation, rotacoes [rotacoes.Count - 1], Time.deltaTime * 5.0f);
 }
 }

 void FixedUpdate(){
 if (fixedUpdate_50Hz) {
 ChecarReverseTime ();
 }
 if (componentRig) {
 if (reverseTime) {
 componentRig.velocity = Vector3.zero;
 componentRig.angularVelocity = Vector3.zero;
 }
 }
 }

 void ChecarReverseTime(){
 if (!reverseTime) {
 posicoes.Add (transform.position);
 rotacoes.Add (transform.rotation);
 //
 if (componentRig) {
 rbVelocity.Add (componentRig.velocity);
 rbAngularVelocity.Add (componentRig.angularVelocity);
 }
 //
 if (posicoes.Count > maxFrames) {
 posicoes.Remove (posicoes [0]);
 rotacoes.Remove (rotacoes [0]);
 if (componentRig) {
 rbVelocity.Remove (rbVelocity [0]);
 rbAngularVelocity.Remove (rbAngularVelocity [0]);
 }
 }
 } else {
 if (posicoes.Count > 1) {
 posicoes.Remove (posicoes [posicoes.Count - 1]);
 rotacoes.Remove (rotacoes [rotacoes.Count - 1]);
 if (componentRig) {
 rbVelocity.Remove (rbVelocity [rbVelocity.Count - 1]);
 rbAngularVelocity.Remove (rbAngularVelocity [rbAngularVelocity.Count - 1]);
 }
 }
 }
 }
}


Última edição por MarcosSchultz em Sab Jul 07, 2018 1:02 am, editado 1 vez(es)
MarcosSchultz
MarcosSchultz
Administrador

Masculino PONTOS : 63523
REPUTAÇÃO : 2576
Idade : 24
Áreas de atuação : Administrador do fórum
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

https://www.schultzgames.com

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por Tegh Sex Jul 06, 2018 9:34 pm

É triste não entender a 100% da compilação do código(ainda estou estudando a Unity e suas aplicações C#) mas pelo que me parece é bem complexo o código, você o acha viável para utilização do mesmo em projetos 2D? Sinceramente me fascina já ver você fazendo o Unity voltar o tempo, muito bom mesmo cara Curti isso.


Última edição por Tegh em Sex Mar 29, 2019 2:47 pm, editado 1 vez(es) (Motivo da edição : Erros Ortográficos)

Tegh
Avançado
Avançado

Masculino PONTOS : 1368
REPUTAÇÃO : 97
Idade : 20
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D WvDYdlf

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por rafaelllsd Sex Jul 06, 2018 11:09 pm

Muito bom, agora é só modificar, modificar até entender, para algum dia reproduzir  Perfeito
rafaelllsd
rafaelllsd
ProgramadorMaster

Masculino PONTOS : 3929
REPUTAÇÃO : 496
Idade : 20
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.

Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por MarcosSchultz Sab Jul 07, 2018 1:02 am

Código atualizado e corrigido

Vídeo upado :D
MarcosSchultz
MarcosSchultz
Administrador

Masculino PONTOS : 63523
REPUTAÇÃO : 2576
Idade : 24
Áreas de atuação : Administrador do fórum
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

https://www.schultzgames.com

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por Chilinger Qua Mar 27, 2019 8:02 pm

Marcos ve se estou enganado voce colocou vetor e mandou ele voltar por eles?

Chilinger
MembroAvançado

Masculino PONTOS : 2802
REPUTAÇÃO : 40
Idade : 27
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D WvDYdlf

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por MarcosSchultz Sex Mar 29, 2019 4:53 am

@Chilinger escreveu:Marcos ve se estou enganado voce colocou vetor e mandou ele voltar por eles?

Exato... eu fiz uma lista de vetores e guardei o valor de posição, rotação, etc a cada frame... 

Quando eu volto no tempo, eu apenas sigo a lista do final para o início e vou deletando os pontos que eu já retornei.
MarcosSchultz
MarcosSchultz
Administrador

Masculino PONTOS : 63523
REPUTAÇÃO : 2576
Idade : 24
Áreas de atuação : Administrador do fórum
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

https://www.schultzgames.com

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por Chilinger Sab Mar 30, 2019 8:21 am

@MarcosSchultz escreveu:
@Chilinger escreveu:Marcos ve se estou enganado voce colocou vetor e mandou ele voltar por eles?

Exato... eu fiz uma lista de vetores e guardei o valor de posição, rotação, etc a cada frame... 

Quando eu volto no tempo, eu apenas sigo a lista do final para o início e vou deletando os pontos que eu já retornei.
Perguntei pois me lembrou do código de troca de camera que voce tinha feito ai olhei o código e esta bem na cara show não tinha pensado nisso.

Chilinger
MembroAvançado

Masculino PONTOS : 2802
REPUTAÇÃO : 40
Idade : 27
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D WvDYdlf

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por guimaraf Ter Maio 07, 2019 12:50 am

Ao assistir este tutorial, fiquei na dúvida em como por exemplo usar ele para repetir os movimentos do player, no lugar de retroceder. Tentei fazer algumas adaptações, porém não tive resultados satisfatórios.
Alguém já tentou fazer isso.

Alguns jogos usam este sistema, como jogos de corrida com o "corredor fantasma" Super Meat Boy com uma sombra repetindo todos os movimentos do player, etc.
guimaraf
guimaraf
ProgramadorMaster

Masculino PONTOS : 1823
REPUTAÇÃO : 87
Idade : 38
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por MarcosSchultz Sab Maio 25, 2019 7:40 pm

@guimaraf escreveu:Ao assistir este tutorial, fiquei na dúvida em como por exemplo usar ele para repetir os movimentos do player, no lugar de retroceder. Tentei fazer algumas adaptações, porém não tive resultados satisfatórios.
Alguém já tentou fazer isso.

Alguns jogos usam este sistema, como jogos de corrida com o "corredor fantasma" Super Meat Boy com uma sombra repetindo todos os movimentos do player, etc.

Para retroceder o movimento no player é necessário fazer algumas adaptações para fazer o seu jogador não receber nenhum input enquanto está retrocedendo.

Por exemplo, se o seu jogador recebe um rigidbody.velocity = new vector3(0,input y, 0) no fixed Update, vai dar conflito com o código de retroceder no tempo, então uma adaptação precisa ser feita para fazer o jogador não receber inputs ou velocidades quando está a retroceder.
MarcosSchultz
MarcosSchultz
Administrador

Masculino PONTOS : 63523
REPUTAÇÃO : 2576
Idade : 24
Áreas de atuação : Administrador do fórum
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

https://www.schultzgames.com

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por guimaraf Sab Maio 25, 2019 9:07 pm

@MarcosSchultz escreveu:
@guimaraf escreveu:Ao assistir este tutorial, fiquei na dúvida em como por exemplo usar ele para repetir os movimentos do player, no lugar de retroceder. Tentei fazer algumas adaptações, porém não tive resultados satisfatórios.
Alguém já tentou fazer isso.

Alguns jogos usam este sistema, como jogos de corrida com o "corredor fantasma" Super Meat Boy com uma sombra repetindo todos os movimentos do player, etc.

Para retroceder o movimento no player é necessário fazer algumas adaptações para fazer o seu jogador não receber nenhum input enquanto está retrocedendo.

Por exemplo, se o seu jogador recebe um rigidbody.velocity = new vector3(0,input y, 0) no fixed Update, vai dar conflito com o código de retroceder no tempo, então uma adaptação precisa ser feita para fazer o jogador não receber inputs ou velocidades quando está a retroceder.

Eu fiz de uma forma um pouco diferente, já que é um fantasma, o natural é que ele não receba parâmetros de gravidade, então eu salvei a posição e rotação do carro, depois para reproduzir, eu clonei o carro, alterei os materiais para transparentes e mandei ler as listas "tem mais algumas maracutaias que tive que fazer", mas o miolo é este e deu certo.
guimaraf
guimaraf
ProgramadorMaster

Masculino PONTOS : 1823
REPUTAÇÃO : 87
Idade : 38
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por Chilinger Ter Jul 23, 2019 12:11 pm

@guimaraf escreveu:
@MarcosSchultz escreveu:
@guimaraf escreveu:Ao assistir este tutorial, fiquei na dúvida em como por exemplo usar ele para repetir os movimentos do player, no lugar de retroceder. Tentei fazer algumas adaptações, porém não tive resultados satisfatórios.
Alguém já tentou fazer isso.

Alguns jogos usam este sistema, como jogos de corrida com o "corredor fantasma" Super Meat Boy com uma sombra repetindo todos os movimentos do player, etc.

Para retroceder o movimento no player é necessário fazer algumas adaptações para fazer o seu jogador não receber nenhum input enquanto está retrocedendo.

Por exemplo, se o seu jogador recebe um rigidbody.velocity = new vector3(0,input y, 0) no fixed Update, vai dar conflito com o código de retroceder no tempo, então uma adaptação precisa ser feita para fazer o jogador não receber inputs ou velocidades quando está a retroceder.

Eu fiz de uma forma um pouco diferente, já que é um fantasma, o natural é que ele não receba parâmetros de gravidade, então eu salvei a posição e rotação do carro, depois para reproduzir, eu clonei o carro, alterei os materiais para transparentes e mandei ler as listas "tem mais algumas maracutaias que tive que fazer", mas o miolo é este e deu certo.
Poderia fazer um tutorial sobre e um video mostrando como esta.

Chilinger
MembroAvançado

Masculino PONTOS : 2802
REPUTAÇÃO : 40
Idade : 27
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D WvDYdlf

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por Chilinger Ter Jul 23, 2019 12:32 pm

@MarcosSchultz escreveu:
@guimaraf escreveu:Ao assistir este tutorial, fiquei na dúvida em como por exemplo usar ele para repetir os movimentos do player, no lugar de retroceder. Tentei fazer algumas adaptações, porém não tive resultados satisfatórios.
Alguém já tentou fazer isso.

Alguns jogos usam este sistema, como jogos de corrida com o "corredor fantasma" Super Meat Boy com uma sombra repetindo todos os movimentos do player, etc.

Para retroceder o movimento no player é necessário fazer algumas adaptações para fazer o seu jogador não receber nenhum input enquanto está retrocedendo.

Por exemplo, se o seu jogador recebe um rigidbody.velocity = new vector3(0,input y, 0) no fixed Update, vai dar conflito com o código de retroceder no tempo, então uma adaptação precisa ser feita para fazer o jogador não receber inputs ou velocidades quando está a retroceder.
Para fazer aquele velho slow mousho do need for speed que quando viramos em uma curva muito rápido voce consegui ir nela bem devagar.

Chilinger
MembroAvançado

Masculino PONTOS : 2802
REPUTAÇÃO : 40
Idade : 27
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D WvDYdlf

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por MarcosSchultz Ter Jul 23, 2019 3:03 pm

@Chilinger escreveu:
@MarcosSchultz escreveu:
@guimaraf escreveu:Ao assistir este tutorial, fiquei na dúvida em como por exemplo usar ele para repetir os movimentos do player, no lugar de retroceder. Tentei fazer algumas adaptações, porém não tive resultados satisfatórios.
Alguém já tentou fazer isso.

Alguns jogos usam este sistema, como jogos de corrida com o "corredor fantasma" Super Meat Boy com uma sombra repetindo todos os movimentos do player, etc.

Para retroceder o movimento no player é necessário fazer algumas adaptações para fazer o seu jogador não receber nenhum input enquanto está retrocedendo.

Por exemplo, se o seu jogador recebe um rigidbody.velocity = new vector3(0,input y, 0) no fixed Update, vai dar conflito com o código de retroceder no tempo, então uma adaptação precisa ser feita para fazer o jogador não receber inputs ou velocidades quando está a retroceder.
Para fazer aquele velho slow mousho do need for speed que quando viramos em uma curva muito rápido voce consegui ir nela bem devagar.

SlowMotion é só alterar o Time.Timescale do seu jogo, é bem simples.
MarcosSchultz
MarcosSchultz
Administrador

Masculino PONTOS : 63523
REPUTAÇÃO : 2576
Idade : 24
Áreas de atuação : Administrador do fórum
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

https://www.schultzgames.com

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por SteveRogers Ter Jul 23, 2019 4:56 pm

@guimaraf escreveu:
Eu fiz de uma forma um pouco diferente, já que é um fantasma, o natural é que ele não receba parâmetros de gravidade, então eu salvei a posição e rotação do carro, depois para reproduzir, eu clonei o carro, alterei os materiais para transparentes e mandei ler as listas "tem mais algumas maracutaias que tive que fazer", mas o miolo é este e deu certo.
Mas não fica pesado salvar tantas posições/rotações?
Eu pensei em algo assim, mas salvava de tempos em tempos, depois eu só interpolava as posições/rotações usando o mesmo intervalo de tempo da captura.
As interpolações eram feitas com base numa curva de bezier quadrática, mais ou menos assim:
Pode parecer que o objeto vai ficar muito fora da trajetória original, mas na prática ficava quase a mesma coisa, só que muito mais suave.
[TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Bezier_quadratic
Na época achei que ficaria pesado demais capturar cada posição e desisti antes de tentar ;-;
Lição aprendida, testar sempre.
SteveRogers
SteveRogers
ProgramadorMaster

Masculino PONTOS : 1263
REPUTAÇÃO : 102
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por guimaraf Ter Jul 23, 2019 5:51 pm

Tenho o sistema funcionando no vídeo abaixo.
Por enquanto estou sem tempo para gravar um tutorial.

guimaraf
guimaraf
ProgramadorMaster

Masculino PONTOS : 1823
REPUTAÇÃO : 87
Idade : 38
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por guimaraf Ter Jul 23, 2019 5:53 pm

@SteveRogers escreveu:
@guimaraf escreveu:
Eu fiz de uma forma um pouco diferente, já que é um fantasma, o natural é que ele não receba parâmetros de gravidade, então eu salvei a posição e rotação do carro, depois para reproduzir, eu clonei o carro, alterei os materiais para transparentes e mandei ler as listas "tem mais algumas maracutaias que tive que fazer", mas o miolo é este e deu certo.
Mas não fica pesado salvar tantas posições/rotações?
Eu pensei em algo assim, mas salvava de tempos em tempos, depois eu só interpolava as posições/rotações usando o mesmo intervalo de tempo da captura.
As interpolações eram feitas com base numa curva de bezier quadrática, mais ou menos assim:
Pode parecer que o objeto vai ficar muito fora da trajetória original, mas na prática ficava quase a mesma coisa, só que muito mais suave.
[TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Bezier_quadratic
Na época achei que ficaria pesado demais capturar cada posição e desisti antes de tentar ;-;
Lição aprendida, testar sempre.

Eu tentei bastante fazer um sistema assim, porém o carro ficava "travando aos poucos" não era nada natural.

Então para resolver este problema eu fiz diferente, no lugar de gravar toda a corrida, eu gravo apenas a volta, então a array fica normalmente menos de 2k de tamanho. Já testei em um not e ficou bem agradável.
guimaraf
guimaraf
ProgramadorMaster

Masculino PONTOS : 1823
REPUTAÇÃO : 87
Idade : 38
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por SteveRogers Ter Jul 23, 2019 6:24 pm

Esse é o ponto, não se usa a posição diretamente, pra não travar, o transform recebe um smoothdamp entre a posição atual e o próximo ponto interpolado.
SteveRogers
SteveRogers
ProgramadorMaster

Masculino PONTOS : 1263
REPUTAÇÃO : 102
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por guimaraf Ter Jul 23, 2019 7:46 pm

Teria algum exemplo feito?
guimaraf
guimaraf
ProgramadorMaster

Masculino PONTOS : 1823
REPUTAÇÃO : 87
Idade : 38
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por MarcosSchultz Ter Jul 23, 2019 7:54 pm

O problema de fazer a interpolação em pontos distantes é que perde bastante precisão dependendo do caso.... é útil caso você queira voltar no tempo uns 3 min, fazer um sistema de replay.... mas se quiser ter um sistema que volta no tempo de maneira fiel, é melhor fazer no fixedUpdate ponto a ponto e guardar apenas 10 segundos... ai sobrecarrega o código.
MarcosSchultz
MarcosSchultz
Administrador

Masculino PONTOS : 63523
REPUTAÇÃO : 2576
Idade : 24
Áreas de atuação : Administrador do fórum
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

https://www.schultzgames.com

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por SteveRogers Ter Jul 23, 2019 8:02 pm

@MarcosSchultz escreveu:O problema de fazer a interpolação em pontos distantes é que perde bastante precisão dependendo do caso.... é útil caso você queira voltar no tempo uns 3 min, fazer um sistema de replay.... mas se quiser ter um sistema que volta no tempo de maneira fiel, é melhor fazer no fixedUpdate ponto a ponto e guardar apenas 10 segundos... ai sobrecarrega o código.
Entendo, realmente a aplicação desse sistema com interpolação era pra Ghost mode em um joguinho de corrida, as distâncias não eram muito grandes, pois ao invés de salvar cada frame, salvava a cada 100ms ~200ms dependendo do quão complexo era o circuito, fora que o movimento é bem linear... é que o assunto fugiu do tópico mesmo huauahua, não tem muito a ver com voltar no tempo.
Guimaraf, vou dar uma olhada no meu limbo de projetos inacabados, pra ver se encontro algo kkk
SteveRogers
SteveRogers
ProgramadorMaster

Masculino PONTOS : 1263
REPUTAÇÃO : 102
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por guimaraf Ter Jul 23, 2019 8:19 pm

@SteveRogers escreveu:
@MarcosSchultz escreveu:O problema de fazer a interpolação em pontos distantes é que perde bastante precisão dependendo do caso.... é útil caso você queira voltar no tempo uns 3 min, fazer um sistema de replay.... mas se quiser ter um sistema que volta no tempo de maneira fiel, é melhor fazer no fixedUpdate ponto a ponto e guardar apenas 10 segundos... ai sobrecarrega o código.
Entendo, realmente a aplicação desse sistema com interpolação era pra Ghost mode em um joguinho de corrida, as distâncias não eram muito grandes, pois ao invés de salvar cada frame, salvava a cada 100ms ~200ms dependendo do quão complexo era o circuito, fora que o movimento é bem linear... é que o assunto fugiu do tópico mesmo huauahua, não tem muito a ver com voltar no tempo.
Guimaraf, vou dar uma olhada no meu limbo de projetos inacabados, pra ver se encontro algo kkk

Inicialmente era para gravar as 3 voltas, porém como a array ficaria grande demais, eu decidi que iria gravar apenas 1 volta, como as pistas tem tamanhos diferentes, logo a volta se torna maior, porém ainda o arquivo ficou pequeno veja.

[TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D NxmREXQ
guimaraf
guimaraf
ProgramadorMaster

Masculino PONTOS : 1823
REPUTAÇÃO : 87
Idade : 38
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por SteveRogers Ter Jul 23, 2019 8:31 pm

Bom, do projeto só achei os modelos 3D, pra o sistema de interpolação eu utilizei como base esse tutorial, e só adaptei criando uma função que pegava os pontos e criava esse path interpolado.
https://www.habrador.com/tutorials/interpolation/1-catmull-rom-splines/
Tem razão, os arquivos não ficam muito grandes, é que a pessoa aqui tem a mania de pensar demais e acaba complicando as coisas sem necessidade kkk
#Correção, o sistema usa curvas catmull rom ao invés de bézier quadrática, o BQ era de um sistema de waypoints.
Parando de poluir o tópico em 3, 2, 1....


Última edição por SteveRogers em Ter Jul 23, 2019 8:52 pm, editado 1 vez(es)
SteveRogers
SteveRogers
ProgramadorMaster

Masculino PONTOS : 1263
REPUTAÇÃO : 102
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por guimaraf Ter Jul 23, 2019 8:44 pm

@SteveRogers escreveu:Bom, do projeto só achei os modelos 3D, pra o sistema de interpolação eu utilizei como base esse tutorial, e só adaptei criando uma função que pegava os pontos e criava esse path interpolado.
https://www.habrador.com/tutorials/interpolation/1-catmull-rom-splines/
Tem razão, não fica muito grande os arquivos, é que a pessoa aqui tem a mania de pensar demais e acaba complicando as coisas sem necessidade kkk
#Correção, o sistema usa curvas catmull rom ao invés de bézier quadrática, o BQ era de um sistema de waypoints.
Parando de poluir o tópico em 3, 2, 1....

Bem interessante, vou dar uma estudada nestes tutoriais.
guimaraf
guimaraf
ProgramadorMaster

Masculino PONTOS : 1823
REPUTAÇÃO : 87
Idade : 38
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por Chilinger Qua Jul 24, 2019 10:13 am

@guimaraf escreveu:Tenho o sistema funcionando no vídeo abaixo.
Por enquanto estou sem tempo para gravar um tutorial.

Eu ja estou seguindo seu projeto no face achei muito show de bola. Cool

Chilinger
MembroAvançado

Masculino PONTOS : 2802
REPUTAÇÃO : 40
Idade : 27
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D WvDYdlf

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por guimaraf Qua Jul 24, 2019 11:27 am

@Chilinger escreveu:
@guimaraf escreveu:Tenho o sistema funcionando no vídeo abaixo.
Por enquanto estou sem tempo para gravar um tutorial.

Eu ja estou seguindo seu projeto no face achei muito show de bola. Cool

Que bom, sempre estamos postando algo sobre o jogo
guimaraf
guimaraf
ProgramadorMaster

Masculino PONTOS : 1823
REPUTAÇÃO : 87
Idade : 38
Áreas de atuação : Programação de jogos e técnico de informática
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D Aad8pUi

http://guimaraf.github.io

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D

Mensagem por Chilinger Sex Abr 09, 2021 5:23 pm

Tenho uma duvida.
No jogo Call of duty multiplayer
quando o jogador morre a camera de que o atacou mostra um pouco antes como isso funciona?

Chilinger
MembroAvançado

Masculino PONTOS : 2802
REPUTAÇÃO : 40
Idade : 27
Respeito as regras : [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D WvDYdlf

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