[RESOLVIDO] Inteligência Artificial (básica) - interação Rigidbody2D Collision
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Inteligência Artificial (básica) - interação Rigidbody2D Collision
Boa noite pessoal, estou criando um jogo 2D, e estou querendo fazer com o que um Rigidbody2D ao colidir com uma parede este faça o caminho inverso.
Ex: O inimigo anda de forma automática da direita para a esquerda, ao colidir com uma parede este começa a andar para a direita.
Tentei da forma abaixo mas não funcionou..pensei que da forma que eu fiz iria funcionar, mas não está.
Poderiam me ajudar ?
agradeço desde já a ajuda.
Ex: O inimigo anda de forma automática da direita para a esquerda, ao colidir com uma parede este começa a andar para a direita.
Tentei da forma abaixo mas não funcionou..pensei que da forma que eu fiz iria funcionar, mas não está.
Poderiam me ajudar ?
agradeço desde já a ajuda.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class move : MonoBehaviour
{
private Rigidbody2D moveEnemy;
public float enemyVelocity;
void Awake()
{
moveEnemy = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
// Spawn an enemy from Right to Left
moveEnemy.velocity = new Vector3(enemyVelocity * -1, moveEnemy.velocity.y, 0f);
}
// OnCollisionEnter2D move Right
void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.tag == "Vertical") // wall
{
moveEnemy.velocity = new Vector3(enemyVelocity, moveEnemy.velocity.y, 0f);
}
}
}
Última edição por dstaroski em Qui Ago 17, 2017 1:12 pm, editado 1 vez(es) (Motivo da edição : Resolvido)
MatheusNani- Iniciante
- PONTOS : 2874
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO] Inteligência Artificial (básica) - interação Rigidbody2D Collision
Bom dia cara!
Veja o que eu alterei, inseri uma booleana para chavear a mudança, sem a mesma o update sempre estará ativo e andando em uma direção:
Abraço!
Veja o que eu alterei, inseri uma booleana para chavear a mudança, sem a mesma o update sempre estará ativo e andando em uma direção:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Teste : MonoBehaviour
{
private Rigidbody2D moveEnemy;
public float enemyVelocity;
private bool Inverter;
void Awake()
{
Inverter = true;
moveEnemy = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
if (Inverter) {
// Spawn an enemy from Right to Left
moveEnemy.velocity = new Vector3 (enemyVelocity * -1, moveEnemy.velocity.y, 0f);
} else {
moveEnemy.velocity = new Vector3(enemyVelocity, moveEnemy.velocity.y, 0f);
}
}
// OnCollisionEnter2D move Right
void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.tag == "Vertical") // wall
{
Inverter = false;
}
}
}
Abraço!
Re: [RESOLVIDO] Inteligência Artificial (básica) - interação Rigidbody2D Collision
Simples assim hahaha obrigado !
MatheusNani- Iniciante
- PONTOS : 2874
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO] Inteligência Artificial (básica) - interação Rigidbody2D Collision
Só pra registrar uma melhoria..onde se o inimigo colidir com uma parede andando da direita para esquerda ele altera o sentido para direita, e caso ele bata em uma parede andando da esquerda para a direta ele altera o sentido para a esquerda.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class move : MonoBehaviour
{
private Rigidbody2D moveEnemy;
public float enemyVelocity;
private bool inverter;
private bool changeInverter;
void Awake()
{
inverter = true;
changeInverter = false;
moveEnemy = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
if (inverter)
{
moveEnemy.velocity = new Vector3(enemyVelocity * -1, moveEnemy.velocity.y, 0f);
}
else
{
moveEnemy.velocity = new Vector3(enemyVelocity, moveEnemy.velocity.y, 0f);
}
}
void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.tag == "Vertical" && !changeInverter)
{
inverter = false;
changeInverter = true;
}
else
{
inverter = true;
changeInverter = false;
}
}
}
MatheusNani- Iniciante
- PONTOS : 2874
REPUTAÇÃO : 2
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Camera collision
» [RESOLVIDO] Rigidbody2D.AddForce esta teleportando o objeto
» [RESOLVIDO] Tentando fazer interação com botão do Mouse(1) nos slots!
» Trigger e Collision
» Collision/Collider 2D
» [RESOLVIDO] Rigidbody2D.AddForce esta teleportando o objeto
» [RESOLVIDO] Tentando fazer interação com botão do Mouse(1) nos slots!
» Trigger e Collision
» Collision/Collider 2D
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos