Efeito 'vai e volta'
4 participantes
Página 1 de 1
Efeito 'vai e volta'
bom dia,
fiz esse movimento de vai e volta em uma bola e deu certo até certo ponto:
o efeito que eu quero é isso aí mesmo, só que se vcs repararem, à medida que o tempo passa, a bola vai se deslocando mais ainda para a esquerda até sair da area da camera, eu não estou mostrando a bola saindo da camera porque senão ia demorar muito até isso acontecer.
script usado
eu quero que a bola vai p uma direção, passa pelo meio e vai p outra direção mas sempre no mesmo valor p não sair da camera.
no script os valores são iguais, mas não sei porque ela está desalinhando e deslocando mais p um lado do que outro.
eu poderia fazer tudo isso de outra forma, usando Mathf por exemplo, mas preferi usar somente if e else com fins de aprendizado.
o que tem que ser alterado nesse script?
fiz esse movimento de vai e volta em uma bola e deu certo até certo ponto:
o efeito que eu quero é isso aí mesmo, só que se vcs repararem, à medida que o tempo passa, a bola vai se deslocando mais ainda para a esquerda até sair da area da camera, eu não estou mostrando a bola saindo da camera porque senão ia demorar muito até isso acontecer.
script usado
- Código:
public float velocidade;
public float velMaxima;
public float velMinima;
public bool acelera;
void Start() {
}
void Update() {
transform.Translate(Vector2.left * velocidade * Time.deltaTime);
if (!acelera) {
if (velocidade > velMinima) {
velocidade -= Time.deltaTime * 5;
}
else {
velocidade = velMinima;
acelera = !acelera;
}
}
if (acelera) {
if (velocidade < velMaxima) {
velocidade += Time.deltaTime * 5;
}
else {
velocidade = velMaxima;
acelera = !acelera;
}
}
}
eu quero que a bola vai p uma direção, passa pelo meio e vai p outra direção mas sempre no mesmo valor p não sair da camera.
no script os valores são iguais, mas não sei porque ela está desalinhando e deslocando mais p um lado do que outro.
eu poderia fazer tudo isso de outra forma, usando Mathf por exemplo, mas preferi usar somente if e else com fins de aprendizado.
o que tem que ser alterado nesse script?
Flávio- MembroAvançado
- PONTOS : 2831
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Efeito 'vai e volta'
Tente usar o FixedUpdate, porém não tenho garantia nenhuma que isso funcione.
Madness- Designer
- PONTOS : 3610
REPUTAÇÃO : 222
Áreas de atuação : Designer
Iniciante C++
Quase um programador C#
Respeito as regras :
Re: Efeito 'vai e volta'
- Código:
Vector3 Atual = new Vector3(0, 0, 0),Proximo = new Vector3(10, 0, 0);
float speed = 1f;
float time = Mathf.PingPong(Time.time * speed, 1);
transform.position = Vector3.Lerp(Atual, Proximo, time);
}
ffabim- MembroAvançado
- PONTOS : 3355
REPUTAÇÃO : 69
Respeito as regras :
Re: Efeito 'vai e volta'
Madness realmente com o fixedupade não mudou nada.
ffabim obrigado pelo código, porem com ele o efeito ficou sem aquela suavidade do video, a bola parando suavemente até mudar de direção. E também ela sai sempre do eixo x em 0, vai e volta só a té ao 0.
Do jeito que eu fiz ela sai de um ponto, por exemplo o 0, vai até ~ -5 em x, volta passando pelo 0 e vai até o ~ +5 em x.
O problema todo é que ela não vai até exatamente o valor 5, tem hora que passa um pouco de 5 (5.1f, 5.13f... por ai vai) e é aí que faz esse desalinhamento, hora ela tende a ir mais p esquerda, hora para direita.
Eu já tive um código que uma pessoa me arrumou há alguns anos (usando só if, else e boleano) que fazia tudo certinho, o mesmo tanto que a bola ia para um lado ela ia para o outro também.
Mas um problema no pc me fez perder o projeto e eu não lembro mais como fazia, só sei que o código que fiz acima tá bem perto do que era antigamente, tem que mudar alguma coisa mas tudo que tento nao dá certo.
ffabim obrigado pelo código, porem com ele o efeito ficou sem aquela suavidade do video, a bola parando suavemente até mudar de direção. E também ela sai sempre do eixo x em 0, vai e volta só a té ao 0.
Do jeito que eu fiz ela sai de um ponto, por exemplo o 0, vai até ~ -5 em x, volta passando pelo 0 e vai até o ~ +5 em x.
O problema todo é que ela não vai até exatamente o valor 5, tem hora que passa um pouco de 5 (5.1f, 5.13f... por ai vai) e é aí que faz esse desalinhamento, hora ela tende a ir mais p esquerda, hora para direita.
Eu já tive um código que uma pessoa me arrumou há alguns anos (usando só if, else e boleano) que fazia tudo certinho, o mesmo tanto que a bola ia para um lado ela ia para o outro também.
Mas um problema no pc me fez perder o projeto e eu não lembro mais como fazia, só sei que o código que fiz acima tá bem perto do que era antigamente, tem que mudar alguma coisa mas tudo que tento nao dá certo.
Flávio- MembroAvançado
- PONTOS : 2831
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Efeito 'vai e volta'
Opa!
->Primeiro vc coloca em FixedUptade() pro Time.deltaTime ficar fixo em 0.02 e não variando pra não dar diferenças entre idas e vindas;
->Depois vc coloca um "else if" na segunda condição e vai dar certinho.
->Primeiro vc coloca em FixedUptade() pro Time.deltaTime ficar fixo em 0.02 e não variando pra não dar diferenças entre idas e vindas;
->Depois vc coloca um "else if" na segunda condição e vai dar certinho.
- Código:
void FixedUpdate() {
transform.Translate(Vector2.left * velocidade * Time.deltaTime);
print (Time.deltaTime);
if (!acelera) {
if (velocidade > velMinima) {
velocidade -= Time.deltaTime * 5;
}
else {
velocidade = velMinima;
acelera = !acelera;
}
}
else if (acelera) {
if (velocidade < velMaxima) {
velocidade += Time.deltaTime * 5;
}
else {
velocidade = velMaxima;
acelera = !acelera;
}
}
}
Nalfam- MembroAvançado
- PONTOS : 2436
REPUTAÇÃO : 32
Áreas de atuação : Unity
Respeito as regras :
Re: Efeito 'vai e volta'
Nalfam realmente funcionou agora
não lembro se o código antigo tinha if else e tava em FixedUpdate, mas resolveu
ainda não entendo quando se deve utilizar o FixedUpdate, em que situações se deve usa-lo? ele é o que exatamente?
não lembro se o código antigo tinha if else e tava em FixedUpdate, mas resolveu
ainda não entendo quando se deve utilizar o FixedUpdate, em que situações se deve usa-lo? ele é o que exatamente?
Flávio- MembroAvançado
- PONTOS : 2831
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Efeito 'vai e volta'
Parece q o FixedUpdate é melhor usado quando envolve phisics, rigidbory, comandos que exigem mais precisão.
No seu exemplo mesmo foi melhor o Fixed, o Time.deltaTime (que é o tempo entre um frame e outro) era sempre aleatório (esse valor depende do processador da máquina).
Já por experiência (um pouco estranha) eu defini o seguinte na minha cabeça:
(aconteceu num celular de modelo antigo)
ex: fiz uma esfera passar rapidamente por um colisor e ocorreu da seguinte forma:
1) no Update, o travamento é pouco, mas acontecia de passar direto sem colidir.
2) no Fixed, a esfera travou bem (lag)... mas foi frame por frame até colidir.
*Isso foi junto com vários eventos, tava pesando um pouco o cel.
Meio estranho o exemplo mas foi o que eu consegui entender srsr
No seu exemplo mesmo foi melhor o Fixed, o Time.deltaTime (que é o tempo entre um frame e outro) era sempre aleatório (esse valor depende do processador da máquina).
Já por experiência (um pouco estranha) eu defini o seguinte na minha cabeça:
(aconteceu num celular de modelo antigo)
ex: fiz uma esfera passar rapidamente por um colisor e ocorreu da seguinte forma:
1) no Update, o travamento é pouco, mas acontecia de passar direto sem colidir.
2) no Fixed, a esfera travou bem (lag)... mas foi frame por frame até colidir.
*Isso foi junto com vários eventos, tava pesando um pouco o cel.
Meio estranho o exemplo mas foi o que eu consegui entender srsr
Nalfam- MembroAvançado
- PONTOS : 2436
REPUTAÇÃO : 32
Áreas de atuação : Unity
Respeito as regras :
Re: Efeito 'vai e volta'
Vê esse tutorial aqui, é no site da unity mesmo... ai você vai entender o porquê de eu ter sugerido por em FixedUpdate de antes kkk
Madness- Designer
- PONTOS : 3610
REPUTAÇÃO : 222
Áreas de atuação : Designer
Iniciante C++
Quase um programador C#
Respeito as regras :
Re: Efeito 'vai e volta'
Nalfam entendi, relamente o fixed foi melhor p meu caso.
rodei o script que usa lá no video, vendo na prática vc entende melhor as coisas. no fim das contas o fixedupdate é um update com maior precisão.
rodei o script que usa lá no video, vendo na prática vc entende melhor as coisas. no fim das contas o fixedupdate é um update com maior precisão.
Flávio- MembroAvançado
- PONTOS : 2831
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Tópicos semelhantes
» Megaman X esta de volta
» Inimigo jogar o jogador de volta.
» Limite e Volta no transform translate
» Camera Estilo Gta (Livre que Volta Sozinha)
» como faço para volta a posiçao inicial
» Inimigo jogar o jogador de volta.
» Limite e Volta no transform translate
» Camera Estilo Gta (Livre que Volta Sozinha)
» como faço para volta a posiçao inicial
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos