Problema com Collider
2 participantes
Página 1 de 1
Problema com Collider
Bom, no meu jogo 2d o player pode dar uma rasteira, ele desliza pelo chao e ai desvia dos tiros. Porém um problema. Pra fazer a movimentação, eu criei um objeto vazio e dentro dele coloquei o sprite do personagem parado. Ai no objeto vazio eu coloquei o Box Collider e no sprite eu criei as animações. Ai quando eu coloco pro personagem andar ele realiza a animação, normal, ja que os sprites dele andando estao no mesmo tamanho dele parado. So que os outros sprites sao menores, tipo, no sprite para atirar, o personagem da uma agachada, e tem também a rasteira. Ai entra o problema, o box collider permanece o mesmo ja que eu coloquei ele no empty. Eu nao sei como fazer para que quando o personagem realizar a rasteira, o collider fique de acordo com o sprite da rasteira e nao de acordo com o do sprite dele parado. Alguem sabe algum jeito de colocar um collider para cada sprite ou alguma forma do collider mudar quando o personagem realiza a animação da rasteira? :D
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Problema com Collider
é fácil, fácil mesmo...
preciso apenas do script do seu Player e também preciso saber, o script está no objeto vazio que tem o collider?
preciso apenas do script do seu Player e também preciso saber, o script está no objeto vazio que tem o collider?
Re: Problema com Collider
Sim, o script esta o objeto vazio.
- Código:
using UnityEngine;
using System.Collections;
public class Humano1Controle : MonoBehaviour {
public float speed ;
private Animator anim;
private Rigidbody2D rgd2;
void Start () {
rgd2 = GetComponent<Rigidbody2D> ();
anim = GetComponentInChildren<Animator> ();
}
void Update () {
Moviment ();
Rasteira ();
}
private void Moviment(){
if(Input.GetAxis("Horizontal") < 0)
{
transform.Translate(Vector2.right *speed*Time.deltaTime);
anim.SetFloat("andar",Mathf.Abs(Input.GetAxis("Horizontal")));
transform.eulerAngles = new Vector2(0,180);
}else
if(Input.GetAxis("Horizontal")>0)
{
transform.Translate(Vector2.right *speed*Time.deltaTime);
anim.SetFloat("andar",Mathf.Abs(Input.GetAxis("Horizontal")));
transform.eulerAngles = new Vector2(0,0);
}
}
private void Rasteira(){
if ( Input.GetKey (KeyCode.Z)) {
anim.SetBool ("rasteira", true);
}else{
anim.SetBool ("rasteira", false);
}
}
}
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Problema com Collider
Então, alguma sugestão? algo que eu possa fazer?
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Problema com Collider
Tente ver se isso funciona:
- Código:
using UnityEngine;
using System.Collections;
public class Humano1Controle : MonoBehaviour {
public float speed ;
private Animator anim;
private Rigidbody2D rgd2;
private BoxCollider2D colisor2D;
private Vector2 sizeOriginal;
void Start () {
rgd2 = GetComponent<Rigidbody2D> ();
anim = GetComponentInChildren<Animator> ();
colisor2D = GetComponent<BoxCollider2D> ();
sizeOriginal = new Vector2 (colisor2D.size.x, colisor2D.size.x);
}
void Update () {
Moviment ();
Rasteira ();
}
private void Moviment(){
if(Input.GetAxis("Horizontal") < 0){
transform.Translate(Vector2.right *speed*Time.deltaTime);
anim.SetFloat("andar",Mathf.Abs(Input.GetAxis("Horizontal")));
transform.eulerAngles = new Vector2(0,180);
}else
if(Input.GetAxis("Horizontal")>0){
transform.Translate(Vector2.right *speed*Time.deltaTime);
anim.SetFloat("andar",Mathf.Abs(Input.GetAxis("Horizontal")));
transform.eulerAngles = new Vector2(0,0);
}
}
private void Rasteira(){
if ( Input.GetKey (KeyCode.Z)) {
anim.SetBool ("rasteira", true);
colisor2D.size = new Vector2 (sizeOriginal.x, sizeOriginal.y * 0.5f);
}else{
anim.SetBool ("rasteira", false);
colisor2D.size = sizeOriginal;
}
}
}
Re: Problema com Collider
Funcionou, obrigado, apenas um pequeno problema, quando dou play no jogo o box collider normal diminui de tamanho,o size no Y vai de 0.25 para 0.18, ai o personagem acaba afundando o pé na plataforma.Qualquer valor que eu colocar em Y, sempre quando eu der play, vai voltar para 0.18.
EDIT: Bom, o jeito que encontrei foi aumentado o box collider da plataforma, não é o melhor jeito mas "resolveu",mas ta meio feio.
EDIT: Bom, o jeito que encontrei foi aumentado o box collider da plataforma, não é o melhor jeito mas "resolveu",mas ta meio feio.
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Problema com Collider
Tente este aqui então
- Código:
using UnityEngine;
using System.Collections;
public class Humano1Controle : MonoBehaviour {
public float speed ;
private Animator anim;
private Rigidbody2D rgd2;
private BoxCollider2D colisor2D;
private Vector2 sizeOriginal;
void Start () {
rgd2 = GetComponent<Rigidbody2D> ();
anim = GetComponentInChildren<Animator> ();
colisor2D = GetComponent<BoxCollider2D> ();
sizeOriginal = new Vector2 (colisor2D.size.x, colisor2D.size.y);
}
void Update () {
Moviment ();
Rasteira ();
}
private void Moviment(){
if(Input.GetAxis("Horizontal") < 0){
transform.Translate(Vector2.right *speed*Time.deltaTime);
anim.SetFloat("andar",Mathf.Abs(Input.GetAxis("Horizontal")));
transform.eulerAngles = new Vector2(0,180);
}else
if(Input.GetAxis("Horizontal")>0){
transform.Translate(Vector2.right *speed*Time.deltaTime);
anim.SetFloat("andar",Mathf.Abs(Input.GetAxis("Horizontal")));
transform.eulerAngles = new Vector2(0,0);
}
}
private void Rasteira(){
if ( Input.GetKey (KeyCode.Z)) {
anim.SetBool ("rasteira", true);
colisor2D.size = new Vector2 (sizeOriginal.x, sizeOriginal.y * 0.5f);
}else{
anim.SetBool ("rasteira", false);
colisor2D.size = sizeOriginal;
}
}
}
Re: Problema com Collider
Perfeito, obrigado.
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Tópicos semelhantes
» Ajuda com problema no collider
» Problema com SetActive e collider
» Problema com Wheel Collider
» collider 2d
» RigidBody com Box Collider Travando na Aresta de um Box Collider.
» Problema com SetActive e collider
» Problema com Wheel Collider
» collider 2d
» RigidBody com Box Collider Travando na Aresta de um Box Collider.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos