Ao tomar dano o player dar um pulo / Knockback
2 participantes
Página 1 de 1
Ao tomar dano o player dar um pulo / Knockback
Oi queria saber como fazer pular ao tomar dano, no meu script to usando starcourtine mas ele n funciona muito bem ja que as vezes ele ta um pulo muito grande
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class PlayerBehaviourScript : MonoBehaviour {
private Rigidbody2D rb;
private Transform tr;
private Animator an;
public Transform verificaChao;
public Transform verificaParede;
public int curHealth;
public int maxHealth = 5;
public int dmg;
private gameMaster gm;
public float knockback;
public float knockbackLength;
public float knockbackCount;
public bool knockbackFromRight;
private bool estaAndando;
private bool estaNoChao;
private bool estaNaParede;
private bool estaVivo;
private bool viradoParaDireita;
private float axis; //Variavel que controla se estou andando direita ou esquerda
public float velocidade;
public float forcaPulo;
public float raioValidaChao; //Valida se o player se ta tocando no chao
public float raioValidaParede;
public LayerMask solido;
void Start () {
rb = GetComponent<Rigidbody2D> ();
tr = GetComponent<Transform> ();
an = GetComponent<Animator> ();
estaVivo = true;
viradoParaDireita = true;
curHealth = maxHealth;
gm = GameObject.FindGameObjectWithTag ("GameMaster").GetComponent<gameMaster>();
}
void Update () {
estaNoChao = Physics2D.OverlapCircle (verificaChao.position, raioValidaChao, solido);
estaNaParede = Physics2D.OverlapCircle (verificaParede.position, raioValidaParede, solido);
if (estaVivo) {
axis = Input.GetAxisRaw ("Horizontal");
estaAndando = Mathf.Abs (axis) > 0f;
//Verifica se o player esta virando pro lado ou pro outro
if (axis > 0f && !viradoParaDireita) {
flip ();
} else if (axis < 0f && viradoParaDireita) {
flip ();
}
//Quando player apertar o botao de pulo
if (Input.GetButtonDown ("Jump") && estaNoChao)
rb.AddForce (tr.up * forcaPulo);
Animations ();
if (curHealth > maxHealth) {
curHealth = maxHealth;
}
if (curHealth <= 0) {
Die ();
}
}
}
void FixedUpdate() {
if (estaAndando && !estaNaParede) {
if (viradoParaDireita)
rb.velocity = new Vector2 (velocidade, rb.velocity.y);
else
rb.velocity = new Vector2 (-velocidade, rb.velocity.y);
}
}
void flip () {
viradoParaDireita = !viradoParaDireita;
tr.localScale = new Vector2 (-tr.localScale.x, tr.localScale.y);
}
void Animations(){
an.SetBool("Andando",(estaNoChao && estaAndando));
an.SetBool ("Pulando", !estaNoChao);
an.SetFloat ("VelVertical", rb.velocity.y);
}
void OnDrawGizmosSelected(){
Gizmos.color = Color.red;
Gizmos.DrawWireSphere (verificaChao.position, raioValidaChao);
Gizmos.DrawWireSphere (verificaParede.position, raioValidaParede);
}
void OnCollisionEnter2D(Collision2D other){
if (other.gameObject.CompareTag ("Enemy")) {
other.gameObject.GetComponent<EnemysBehavior> ().enabled = false;
BoxCollider2D[] boxes = other.gameObject.GetComponents < BoxCollider2D> ();
foreach (BoxCollider2D box in boxes) {
box.enabled = false;
}
}
}
void Die (){
SceneManager.LoadScene (SceneManager.GetActiveScene().buildIndex);
}
public void Damage(int dmg){
curHealth -= dmg;
gameObject.GetComponent<Animation> ().Play ("Player_Damage");
}
public IEnumerator KnockBack (float knockDur, float knockBackPwr, Vector3 knockBackDir)
{
float timer = 0;
rb.velocity = new Vector2 (rb.velocity.x,10);
while (knockDur > timer) {
timer += Time.deltaTime;
rb.AddForce (new Vector3 (knockBackDir.x * -100, knockBackDir.y + knockBackPwr, transform.position.z));
}
yield return 0;
}
void OnTriggerEnter2D(Collider2D col){
if (col.CompareTag ("Coin")) {
Destroy (col.gameObject);
gm.contadorDeMoedas += 1;
}
}
}
guilhermeprata- Iniciante
- PONTOS : 2655
REPUTAÇÃO : 0
Respeito as regras :
Re: Ao tomar dano o player dar um pulo / Knockback
Tenta trocar a void Damage por esta:
- Código:
public void Damage(int dmg){
curHealth -= dmg;
gameObject.GetComponent<Animation> ().Play ("Player_Damage");
if (estaNoChao) {
rb.AddForce (tr.up * forcaPulo);
}
}
Tópicos semelhantes
» errro jogo 2d Fazendo o player tomar dano
» (Ajuda) dano ao player
» Mudar cor ao tomar dano
» [RESOLVIDO] "encostar" em um GameObject e Tomar Dano
» erro no scripts de dano no player 2D
» (Ajuda) dano ao player
» Mudar cor ao tomar dano
» [RESOLVIDO] "encostar" em um GameObject e Tomar Dano
» erro no scripts de dano no player 2D
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos