[Iniciante] Problema com Slow Motion
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[Iniciante] Problema com Slow Motion
Olá tudo bom? Comecei a aprender Unity & C# essa semana! (Sou ilustrador, nunca tinha programado antes)
Estou adorando, mal consigo dormir pensando em códigos e gamedesign! :D
Graças aos vídeos do Schultz tenho aprendido até que rápido, muito obrigado!
Eu comecei fazendo um jogo em plataforma 2D para aprender as coisas básicas.
Meu personagem anda automático, se bate na parede ele troca de direção e pula com o click do mouse.
Eis que queria adicionar um efeito de Slow Motion quando Seguro a tecla Espaço. Até que funcionou direitinho, porém o slowmotion está afetando a trajetória de quando Pula.
Segue uma imagem de exemplo:
Linha Vermelha = Trajetória normal
Linha Azul = Trajetória alterada depois que segura Slow Motion
Eu dei uma pesquisada e achei uns lugares falando sobre esse Time.fixedDeltaTime.. Não sei se apliquei errado, mas não deu certo.
Aqui vai o código:
Me ajudem por favor?
Se tiver outra maneira melhor de trabalhar o SlowMotion também...
Muito obrigado!
Estou adorando, mal consigo dormir pensando em códigos e gamedesign! :D
Graças aos vídeos do Schultz tenho aprendido até que rápido, muito obrigado!
Eu comecei fazendo um jogo em plataforma 2D para aprender as coisas básicas.
Meu personagem anda automático, se bate na parede ele troca de direção e pula com o click do mouse.
Eis que queria adicionar um efeito de Slow Motion quando Seguro a tecla Espaço. Até que funcionou direitinho, porém o slowmotion está afetando a trajetória de quando Pula.
Segue uma imagem de exemplo:
Linha Vermelha = Trajetória normal
Linha Azul = Trajetória alterada depois que segura Slow Motion
Eu dei uma pesquisada e achei uns lugares falando sobre esse Time.fixedDeltaTime.. Não sei se apliquei errado, mas não deu certo.
Aqui vai o código:
- Código:
using UnityEngine;
using System.Collections;
public class HeroController : MonoBehaviour {
Rigidbody2D myBody;
public float jumpHeight = 1700f;
public float moveSpeed = 350f;
public bool moveRight;
public Transform groundCheck;
public float groundCheckRadius;
public LayerMask whatIsGround;
private bool grounded;
// Mudar Direção
public Transform wallCheck;
public float wallCheckRadius;
public LayerMask whatIsWall;
public bool hittingWall;
public float slowMotionSpeed = 0.2f;
private bool doubleJumped;
void Start () {
myBody = GetComponent<Rigidbody2D> ();
}
void FixedUpdate(){
grounded = Physics2D.OverlapCircle (groundCheck.position, groundCheckRadius, whatIsGround);
hittingWall = Physics2D.OverlapCircle (wallCheck.position, wallCheckRadius, whatIsWall);
}
void Update () {
if (hittingWall){
moveRight = !moveRight;
}
if (moveRight) {
transform.localScale = new Vector3 (-1f, 1f, 1f);
myBody.velocity = new Vector2 (-moveSpeed * Time.deltaTime, myBody.velocity.y);
} else {
transform.localScale = new Vector3 (1f, 1f, 1f);
myBody.velocity = new Vector2 (moveSpeed * Time.deltaTime, myBody.velocity.y);
}
if (grounded) {
doubleJumped = false;
}
if (Input.GetMouseButtonDown(0) && grounded) {
myBody.velocity = new Vector2 (myBody.velocity.x, jumpHeight);
}
if (Input.GetMouseButtonDown(0) && !doubleJumped && !grounded) {
myBody.velocity = new Vector2 (myBody.velocity.x, jumpHeight);
doubleJumped = true;
}
// Test SlowMotion
if (Input.GetKey (KeyCode.Space)) {
Time.timeScale = slowMotionSpeed;
// Time.fixedDeltaTime = slowMotionSpeed * 0.02f;
} else {
Time.timeScale = 1;
}
}
}
Me ajudem por favor?
Se tiver outra maneira melhor de trabalhar o SlowMotion também...
Muito obrigado!
dcarneiro- Iniciante
- PONTOS : 2938
REPUTAÇÃO : 0
Respeito as regras :
Re: [Iniciante] Problema com Slow Motion
isso acontece porque você esta modificando o tempo tente utilizar o fixedDeltaTime para fazer a movimentação ou adicionar um valor extra
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [Iniciante] Problema com Slow Motion
Opa, então wesley, eu tentei colocar dessa maneira(vi em algum forum americano):
Mas não sei se usei errado, se essa é a maneira certa de usar... acabou que não fez diferença nenhuma.
- Código:
// Test SlowMotion
if (Input.GetKey (KeyCode.Space)) {
Time.timeScale = slowMotionSpeed;
Time.fixedDeltaTime = slowMotionSpeed * 0.02f;
Mas não sei se usei errado, se essa é a maneira certa de usar... acabou que não fez diferença nenhuma.
dcarneiro- Iniciante
- PONTOS : 2938
REPUTAÇÃO : 0
Respeito as regras :
Re: [Iniciante] Problema com Slow Motion
assim cara
na movimentação, basta setar o do fixedDeltaTime valor dele como 1
na movimentação, basta setar o do fixedDeltaTime valor dele como 1
- Código:
myBody.velocity = new Vector2(moveSpeed * Time.fixedDeltaTime, myBody.velocity.y);
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [Iniciante] Problema com Slow Motion
Enteeeendi! Funcionou perfeito!
Mano, muito obrigado!
Desculpa o incomodo ai, sou bem leigo ainda hehe
abraços!
Mano, muito obrigado!
Desculpa o incomodo ai, sou bem leigo ainda hehe
abraços!
dcarneiro- Iniciante
- PONTOS : 2938
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» SLOW MOTION EFFECT
» Apply Root Motion
» Duvidas de iniciante(sou noob ;-;)
» Iniciante no unity
» Espelhamento de uma mão usando Leap Motion
» Apply Root Motion
» Duvidas de iniciante(sou noob ;-;)
» Iniciante no unity
» Espelhamento de uma mão usando Leap Motion
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos