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:
Player olhar para direção em que se movimenta
2 Artistas procuram Programador experiente em UNITY 2D
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Futuro dos Games e suas tecnologias
Mostrar tempo na tela no formato Dia Hora Segundos
Bug com Dropdown
Erro Blender - Peso automatico ossos
Algumas Maneiras de Ganhar Dinheiro Com o Blender e Modelagem 3D
CommandInvokationFailure: Gradle build failed.
Como eu faço pra quando o tempo chegar em 14 segundos ele fazer algo
problema de gerenciamento de memoria na unity
Objeto child independente
Atualização Text
ASSETS do UNITY 3D - posso usar as assets gratuitas do unity em um jogo pago?
Problema com Sistema de Sanidade
Trading Card Game (TCG) de "Fantasia Medieval"
Shader - Campo de Força
[RESOLVIDO] como eu continuo o game a partir de save
Som de queda
Alguém que mexa com otimização mobile? Trabalho Remunerado!
Como fazer um chão quebrar ao passar por cima no Unity 3D
Duvida Sobre a colisao dos objetos
pegar o primeiro pai de um gameObject
Mercado MMO
Barra de Pontos com Slider usando Mathf.Lerp
Criar um poder de água, o que devo usar?
Movimento de BoxCollider com RigidBody
Sistema de Nota Personalizada
Procuro ROTEIRISTA
LWRP Mobile
Jogo de Tiro em 3° pessoa mais com mira
[EQUIPE] VAGAS ABERTAS
Duvida sobre Time.deltaTime
Formação de Equipe
Sprite Renderer
[TUTORIAL] AI Enemy 2.0 + animações ( Jogos de terror )
Desativar Capsule Collider
Quero saber se tem na unity alguma funçao  que seja um trigger?
Inimigo segue o player mesmo morto!!!
Como adicionar códigos nativos de 64 bits em um app Android? 64 bits do Google Play
[Dúvida] Multiplayer via roteador
Como programar um sistema para fazer o Player puxar um objetos no Unity
Chamar objeto em jogo em um modelo prefab
'Smooth Move'!?
DAR AÇÃO A UM BOTÃO
[RESOLVIDO] Problema no mesh collider após exportar para Desktop
Adicionar um botão!!
Site de animações
TurboSquid e licenças Free Royalty
ALGUEM DE PORTO ALEGRE OU ELDORADO DO SUL?
Como deixar o projeto mais leve Unity
clicar com o botão direito do mouse em um BOTÃO
Jogo - Conexão com Servidor
Problema com Global Ilumination Unity 2019
[TUTORIAL] Unity 5 - Como criar o próprio FPS Controller
Como coloco interações num objeto de um jogo da Unity 4?
[PHOTON] instanciando 2 players(repetidos) na cena.
Existe outras formas de multiplayer sem ser pelo Photon ou Unet?
GetComponet em Array
Script pesado
A escala do objeto importa ?
Erro: all compiler errors have to be fixed before you can enter play mode
Erro ?
Animação de arma
[TUTORIAL] Script de arma completo! [FREE]
ERRO: O nome de tipo ou namespace "UI" não existe no namespace "UnityEngine"
Skill não se move com o Jogador!!
Amoeba / Gosma - Unity
Player sobreviver desde as 00h ás 04:00
[RESOLVIDO] Publicar no PlayStore um app de Realidade Aumentada
Script de Tempo
[RESOLVIDO] Problema ao arrastar imagens, músicas ou modelos 3D para a UNITY
alguem sabe como atualizar o c#
como fazer um objeto seguir o player 2D
Jogo de Galo e de Galinha também
[TUTORIAL] Controle 3ª pessoa com animações mecânicas (root motion)
Alquem pode me explicar como funciona essa funçao
Como fazer o botão de tiro com touch nao com tecla
Como mover um objeto sem usar collider ou rigidbody?
[RESOLVIDO] Audio Stop e PlayOneShot
[RESOLVIDO] Não posso chamar uma matriz por outra?
[RESOLVIDO] Colisão
Mesh bugada no Android
Rotação animação
[RESOLVIDO] Sombras pixeladas (Android)
Como posso fazer pra atirar onde o cursor do mouse está (UNITY 2D)
[DIVULGAÇÃO] Venha aprender C# jogando!
[RESOLVIDO] Erro com "Instantiate"
Migração de Projetos no Unity
Unity: Como otimizar automaticamente o app para o GooglePlay
as sombras da minha sena esta sendo renderizadas longe de aonde deveria começar
Cena para fim do jogo
Podcast de desenvolvedores de jogos
Alguem cria jogos pagos para PLAY STORE?
[DUVIDA] Problema para "spawnar" os players no PhotonNetwork
[RESOLVIDO] Rotacionar modelo ou eixo de orientaçao (iniciante)
Animaçoes
Entou com duvida com on trigger Enter e Exit - UNITY
Script de player - camera bugada - Photon
Hoje à(s) 2:52 pm
Hoje à(s) 1:44 pm
Hoje à(s) 1:42 am
Hoje à(s) 1:19 am
Hoje à(s) 12:48 am
Ontem à(s) 8:09 pm
Ontem à(s) 7:20 pm
Ontem à(s) 5:13 pm
Ontem à(s) 3:29 am
Seg Fev 24, 2020 10:03 pm
Seg Fev 24, 2020 1:54 pm
Seg Fev 24, 2020 10:44 am
Seg Fev 24, 2020 9:13 am
Dom Fev 23, 2020 10:20 pm
Dom Fev 23, 2020 10:09 pm
Dom Fev 23, 2020 9:42 pm
Dom Fev 23, 2020 9:13 pm
Dom Fev 23, 2020 8:35 pm
Dom Fev 23, 2020 7:53 pm
Dom Fev 23, 2020 7:45 pm
Dom Fev 23, 2020 7:43 pm
Dom Fev 23, 2020 7:23 pm
Dom Fev 23, 2020 6:06 pm
Dom Fev 23, 2020 5:01 pm
Dom Fev 23, 2020 4:51 pm
Dom Fev 23, 2020 6:39 am
Sab Fev 22, 2020 11:43 pm
Sab Fev 22, 2020 9:52 pm
Sab Fev 22, 2020 5:17 pm
Sab Fev 22, 2020 2:41 pm
Sab Fev 22, 2020 2:25 pm
Sab Fev 22, 2020 1:06 pm
Sab Fev 22, 2020 12:50 pm
Sab Fev 22, 2020 11:14 am
Sex Fev 21, 2020 7:55 pm
Sex Fev 21, 2020 6:21 pm
Sex Fev 21, 2020 4:44 pm
Sex Fev 21, 2020 4:26 pm
Sex Fev 21, 2020 1:55 pm
Sex Fev 21, 2020 1:02 pm
Sex Fev 21, 2020 9:05 am
Qui Fev 20, 2020 7:20 pm
Qui Fev 20, 2020 4:51 pm
Qui Fev 20, 2020 12:48 pm
Qui Fev 20, 2020 8:47 am
Qua Fev 19, 2020 8:13 pm
Qua Fev 19, 2020 6:49 pm
Qua Fev 19, 2020 3:51 pm
Qua Fev 19, 2020 1:04 am
Ter Fev 18, 2020 11:22 pm
Ter Fev 18, 2020 10:10 pm
Ter Fev 18, 2020 5:28 pm
Seg Fev 17, 2020 11:46 pm
Seg Fev 17, 2020 10:43 pm
Seg Fev 17, 2020 3:28 pm
Seg Fev 17, 2020 3:19 pm
Seg Fev 17, 2020 2:55 pm
Seg Fev 17, 2020 1:07 pm
Seg Fev 17, 2020 11:00 am
Seg Fev 17, 2020 9:54 am
Seg Fev 17, 2020 9:02 am
Seg Fev 17, 2020 4:50 am
Seg Fev 17, 2020 12:12 am
Dom Fev 16, 2020 4:29 pm
Dom Fev 16, 2020 12:42 pm
Dom Fev 16, 2020 3:50 am
Sab Fev 15, 2020 7:28 pm
Sab Fev 15, 2020 3:19 pm
Sab Fev 15, 2020 10:36 am
Sab Fev 15, 2020 12:29 am
Sex Fev 14, 2020 7:41 pm
Sex Fev 14, 2020 4:59 pm
Sex Fev 14, 2020 2:19 pm
Qua Fev 12, 2020 11:17 am
Ter Fev 11, 2020 7:26 am
Ter Fev 11, 2020 1:07 am
Ter Fev 11, 2020 1:03 am
Seg Fev 10, 2020 10:30 pm
Seg Fev 10, 2020 8:57 pm
Seg Fev 10, 2020 8:32 pm
Seg Fev 10, 2020 4:38 pm
Seg Fev 10, 2020 4:15 pm
Dom Fev 09, 2020 8:24 pm
Dom Fev 09, 2020 6:32 pm
Dom Fev 09, 2020 6:27 pm
Dom Fev 09, 2020 6:22 pm
Dom Fev 09, 2020 6:17 pm
Dom Fev 09, 2020 5:55 pm
Dom Fev 09, 2020 3:24 pm
Dom Fev 09, 2020 2:18 pm
Dom Fev 09, 2020 2:11 pm
Dom Fev 09, 2020 11:22 am
Sab Fev 08, 2020 2:40 pm
Sab Fev 08, 2020 1:03 pm
Sab Fev 08, 2020 12:10 pm
Sab Fev 08, 2020 11:40 am
Sab Fev 08, 2020 11:18 am
Sab Fev 08, 2020 4:46 am
Sex Fev 07, 2020 10:22 pm
luizrbizzio
farfromestus
PauloFR
PauloFR
MayLeone
JoelMJunior
IOOI
Magnatah
LucasFranco
iToddy
diegopds
Batataaaa
xandeqs
thiago000192
BlesseD
MayLeone
guimaraf
Magnatah
Magnatah
Magnatah
Magnatah
Magnatah
Nalfam
xandeqs
joffersoju
ronigleydson
BlesseD
BlesseD
ovoPentelho
Fagner
Fagner
guimaraf
Fagner
Douglas2020A
Diguinho
speedluk
Magnatah
Dom3000
speedluk
cultzone
Xamangue
Samuquis
Batataaaa
speedluk
samuelpaulino
guimaraf
BlesseD
Edivandro2706
Gabriel M
frozen
lesgoy
Batataaaa
danielPedra90
Fagner
pipipipo
pipipipo
daniel123163
artplayer
Batataaaa
Fagner
FelixTedesco
Fabio424
RafaelSquid1
Edivandro2706
Edu4rdogx
juansup
Nalfam
Fagner
SherDown
joffersoju
joffersoju
MarcosSchultz
diegopds
palestinus
dstaroski
pedroorf
ffabim
estuartyy
diegopds
BlesseD
Snickers1020
maxwarnava
Duarte
MayLeone
MRX
MayLeone
poyser
BlesseD
Fagner
lesgoy
lesgoy
Nightos
hendrick22
lesgoy
daniel123163
HEINZ4K
hendrick22
Felipe42
juansup

[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 em 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 : 62631
REPUTAÇÃO : 2411
Idade : 23
Á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 em 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) (Razão : Erros Ortográficos)

Tegh
Avançado
Avançado

Masculino PONTOS : 924
REPUTAÇÃO : 97
Idade : 18
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 em 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 : 3468
REPUTAÇÃO : 485
Idade : 19
Á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 em Sab Jul 07, 2018 1:02 am

Código atualizado e corrigido

Vídeo upado :D
MarcosSchultz
MarcosSchultz
Administrador

Masculino PONTOS : 62631
REPUTAÇÃO : 2411
Idade : 23
Á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 em 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 : 2333
REPUTAÇÃO : 39
Idade : 25
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 em 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 : 62631
REPUTAÇÃO : 2411
Idade : 23
Á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 em 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 : 2333
REPUTAÇÃO : 39
Idade : 25
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 em 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 : 1357
REPUTAÇÃO : 79
Idade : 37
Á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 em 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 : 62631
REPUTAÇÃO : 2411
Idade : 23
Á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 em 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 : 1357
REPUTAÇÃO : 79
Idade : 37
Á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 em 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 : 2333
REPUTAÇÃO : 39
Idade : 25
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 em 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 : 2333
REPUTAÇÃO : 39
Idade : 25
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 em 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 : 62631
REPUTAÇÃO : 2411
Idade : 23
Á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 em 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 : 816
REPUTAÇÃO : 94
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 em 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 : 1357
REPUTAÇÃO : 79
Idade : 37
Á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 em 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 : 1357
REPUTAÇÃO : 79
Idade : 37
Á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 em 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 : 816
REPUTAÇÃO : 94
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 em Ter Jul 23, 2019 7:46 pm

Teria algum exemplo feito?
guimaraf
guimaraf
ProgramadorMaster

Masculino PONTOS : 1357
REPUTAÇÃO : 79
Idade : 37
Á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 em 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 : 62631
REPUTAÇÃO : 2411
Idade : 23
Á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 em 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 : 816
REPUTAÇÃO : 94
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 em 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 : 1357
REPUTAÇÃO : 79
Idade : 37
Á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 em 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 : 816
REPUTAÇÃO : 94
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 em 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 : 1357
REPUTAÇÃO : 79
Idade : 37
Á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 em 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 : 2333
REPUTAÇÃO : 39
Idade : 25
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 em 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 : 1357
REPUTAÇÃO : 79
Idade : 37
Á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

Voltar ao Topo

- Tópicos similares

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