Reconhecer colisão juntamente com animação
2 participantes
Página 1 de 1
Reconhecer colisão juntamente com animação
Pessoal, estou tentando condicionar uma colisão para que o objeto quebre somente se o char esteja rodando a animação de ataque. Porem não esta fufando...
o codigo é esse
O q há de errado? Eu acho que é a comparação da animação no IF, pois quando tireo ela todo o resto acontece...
o codigo é esse
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Animator))]
public class Quebrando : MonoBehaviour {
public GameObject Barril_1;
public GameObject Barril_2;
public Animator anim;
public GameObject stars;
void OnCollisionEnter(Collision col){
if (col.gameObject.tag == "barril" && anim.GetCurrentAnimatorStateInfo (0).IsName ("Ataque") ){
Instantiate(stars, transform.position, transform.rotation);
Instantiate(Barril_1, transform.position, transform.rotation);
Destroy(Barril_1,1);
}
}
}
O q há de errado? Eu acho que é a comparação da animação no IF, pois quando tireo ela todo o resto acontece...
Re: Reconhecer colisão juntamente com animação
Resolvi aqui.. era OnCollisionStay no caso em questao :D :D :D :D :D
Fica ae o script .. funfa de boa... da pra instanciar outro prefab.. um item por exemplo....
abraços
Fica ae o script .. funfa de boa... da pra instanciar outro prefab.. um item por exemplo....
abraços
Re: Reconhecer colisão juntamente com animação
Deu um problema aqui!
Ta insntanciando muito objetos. tem como limitar isso???????
Ta insntanciando muito objetos. tem como limitar isso???????
Re: Reconhecer colisão juntamente com animação
Tente isto:
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Animator))]
public class Quebrando : MonoBehaviour {
public GameObject Barril_1;
public GameObject Barril_2;
public Animator anim;
public GameObject stars;
private BoxCollider[] colisores;
void Start (){
colisores = gameObject.GetComponents<BoxCollider>();
}
void OnCollisionEnter(Collision col){
foreach(BoxCollider BoxColl in colisores) BoxColl.enabled = false;
if (col.gameObject.tag == "barril" && anim.GetCurrentAnimatorStateInfo (0).IsName ("Ataque") ){
Instantiate(stars, transform.position, transform.rotation);
Instantiate(Barril_1, transform.position, transform.rotation);
Destroy(Barril_1,1);
}
}
}
Re: Reconhecer colisão juntamente com animação
Voltou a funcionar o codigo q eu tinha feito.. tinha dado pau na unity aqui. Ou foi pq tentei criar um prefab. O problema deste codigo é isso.. estou usando no char.. e qdo criar mais de 1 barril.. como ele destroi 1 dele.. o public game object barril fica nulo.. entendeu? tem como vincular somente com a tag? e como eu destruiria esse objeto barril 1?
vlw marcos.. entendi teu script... otima ideia.. vou testar aqui ... mas o problema é esse q citei agora..
vlw marcos.. entendi teu script... otima ideia.. vou testar aqui ... mas o problema é esse q citei agora..
Re: Reconhecer colisão juntamente com animação
você poderia utilizar Raycast, e pegar o hit(objeto que o raycast colidiu) e destrui-lo
Re: Reconhecer colisão juntamente com animação
Resolvido! Consegui
Marcos eu nao sei nada de raycast.. queria saber incrementa-lo em minha camera para evitar aquelas passagens de parede... vi um tutorial seu mas nao lembro onde e nem qual foi... se puder me passar o link.
Bom segue o codigo final ae.. por eqto nao descobri nenhum bug! rs
Se alguem quiser usar e tiver duvidas, vou deixar explicado aqui.
1 - Eu linko esse script no player
2 - a cxa colider (cxa) tem um pai (pai_cxa). Aqui somente a cxa tem phisics (mesh com convex ativado) e rigidibody (mass 1 + gravidade) .
3 - pedacos_cxa é o objeto que sera instanciado (pode ser uma particula, no meu caso é um fracture com phisics (mesh com convex ativado) e rigidiboy (mass 1 + gravidade) feito no blender.
Vlw pela força!
Marcos eu nao sei nada de raycast.. queria saber incrementa-lo em minha camera para evitar aquelas passagens de parede... vi um tutorial seu mas nao lembro onde e nem qual foi... se puder me passar o link.
Bom segue o codigo final ae.. por eqto nao descobri nenhum bug! rs
- Código:
[code]
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Animator))]
public class Quebrando : MonoBehaviour {
private GameObject cxa;
public GameObject pedacos_cxa;
public AudioClip crash;
public Animator anim;
void Start ()
{
cxa_pai = GameObject.FindWithTag("pai_cxa");
anim = GetComponent<Animator> ();
}
void OnCollisionStay(Collision col){
if (col.gameObject.tag == "cxa" && anim.GetCurrentAnimatorStateInfo (0).IsName ("Spin")) {
Instantiate (pedacos_cxa, transform.position, transform.rotation);
Destroy(col.gameObject);
GetComponent<AudioSource>().PlayOneShot(crash);
}
}
}
[/code]
Se alguem quiser usar e tiver duvidas, vou deixar explicado aqui.
1 - Eu linko esse script no player
2 - a cxa colider (cxa) tem um pai (pai_cxa). Aqui somente a cxa tem phisics (mesh com convex ativado) e rigidibody (mass 1 + gravidade) .
3 - pedacos_cxa é o objeto que sera instanciado (pode ser uma particula, no meu caso é um fracture com phisics (mesh com convex ativado) e rigidiboy (mass 1 + gravidade) feito no blender.
Vlw pela força!
Tópicos semelhantes
» colisao,animaçao,captura,inventario essas sao minhas duvida
» Deformar mesh sem usar rigidbody e reconhecer força do impacto
» Raycast reconhecer qualquer ponto da tela em camera fixa
» Como reconhecer momento antes de sair do jogo
» Como reconhecer que o botão de volume foi pressionado (Mobile)
» Deformar mesh sem usar rigidbody e reconhecer força do impacto
» Raycast reconhecer qualquer ponto da tela em camera fixa
» Como reconhecer momento antes de sair do jogo
» Como reconhecer que o botão de volume foi pressionado (Mobile)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos