[RESOLVIDO] O inimigo flipa mas não vai para o outro lado
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] O inimigo flipa mas não vai para o outro lado
Eu estava tentando fazer o inimigo flipar quando ele encostasse em uma parede e a rotação dele funciona perfeitamente, mas ele continua seguindo a mesma direção.
Aqui o código(note que o move é multiplicado por -1 e mesmo assim a direção dele continua a mesma):
Aqui o código(note que o move é multiplicado por -1 e mesmo assim a direção dele continua a mesma):
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy : MonoBehaviour
{
public GameObject enemyBullet;
public GameObject player;
public float minimunDistance = 4;
public int enemyHealth = 100;
public GameObject firePoint2;
public float move = -2f;
Rigidbody2D rb;
private bool collide ;
private float waitingTime = 0.5f;
public bool canShoot;
void Start()
{
canShoot = true;
rb = GetComponent<Rigidbody2D>();
rb.velocity = new Vector2(move, rb.velocity.y);
}
void Update()
{
float playerDistance = Vector2.Distance(transform.position, player.transform.position);
if (playerDistance < minimunDistance && Mathf.Abs(transform.position.y - player.transform.position.y) < 1 && canShoot)
{
Shoot();
canShoot = false;
StartCoroutine("WaitToShoot");
if (player.transform.position.x > transform.position.x)
{
transform.Rotate(0f, 180f, 0f);
}
else if (player.transform.position.x < transform.position.x)
{
transform.Rotate(0f, 180f, 0f);
}
}
if (collide)
{
Flip();
}
}
IEnumerator WaitToShoot()
{
yield return new WaitForSeconds(waitingTime);
canShoot = true;
}
public void TakeDamage(int Damage)
{
enemyHealth -= Damage;
if (enemyHealth <= 0)
{
Destroy(gameObject);
}
}
void Shoot()
{
Instantiate(enemyBullet, firePoint2.transform.position, transform.rotation);
}
void Flip()
{
transform.Rotate(0f,180f,0f);
move *= -1f;
collide = false;
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.tag == "Wall")
{
collide = true;
}
}
}
Hamassfall- Avançado
- PONTOS : 2070
REPUTAÇÃO : 7
Respeito as regras :
Re: [RESOLVIDO] O inimigo flipa mas não vai para o outro lado
você precisa mudar o rb.velocity também
Re: [RESOLVIDO] O inimigo flipa mas não vai para o outro lado
Vc só mudou a variável move, mas não atualizou dentro do velocity do rigidbody. Tente assim:
- Código:
void FixedUpdate(){
rb.velocity = new Vector2(move, rb.velocity.y);
}
Re: [RESOLVIDO] O inimigo flipa mas não vai para o outro lado
Era isso mesmo, vlw!MayLeone escreveu:Vc só mudou a variável move, mas não atualizou dentro do velocity do rigidbody. Tente assim:
- Código:
void FixedUpdate(){
rb.velocity = new Vector2(move, rb.velocity.y);
}
Hamassfall- Avançado
- PONTOS : 2070
REPUTAÇÃO : 7
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Como movimentar um objeto de um lado para o outro
» [RESOLVIDO] Fazer o inimigo virar para o lado que você está quando você chega perto
» [RESOLVIDO] Como fazer para colocar um objeto Parente do outro?
» [RESOLVIDO] Inimigo detecta outro Inimigo.
» [RESOLVIDO] Inimigo caminha infinitamente para a direita
» [RESOLVIDO] Fazer o inimigo virar para o lado que você está quando você chega perto
» [RESOLVIDO] Como fazer para colocar um objeto Parente do outro?
» [RESOLVIDO] Inimigo detecta outro Inimigo.
» [RESOLVIDO] Inimigo caminha infinitamente para a direita
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos