Parallax travando, segue o código que utilizo
2 participantes
Página 1 de 1
Parallax travando, segue o código que utilizo
olá , tenho uma dúvida , eu estava fazendo o parallax de um projeto meu , vi vários tutoriais , segui tudo passo a passo , mas na hr de testar o meu parallax fica travando , aqui está o código
- Código:
public class paralax : MonoBehaviour
{
private Transform cameraPlayer;
private float tamanho, posicaoInicial;
public float velocidadeParalax;
void Start()https://2img.net/u/1914/40/81/62/smiles/2954844370.png
{
posicaoInicial = transform.position.x;
tamanho = GetComponent<SpriteRenderer>().bounds.size.x;
cameraPlayer = Camera.main.transform;
}
void Update()
{
float temp = (cameraPlayer.transform.position.x * (1 - velocidadeParalax));
float distancia = (cameraPlayer.transform.position.x * velocidadeParalax);
transform.position = new Vector3(posicaoInicial + distancia, transform.position.y , transform.position.z);
if (temp > posicaoInicial + tamanho/2)
{
posicaoInicial += tamanho;
}else if (temp < posicaoInicial - tamanho/2)
{
posicaoInicial -= tamanho;
}
}
}
bunijaclp- Iniciante
- PONTOS : 1738
REPUTAÇÃO : 1
Respeito as regras :
Re: Parallax travando, segue o código que utilizo
Olá amigo, neste caso bastaria você multiplicar o valor soma (tamanho, neste caso) por Time.deltaTime para suavizar a translação. Veja bem:
Porém eu fiz alguns testes aqui e caso você queira um efeito diferenciado e mais suave, utilize o código:
Neste caso utilizamos a função Lerp para "suavizar" (ou interpolar) o Vector3, o que deixaria um efeito muito, muito bacana.
Referências da documentação:
https://docs.unity3d.com/ScriptReference/Vector3.Lerp.html
https://docs.unity3d.com/ScriptReference/Time-deltaTime.html
Obs.: Só toma cuidado também que eu mudei o nome do Script para Parallax já que é um padrão (e até uma boa prática) criar scripts iniciando-se com caixa alta.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Parallax : MonoBehaviour{
private Transform cameraPlayer;
private float tamanho, posicaoInicial;
public float velocidadeParalax;
void Start()
{
posicaoInicial = transform.position.x;
tamanho = GetComponent<SpriteRenderer>().bounds.size.x;
cameraPlayer = Camera.main.transform;
}
void Update()
{
float temp = (cameraPlayer.transform.position.x * (1 - velocidadeParalax));
float distancia = (cameraPlayer.transform.position.x * velocidadeParalax);
transform.position = new Vector3(posicaoInicial + distancia, transform.position.y , transform.position.z);
if (temp > posicaoInicial + tamanho/2)
{
posicaoInicial += tamanho * Time.deltaTime;
}else if (temp < posicaoInicial - tamanho/2)
{
posicaoInicial -= tamanho * Time.deltaTime;
}
}
}
Porém eu fiz alguns testes aqui e caso você queira um efeito diferenciado e mais suave, utilize o código:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Parallax : MonoBehaviour{
private Transform cameraPlayer;
private float tamanho, posicaoInicial;
public float velocidadeParalax;
void Start()
{
posicaoInicial = transform.position.x;
tamanho = GetComponent<SpriteRenderer>().bounds.size.x;
cameraPlayer = Camera.main.transform;
}
void Update()
{
float temp = (cameraPlayer.transform.position.x * (1 - velocidadeParalax));
float distancia = (cameraPlayer.transform.position.x * velocidadeParalax);
Vector3 PositionLerped = Vector3.Lerp(
transform.position,
new Vector3(cameraPlayer.transform.position.x, transform.position.y, transform.position.z),
0.005f
);
transform.position = PositionLerped;
}
}
Neste caso utilizamos a função Lerp para "suavizar" (ou interpolar) o Vector3, o que deixaria um efeito muito, muito bacana.
Referências da documentação:
https://docs.unity3d.com/ScriptReference/Vector3.Lerp.html
https://docs.unity3d.com/ScriptReference/Time-deltaTime.html
Obs.: Só toma cuidado também que eu mudei o nome do Script para Parallax já que é um padrão (e até uma boa prática) criar scripts iniciando-se com caixa alta.
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Parallax travando, segue o código que utilizo
muito , mais muito obrigado , vou testar o código , quanto ao código de suavização , uso a cinemachine , ela ja tem o efeito de lerp , mas vou testar , desde já agradeço
bunijaclp- Iniciante
- PONTOS : 1738
REPUTAÇÃO : 1
Respeito as regras :
Tópicos semelhantes
» Como utilizo o laço for no limite de instanciamento de um objeto?
» Parallax 3D
» Parallax problema
» Problema no Parallax
» Parallax no Menu
» Parallax 3D
» Parallax problema
» Problema no Parallax
» Parallax no Menu
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos