[RESOLVIDO] Inimigo caminha infinitamente para a direita
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Inimigo caminha infinitamente para a direita
Olá pessoal da SchultzGames!
Pessoal, estou com um problema e gostaria da ajuda de vocês.
Estou criando, juntamente com alguns colegas de classe, um projeto de jogo para encerrar o semestre e eu fiquei como responsável pela programação.
Escrevi um script para que os inimigos terrestres (são dois tipos de inimigos, um voador e um terrestre e foi dado apenas CTRL + C e CTRL + V em ambos e espalhando-os pela cena) fiquem em uma área específica andando e se caso colidisse com o player, provoca um dano - estilo Super Mario.
O problema é especificamente fazer com que o inimigo caminhe. Quando escrevi e testei o script, o inimigo ficou caminhando para trás (direita) de forma infinita, ignorando os Box Colliders que foram colocados na plataforma para limitar a área.
Esse é o script que escrevi:
O jogo está sendo construído em 2D estilo plataforma.
Agradeço por qualquer sugestão que todos possam me dar.
Pessoal, estou com um problema e gostaria da ajuda de vocês.
Estou criando, juntamente com alguns colegas de classe, um projeto de jogo para encerrar o semestre e eu fiquei como responsável pela programação.
Escrevi um script para que os inimigos terrestres (são dois tipos de inimigos, um voador e um terrestre e foi dado apenas CTRL + C e CTRL + V em ambos e espalhando-os pela cena) fiquem em uma área específica andando e se caso colidisse com o player, provoca um dano - estilo Super Mario.
O problema é especificamente fazer com que o inimigo caminhe. Quando escrevi e testei o script, o inimigo ficou caminhando para trás (direita) de forma infinita, ignorando os Box Colliders que foram colocados na plataforma para limitar a área.
Esse é o script que escrevi:
- Código:
public class Inimigo : MonoBehaviour {
private bool eLadoDireito;
[SerializeField]
private float velocidade;
// Use this for initialization
void Start () {
eLadoDireito = true;
}
// Update is called once per frame
void Update () {
Mover();
}
private void OnTriggerEnter2D(Collider2D collision) {
if(collision.tag == "Limite")
{
MudarDirecao();
}
}
private void Mover() {
transform.Translate(PegarDirecao() * (velocidade * Time.deltaTime));
}
private Vector2 PegarDirecao() {
return eLadoDireito ? Vector2.right : Vector2.left;
}
private void MudarDirecao() {
eLadoDireito = !eLadoDireito;
this.transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
}
}
O jogo está sendo construído em 2D estilo plataforma.
Agradeço por qualquer sugestão que todos possam me dar.
Última edição por dstaroski em Ter Dez 05, 2017 10:37 pm, editado 1 vez(es) (Motivo da edição : Resolvido)
LPDig25- Iniciante
- PONTOS : 2549
REPUTAÇÃO : 0
Idade : 31
Áreas de atuação : Futuro Desenvolvedor de Jogos
Respeito as regras :
Re: [RESOLVIDO] Inimigo caminha infinitamente para a direita
Boa tarde cara! se eu não me engano, o Translate ignora colisões. Por isso creio que se deva fazer um esquema para quando chegar em tal lado da tela a direção dele se inverta, e vice-versa. Aqui tem um exemplo:LPDig25 escreveu:Olá pessoal da SchultzGames!
Pessoal, estou com um problema e gostaria da ajuda de vocês.
Estou criando, juntamente com alguns colegas de classe, um projeto de jogo para encerrar o semestre e eu fiquei como responsável pela programação.
Escrevi um script para que os inimigos terrestres (são dois tipos de inimigos, um voador e um terrestre e foi dado apenas CTRL + C e CTRL + V em ambos e espalhando-os pela cena) fiquem em uma área específica andando e se caso colidisse com o player, provoca um dano - estilo Super Mario.
O problema é especificamente fazer com que o inimigo caminhe. Quando escrevi e testei o script, o inimigo ficou caminhando para trás (direita) de forma infinita, ignorando os Box Colliders que foram colocados na plataforma para limitar a área.
Esse é o script que escrevi:
- Código:
public class Inimigo : MonoBehaviour {
private bool eLadoDireito;
[SerializeField]
private float velocidade;
// Use this for initialization
void Start () {
eLadoDireito = true;
}
// Update is called once per frame
void Update () {
Mover();
}
private void OnTriggerEnter2D(Collider2D collision) {
if(collision.tag == "Limite")
{
MudarDirecao();
}
}
private void Mover() {
transform.Translate(PegarDirecao() * (velocidade * Time.deltaTime));
}
private Vector2 PegarDirecao() {
return eLadoDireito ? Vector2.right : Vector2.left;
}
private void MudarDirecao() {
eLadoDireito = !eLadoDireito;
this.transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
}
}
O jogo está sendo construído em 2D estilo plataforma.
Agradeço por qualquer sugestão que todos possam me dar.
Abraço!
Re: [RESOLVIDO] Inimigo caminha infinitamente para a direita
Obrigado pela ajuda dstaroski.
Eu segui o vídeo mas não deu certo, então eu fiz pequenas modificações no código que escrevi, coloquei um Rigidbody 2D nos inimigos e mudei o Body Type para Kinematic e funcionou.
Eu segui o vídeo mas não deu certo, então eu fiz pequenas modificações no código que escrevi, coloquei um Rigidbody 2D nos inimigos e mudei o Body Type para Kinematic e funcionou.
LPDig25- Iniciante
- PONTOS : 2549
REPUTAÇÃO : 0
Idade : 31
Áreas de atuação : Futuro Desenvolvedor de Jogos
Respeito as regras :
Re: [RESOLVIDO] Inimigo caminha infinitamente para a direita
blz cara! Abraço e sucesso!LPDig25 escreveu:Obrigado pela ajuda dstaroski.
Eu segui o vídeo mas não deu certo, então eu fiz pequenas modificações no código que escrevi, coloquei um Rigidbody 2D nos inimigos e mudei o Body Type para Kinematic e funcionou.
Tópicos semelhantes
» [RESOLVIDO] Destruir um inimigo e mudar de cena para o fim do jogo
» [RESOLVIDO] Ajuda com script para matar Inimigo no Jogo
» [RESOLVIDO]Como criar um comando para deslisar o touch na horizontal(direita ou esquerda)?
» [RESOLVIDO] Inimigo olhar para player.
» [RESOLVIDO] O inimigo flipa mas não vai para o outro lado
» [RESOLVIDO] Ajuda com script para matar Inimigo no Jogo
» [RESOLVIDO]Como criar um comando para deslisar o touch na horizontal(direita ou esquerda)?
» [RESOLVIDO] Inimigo olhar para player.
» [RESOLVIDO] O inimigo flipa mas não vai para o outro lado
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos