Duvida Rigigody Velocity Jogo 2d
4 participantes
Página 1 de 1
Duvida Rigigody Velocity Jogo 2d
To fazendo um jogo 2d, fiz meu personagem ele ta se movimentando com Rigibody velocity só que quando eu pulo e encosto num Colíder e ficar presionando a tecla de movimento ele fica travado e fica de decendo devagarzinho Como a rumo isso ??
roger224- Avançado
- PONTOS : 3299
REPUTAÇÃO : 6
Idade : 24
Áreas de atuação : Programação C#
Respeito as regras :
Re: Duvida Rigigody Velocity Jogo 2d
não entendi muito bem, mas tente aumentar a massa do Rigidbody e mudar o material do collider, se possível poste seu script
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Duvida Rigigody Velocity Jogo 2d
Tentei Mudar O Material do Collider Nao Deu Ele fica Asim O [img][/img]weslleyFx escreveu:não entendi muito bem, mas tente aumentar a massa do Rigidbody e mudar o material do collider, se possível poste seu script
roger224- Avançado
- PONTOS : 3299
REPUTAÇÃO : 6
Idade : 24
Áreas de atuação : Programação C#
Respeito as regras :
Re: Duvida Rigigody Velocity Jogo 2d
Minha Script Do Playerroger224 escreveu:Tentei Mudar O Material do Collider Nao Deu Ele fica Asim O " />weslleyFx escreveu:não entendi muito bem, mas tente aumentar a massa do Rigidbody e mudar o material do collider, se possível poste seu script
- Código:
// Vida;
public int LifePlayer;
// BarraDeVida;
public Transform BarraDeVida;
// Fisica;
private Rigidbody2D fisica2D;
// E Parede ?
private bool Parede;
// Ver o Lado Player;
public static bool EstaLadoDireito;
public static bool EstaLadoEsquerdo;
// Audios;
public AudioClip SomCaixa;
public AudioClip SomPlayerHit;
// Audios Danos;
public AudioClip SomEspadaSpark;
// Animator;
private Animator jack;
// TimeDano;
public float TimeParaDano;
public float TimeLimiteParaDano;
// Tempo;
private float TimeSubir;
private float AcaboTempoSubir;
// TomeiDanoInimigos;
private bool TomeiDanoSpark;
// Raycast;
public Transform InicioRaycast;
public Transform FimRaycast;
public Transform InicioAgarrarTop;
public Transform FimAgarrarTop;
public Transform InicioAgarrarBot;
public Transform FimAgarrarBot;
// JaIntancioUmMorto;
public GameObject JackMortoLadoDireito;
public GameObject JackMortoLadoEsquerdo;
private bool JaIntancioUmMorto;
// Booleanas;
private bool Chao;
private bool Agarrou;
private bool Subindo;
public static bool PegoCaixa;
// EstaColidindo;
private bool EstaColidindo;
// int;
public int ForçaMovimento;
public float ForçaPulo;
// ContadorAnimations;
private bool ContadorAndando;
private bool ContadorPulo;
private bool ContadorAgarrando;
private bool ContadorSubindo;
private bool ContadorPuxando;
private bool ContadorDano;
private bool ContadorLancarMagia;
void Start () {
fisica2D = GetComponent<Rigidbody2D>();
jack = GetComponent<Animator>();
TimeSubir = 0;
AcaboTempoSubir = 0.10f;
LifePlayer = 100;
EstaLadoDireito = true;
}
void Update () {
//------------------------------[Vida]------------------;
if(LifePlayer >= 100) {
BarraDeVida.transform.localScale = new Vector2(0.6f,0.6f);
}
if(LifePlayer == 90) {
BarraDeVida.transform.localScale = new Vector2(0.58f,0.6f);
}
if(LifePlayer == 80) {
BarraDeVida.transform.localScale = new Vector2(0.54f,0.6f);
}
if(LifePlayer == 70) {
BarraDeVida.transform.localScale = new Vector2(0.50f,0.6f);
}
if(LifePlayer == 60) {
BarraDeVida.transform.localScale = new Vector2(0.46f,0.6f);
}
if(LifePlayer == 50) {
BarraDeVida.transform.localScale = new Vector2(0.42f,0.6f);
}
if(LifePlayer == 40) {
BarraDeVida.transform.localScale = new Vector2(0.38f,0.6f);
}
if(LifePlayer == 30) {
BarraDeVida.transform.localScale = new Vector2(0.34f,0.6f);
}
if(LifePlayer == 20) {
BarraDeVida.transform.localScale = new Vector2(0.19f,0.6f);
}
if(LifePlayer == 10) {
BarraDeVida.transform.localScale = new Vector2(0.12f,0.6f);
}
if(LifePlayer == 5) {
BarraDeVida.transform.localScale = new Vector2(0.1f,0.6f);
}
if(LifePlayer == 2) {
BarraDeVida.transform.localScale = new Vector2(0.08f,0.6f);
}
if(LifePlayer == 0) {
BarraDeVida.transform.localScale = new Vector2(0.0f,0.6f);
}
if (LifePlayer <= 0 && JaIntancioUmMorto == false) {
JaIntancioUmMorto = true;
BarraDeVida.transform.localScale = new Vector2(0.0f,0.6f);
if(EstaLadoDireito == true) {
Instantiate(JackMortoLadoDireito,transform.position, transform.rotation);
}
if(EstaLadoEsquerdo == true) {
Instantiate(JackMortoLadoEsquerdo,transform.position, transform.rotation);
}
Destroy(gameObject);
}
//---------------------------------------------[LançarMagia]------------------------------;
if(Input.GetKey(KeyCode.Space) && IntanciarMagia.PodeInstanciarMagia == true) {
ContadorLancarMagia = true;
IntanciarMagia.JaIntancioMagia = true;
}
if(IntanciarMagia.PodeInstanciarMagia == false) {
ContadorLancarMagia = false;
}
//---------------------------------------------[Life]------------------------------;
if(LifePlayer <= 0) {
Destroy(gameObject);
}
//---------------------------------------------[Voids]------------------------------;
Raycasting();
Danos();
//---------------------------------------------[Controle-Animation]------------------------------;
jack.SetBool("Andando",ContadorAndando);
jack.SetBool("Pulando",ContadorPulo);
jack.SetBool("Agarrando",ContadorAgarrando);
jack.SetBool("Subindo",ContadorSubindo);
jack.SetBool("Puxando",ContadorPuxando);
jack.SetBool("Dano",ContadorDano);
jack.SetBool("LancarMagia",ContadorLancarMagia);
//---------------------------------------------[Movimento]------------------------------;
if(Input.GetKey(KeyCode.D)) {
ContadorAndando = true;
fisica2D.velocity = new Vector2(ForçaMovimento,fisica2D.velocity.y);
transform.localScale = new Vector3(0.1121784f,0.1121784f,1f);
EstaLadoDireito = true;
EstaLadoEsquerdo = false;
} else {
ContadorAndando = false;
}
if(Input.GetKey(KeyCode.A)) {
ContadorAndando = true;
EstaLadoDireito = false;
EstaLadoEsquerdo = true;
fisica2D.velocity = new Vector2(-ForçaMovimento,fisica2D.velocity.y);
transform.localScale = new Vector3(-0.1121784f,0.1121784f,1f);
}
}
void Raycasting () {
//---------------------------------------------[Sistema Agarrar]------------------------------;
Debug.DrawLine(InicioAgarrarTop.position , FimAgarrarTop.position, Color.red);
Debug.DrawLine(InicioAgarrarBot.position , FimAgarrarBot.position, Color.yellow);
if(!Physics2D.Linecast(InicioAgarrarTop.position, FimAgarrarTop.position) && Physics2D.Linecast(InicioAgarrarBot.position, FimAgarrarBot.position)) {
if(Parede == true) {
Agarrou = true;
}
} else {
Agarrou = false;
}
if(Agarrou == true) {
rigidbody2D.isKinematic = true;
ForçaMovimento = 0;
ContadorAgarrando = true;
if(Input.GetKeyDown("w")) {
Subindo = true;
ContadorSubindo = true;
}
}
if(Agarrou == false) {
rigidbody2D.isKinematic = false;
ForçaMovimento = 2;
ContadorAgarrando = false;
}
if(Subindo == true) {
TimeSubir += Time.deltaTime;
if(TimeSubir >= AcaboTempoSubir) {
Subindo = false;
ContadorSubindo = false;
rigidbody2D.isKinematic = true;
TimeSubir = 0;
}
rigidbody2D.gravityScale = 0;
if(transform.localScale.x == 0.1121784f) {
transform.Translate(5f*Time.deltaTime, 15f*Time.deltaTime, 0);
}
if(transform.localScale.x == -0.1121784f) {
transform.Translate(-5f*Time.deltaTime, 15f*Time.deltaTime, 0);
}
}
if(Subindo == false) {
rigidbody2D.gravityScale = 1;
}
//---------------------------------------------[Sistema Pulo]------------------------------;
if(Input.GetKeyDown("w") && Chao == true) {
fisica2D.AddForce(new Vector2(0,ForçaPulo));
ContadorPulo = true;
} else {
ContadorPulo = false;
}
Debug.DrawLine(InicioRaycast.position , FimRaycast.position, Color.black);
if(Physics2D.Linecast(InicioRaycast.position, FimRaycast.position)) {
Chao = true;
} else {
Chao = false;
}
}
void OnTriggerEnter2D (Collider2D Colidir) {
Debug.Log(Parede);
//---------------------------------------------[Parede]------------------------------;
if(Colidir.tag == "Parede") {
Parede = true;
}
//---------------------------------------------[Cactu]------------------------------;
if(Colidir.tag == "Cactu") {
LifePlayer = LifePlayer -100;
}
if(Colidir.tag == "Caixa") {
if(Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.A) && EstaLadoEsquerdo == true) {
PegoCaixa = true;
ContadorPuxando = true;
} else {
PegoCaixa = false;
ContadorPuxando = false;
}
if(Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.D) && EstaLadoDireito == true) {
PegoCaixa = true;
ContadorPuxando = true;
}
}
}
void OnTriggerExit2D (Collider2D Colidir) {
if(Colidir.tag == "Caixa") {
ContadorPuxando = false;
PegoCaixa = false;
}
if(Colidir.tag == "Parede") {
Parede = false;
}
}
void Danos () {
//---------------------------------------------[Dano - Spark]------------------------------;
if(Spark.DanoSpark == true && TomeiDanoSpark == false) {
TomeiDanoSpark = true;
ContadorDano = true;
audio.PlayOneShot(SomPlayerHit);
audio.PlayOneShot(SomEspadaSpark);
LifePlayer = LifePlayer -10;
}
//---------------------------------------------[Danos Inimigos]------------------------------;
//---------------------------------------------[TomeiDano-Spark]------------------------------;
if(TomeiDanoSpark == true) {
TimeParaDano += Time.deltaTime;
if(TimeParaDano >= TimeLimiteParaDano) {
TimeParaDano = 0;
ContadorDano = false;
TomeiDanoSpark = false;
}
}
}
}
roger224- Avançado
- PONTOS : 3299
REPUTAÇÃO : 6
Idade : 24
Áreas de atuação : Programação C#
Respeito as regras :
Re: Duvida Rigigody Velocity Jogo 2d
Ja tentou criar um Physics Material 2D com Friction(atrito) 0 e aplicou no colider do player ou nas plataformas?
Re: Duvida Rigigody Velocity Jogo 2d
Na plataforma já mais s no player n vo tenta lá , mais só foi eu começa a usar esse velocityManawydan escreveu:Ja tentou criar um Physics Material 2D com Friction(atrito) 0 e aplicou no colider do player ou nas plataformas?
roger224- Avançado
- PONTOS : 3299
REPUTAÇÃO : 6
Idade : 24
Áreas de atuação : Programação C#
Respeito as regras :
Re: Duvida Rigigody Velocity Jogo 2d
Não Deu Certo !!
roger224- Avançado
- PONTOS : 3299
REPUTAÇÃO : 6
Idade : 24
Áreas de atuação : Programação C#
Respeito as regras :
Re: Duvida Rigigody Velocity Jogo 2d
Você pode usar a void OnCollisionStay para detectar se o jogador está colidindo com algo.
Caso o jogador esteja colidindo, mas o IsGround estiver false, você faz a velocidade retornar 0, ai o Player não fica forçando a parede.
Caso o jogador esteja colidindo, mas o IsGround estiver false, você faz a velocidade retornar 0, ai o Player não fica forçando a parede.
Tópicos semelhantes
» (Duvida) Som de jogo
» Duvida em Disparo em jogo de Fps.
» [DUVIDA] Jogo de futebol
» (Duvida) Jogo de futebol
» [DUVIDA] - Pontuação e fim de jogo
» Duvida em Disparo em jogo de Fps.
» [DUVIDA] Jogo de futebol
» (Duvida) Jogo de futebol
» [DUVIDA] - Pontuação e fim de jogo
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos