Tremer Tela na Unity - Tutorial e Help
4 participantes
Página 1 de 1
Tremer Tela na Unity - Tutorial e Help
Fala ai galera, acho que to trazendo aqui pro fórum algo que ainda não tem.
Achei esse tuto de tremer a tela nesse site: http://www.gorilazgames.com/efeito-tremer-tela-unity/
Mas preciso de uma ajuda tbm, pois no meu caso preciso que apos ficar um tempo tremendo a câmera volte para a posição que ela tava, a posição correta da câmera.
Tenho esse script pra fazer tremer vinculado com a câmera:
E para chamar a função pra tremer tenho o seguinte:
Se alguém sabe como fazer, agradeço muito.
Achei esse tuto de tremer a tela nesse site: http://www.gorilazgames.com/efeito-tremer-tela-unity/
Mas preciso de uma ajuda tbm, pois no meu caso preciso que apos ficar um tempo tremendo a câmera volte para a posição que ela tava, a posição correta da câmera.
Tenho esse script pra fazer tremer vinculado com a câmera:
- Código:
using UnityEngine;
using System.Collections;
public class CameraTremer : MonoBehaviour {
public float tremerIntensidade = 0.03f;
public float tremerVelocidade = 0.007f;
private float tremerFator;
private Vector3 posicaoOriginal;
private Quaternion rotacaoOriginal;
public static bool tremerTela = false;
void Update(){
CameraTremerVoid();
if(tremerTela)
Tremer();
}
private void CameraTremerVoid(){
if (tremerFator > 0)
{
transform.position = posicaoOriginal + Random.insideUnitSphere * tremerFator;
transform.rotation = new Quaternion(
rotacaoOriginal.x + Random.Range(-tremerFator, tremerFator) * .2f,
rotacaoOriginal.y + Random.Range(-tremerFator, tremerFator) * .2f,
rotacaoOriginal.z + Random.Range(-tremerFator, tremerFator) * .2f,
rotacaoOriginal.w + Random.Range(-tremerFator, tremerFator) * .2f);
tremerFator -= tremerVelocidade;
}
}
public void Tremer()
{
posicaoOriginal = transform.position;
rotacaoOriginal = transform.rotation;
tremerFator = tremerIntensidade;// .3f;
}
}
E para chamar a função pra tremer tenho o seguinte:
- Código:
using UnityEngine;
using System.Collections;
public class Colliders : MonoBehaviour {
void OnTriggerEnter (Collider col) {
if(col.tag == "Player"){
CameraTremer.tremerTela = true;
StartCoroutine (vibrador ());
}
}
public IEnumerator vibrador(){
yield return new WaitForSeconds (0.2f);
CameraTremer.tremerTela = false;
Debug.Log (CameraTremer.tremerTela);
gameObject.SetActive (false);
}
}
Se alguém sabe como fazer, agradeço muito.
Hardencio- Avançado
- PONTOS : 3720
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
Crie uma variável para guarda a posição inicial
dentro do if tremerTela coloque os dois métodos dentro dele faça um else
e diga que transform.position = StartPosition caso queira fazer com a rotação faça a mesma coisa com um Quaternion ou com vector3 mesmo
dentro do if tremerTela coloque os dois métodos dentro dele faça um else
e diga que transform.position = StartPosition caso queira fazer com a rotação faça a mesma coisa com um Quaternion ou com vector3 mesmo
- Código:
using UnityEngine;
using System.Collections;
public class CameraTremer : MonoBehaviour
{
public float tremerIntensidade = 0.03f;
public float tremerVelocidade = 0.007f;
private float tremerFator;
private Vector3 StartPosition;
private Vector3 posicaoOriginal;
private Quaternion rotacaoOriginal;
public bool tremerTela = false;
void Start()
{
StartPosition = transform.position;
}
void Update()
{
if (tremerTela)
{
CameraTremerVoid();
tremer();
}
else
{
transform.position = StartPosition;
}
}
private void CameraTremerVoid()
{
if (tremerFator > 0)
{
transform.position = posicaoOriginal + Random.insideUnitSphere * tremerFator;
transform.rotation = new Quaternion(
rotacaoOriginal.x + Random.Range(-tremerFator, tremerFator) * .2f,
rotacaoOriginal.y + Random.Range(-tremerFator, tremerFator) * .2f,
rotacaoOriginal.z + Random.Range(-tremerFator, tremerFator) * .2f,
rotacaoOriginal.w + Random.Range(-tremerFator, tremerFator) * .2f);
tremerFator -= tremerVelocidade;
}
}
public void tremer()
{
posicaoOriginal = transform.position;
rotacaoOriginal = transform.rotation;
tremerFator = tremerIntensidade;// .3f;
}
}
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
Obrigado por ajudar, mas não funcionou. Ele ainda ta voltando em outra posição, e meu script de camera Follow não funciona mais, não segue mais o player.
Tinha um erro também que era só por a variável static pra chamar em no outro script.
Tinha um erro também que era só por a variável static pra chamar em no outro script.
Hardencio- Avançado
- PONTOS : 3720
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
okay eu pensei que objeto que esta com esse script era fixo em uma posição e o static eu tirei pra testa e esqueci de por pq dificilmente uso variáveis staticHardencio escreveu:Obrigado por ajudar, mas não funcionou. Ele ainda ta voltando em outra posição, e meu script de camera Follow não funciona mais, não segue mais o player.
Tinha um erro também que era só por a variável static pra chamar em no outro script.
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
vc cito um camera follow ele não faz isso o que vc quer ja que ele segue o player ?
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
Não é o seguinte, eu tenho um script pra seguir o player. Ai esse script de câmera tremer eu quero por quando ele colide com outros objetos. Ai eu coloquei o script que você respondeu ali e agora não funciona mais, não segue mais o player kkkk e também não está iniciando na posição inicial da câmera, por enquanto heheh xD
Se quiser posso postar o script do follow aqui.
Se quiser posso postar o script do follow aqui.
Hardencio- Avançado
- PONTOS : 3720
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
Hardencio escreveu:Não é o seguinte, eu tenho um script pra seguir o player. Ai esse script de câmera tremer eu quero por quando ele colide com outros objetos. Ai eu coloquei o script que você respondeu ali e agora não funciona mais, não segue mais o player kkkk e também não está iniciando na posição inicial da câmera, por enquanto heheh xD
Se quiser posso postar o script do follow aqui.
seria bom
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
Esse é meu script da câmera para seguir o player.
Basicamente, o que eu quero fazer é que de uma tremidinha na tela quando eu toco em tal objeto, voltando a sua posição original, se puder ajudar, posso até te recompensar. xD
- Código:
using UnityEngine;
using System.Collections;
public class CameraFollow : MonoBehaviour {
public GameObject player;
Vector3 sholdPos;
void Update () {
sholdPos = Vector3.Lerp (gameObject.transform.position, player.transform.position, Time.deltaTime);
gameObject.transform.position = new Vector3 (sholdPos.x, 0, sholdPos.z);
}
}
Basicamente, o que eu quero fazer é que de uma tremidinha na tela quando eu toco em tal objeto, voltando a sua posição original, se puder ajudar, posso até te recompensar. xD
Hardencio- Avançado
- PONTOS : 3720
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
e em 2D ou Não ?
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Hardencio- Avançado
- PONTOS : 3720
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
vc ja fez algo assim
no offset vc ajusta tudo direitinho como vc quer depois basta pegar a rotação inicial
- Código:
using UnityEngine;
using System.Collections;
public class Follow : MonoBehaviour
{
public GameObject player;
public Vector3 offset;
public float speed;
void FixedUpdate()
{
transform.position = Vector3.Lerp(transform.position, player.transform.position + offset, speed * Time.deltaTime);
}
}
no offset vc ajusta tudo direitinho como vc quer depois basta pegar a rotação inicial
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
mano acorda ae no skype
eu digo acorda ae cara e ele fica off
eu digo acorda ae cara e ele fica off
anizioNoob- Avançado
- PONTOS : 3477
REPUTAÇÃO : 17
Idade : 22
Áreas de atuação : Sei programar animators, e modelar no sketchup
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
Cara, para que possamos fazer o script, você precisa especificar algumas coisas...
A camera é interna ao player ou externa?
quando ela treme, ela ainda vai se mover pelo cenário, mesmo tremendo?
especifique beeeem certin o que está tentando fazer.
A camera é interna ao player ou externa?
quando ela treme, ela ainda vai se mover pelo cenário, mesmo tremendo?
especifique beeeem certin o que está tentando fazer.
Re: Tremer Tela na Unity - Tutorial e Help
acho q ele qr uma camera tipo a do mental hospital 3do android
anizioNoob- Avançado
- PONTOS : 3477
REPUTAÇÃO : 17
Idade : 22
Áreas de atuação : Sei programar animators, e modelar no sketchup
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
É uma câmera no estilo topo em isométrica, meia em 3 pessoa, mas não rotaciona. E sim, enquanto tremer poderá estar se mexendo, pois ela segue o player. O que eu quero fazer é quando meu player encostar em um objeto a tela dar uma tremida. Já está acontecendo isso, porem não volta pra posição que estava quando começou a tremer.
Ficou mais claro?
Ficou mais claro?
Hardencio- Avançado
- PONTOS : 3720
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
sim bom o que vc tem que fazer eh fazer e uma variável para guada a posição onde estava antes de começar a tremer, vc pode fazer isso quando colidir certo no primeiro script CameraTremer faça uma variável do tipo Vector3 com qualquer nome relacionado
no segundo script faça uma variável do tipo do CameraTremer (classe) logo depois no start vai ter que procurar o objeto que esta com essa classe
usando o FindObjectOfType assim vc poderá acessar as variável de outra classe assim quando colidir guardaremos a posição como vc já tem um função do tipo IEnumerator usaremos ela para retorna a posição original depois da espera dos segundos
- Código:
using UnityEngine;
using System.Collections;
public class CameraTremer : MonoBehaviour
{
public float tremerIntensidade = 0.03f;
public float tremerVelocidade = 0.007f;
private float tremerFator;
public Vector3 startPosition;// variável para guarda a posição
private Vector3 posicaoOriginal;
private Quaternion rotacaoOriginal;
public static bool tremerTela = false;
void Update()
{
CameraTremerVoid();
if (tremerTela)
Tremer();
}
private void CameraTremerVoid()
{
if (tremerFator > 0)
{
transform.position = posicaoOriginal + Random.insideUnitSphere * tremerFator;
transform.rotation = new Quaternion(
rotacaoOriginal.x + Random.Range(-tremerFator, tremerFator) * .2f,
rotacaoOriginal.y + Random.Range(-tremerFator, tremerFator) * .2f,
rotacaoOriginal.z + Random.Range(-tremerFator, tremerFator) * .2f,
rotacaoOriginal.w + Random.Range(-tremerFator, tremerFator) * .2f);
tremerFator -= tremerVelocidade;
}
}
public void Tremer()
{
posicaoOriginal = transform.position;
rotacaoOriginal = transform.rotation;
tremerFator = tremerIntensidade;// .3f;
}
}
no segundo script faça uma variável do tipo do CameraTremer (classe) logo depois no start vai ter que procurar o objeto que esta com essa classe
usando o FindObjectOfType assim vc poderá acessar as variável de outra classe assim quando colidir guardaremos a posição como vc já tem um função do tipo IEnumerator usaremos ela para retorna a posição original depois da espera dos segundos
- Código:
using UnityEngine;
using System.Collections;
public class Colliders : MonoBehaviour
{
private CameraTremer m_camera;// classe CameraTremer
void Start()
{
m_camera = FindObjectOfType(typeof(CameraTremer)) as CameraTremer;// procurando o objeto que contem a classe CameraTremer
}
void OnTriggerEnter(Collider col)
{
if (col.tag == "Player")
{
m_camera.startPosition = m_camera.transform.position;//guardando a posição
CameraTremer.tremerTela = true;
StartCoroutine(vibrador());
}
}
public IEnumerator vibrador()
{
yield return new WaitForSeconds(0.2f);
CameraTremer.tremerTela = false;
m_camera.transform.position = m_camera.startPosition;// voltando para a posição
gameObject.SetActive(false);
}
}
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
Entendi sua logica cara, porem ele não volta pra posição que estava quando começou a tremer. Tipo, quando eu colido, treme a tela de boa, os 0.02f, mas quando para de tremer a câmera fica onde parou de tremer entende?
Hardencio- Avançado
- PONTOS : 3720
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
Pera ai, ainda estou confuso...
Você disse que o player vai poder se mover enquanto a tela treme, más quer que ela volte a posição inicial de onde começou a tremer???
Nuss, teria algum vídeo de algum jogo que tenha um efeito igual para eu entender corretamente o que está tentando fazer?
Você disse que o player vai poder se mover enquanto a tela treme, más quer que ela volte a posição inicial de onde começou a tremer???
Nuss, teria algum vídeo de algum jogo que tenha um efeito igual para eu entender corretamente o que está tentando fazer?
Re: Tremer Tela na Unity - Tutorial e Help
Ta confuso mesmo, desculpa. Imagina um GTA. Câmera em 3º pessoa onde o personagem se move. Certamente a câmera segue ele, assim quando acontece uma explosão a tela treme. Então, a tela tem que tremer e quando parar de tremer deve voltar a posição natural dela.
O que está acontecendo no meu jogo é que quando ela treme, mas quando para de tremer ela não volta na sua posição natural. No momento que para de tremer, a câmera fica na posição que ela tava quando terminou de tremer, não voltando ao normal. É isso que estou tentando fazer. Fazer a tela tremer mas que sempre volte a sua posição normal.
O que está acontecendo no meu jogo é que quando ela treme, mas quando para de tremer ela não volta na sua posição natural. No momento que para de tremer, a câmera fica na posição que ela tava quando terminou de tremer, não voltando ao normal. É isso que estou tentando fazer. Fazer a tela tremer mas que sempre volte a sua posição normal.
Hardencio- Avançado
- PONTOS : 3720
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: Tremer Tela na Unity - Tutorial e Help
- Código:
using UnityEngine;
using System.Collections;
public class CameraTremer : MonoBehaviour {
public GameObject posicaoDaCamera;
public float velocidadeDeMovimento = 2;
[Range(0.01f,1.0f)] public float deslocamentoMax = 0.3f, tempoPorTremida = 0.05f;
[Range(5,25)] public int numeroDeDeslocamentos = 15;
bool tremendo = false;
Vector3 deslocamentoADD = Vector3.zero;
float velocidadeAddMovimento = 1;
void Update () {
if (Input.GetKeyDown (KeyCode.E) && tremendo == false) {
tremendo = true;
velocidadeAddMovimento = 10.0f;
StartCoroutine ("TremerCamera");
}
transform.position = Vector3.Lerp (transform.position, posicaoDaCamera.transform.position + deslocamentoADD, Time.deltaTime * velocidadeDeMovimento*velocidadeAddMovimento);
}
IEnumerator TremerCamera(){
for (int x = 0; x < numeroDeDeslocamentos; x++) {
yield return new WaitForSeconds (tempoPorTremida);
deslocamentoADD = new Vector3 (Random.Range (-deslocamentoMax, deslocamentoMax), Random.Range (-deslocamentoMax, deslocamentoMax), Random.Range (-deslocamentoMax, deslocamentoMax));
}
deslocamentoADD = Vector3.zero;
velocidadeAddMovimento = 1;
tremendo = false;
}
}
Basta usar este código na camera, linkar o objeto que representa a posição que a camera sempre irá seguir e configurar as variáveis.
Tópicos semelhantes
» [TUTORIAL] Mensagem aparecer na tela conforme a distância do jogador (Unity 5)
» [TUTORIAL] UNITY 5 - Efeito submerso (underwater effect), distorção da água e gotas na tela
» [TUTORIAL] Tela de "GameOver" que desce automaticamente e se ajusta ao tamanho da tela
» Unity trava com tela preta ao editar textura do Terrain - Unity 5.6.3p2
» [TUTORIAL] Tutorial Unity 3D Movimentação de Personagem com Botões UI
» [TUTORIAL] UNITY 5 - Efeito submerso (underwater effect), distorção da água e gotas na tela
» [TUTORIAL] Tela de "GameOver" que desce automaticamente e se ajusta ao tamanho da tela
» Unity trava com tela preta ao editar textura do Terrain - Unity 5.6.3p2
» [TUTORIAL] Tutorial Unity 3D Movimentação de Personagem com Botões UI
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos