Я только что исправил ошибку и обнаружил ошибку, которую, похоже, не могу понять.Мой 2D персонаж атакует и в конце анимации вызывает функцию DealDamage ().Проблема в том, что когда мой игрок направлен вправо и атакует врага справа, он работает отлично.Когда он смотрит налево, его как будто врага там нет, и «нечего» поразить.Я проверил, и Raycast возвращает ноль, поэтому он даже не регистрирует врага.Я использовал DrawRaycast, и Raycast явно поражает врага.Я не знаю, что делать.
public void DealDamage()
{
if (facingRight == true && weaponReach < 0)
{
weaponReach *= -1;
}
else if (facingRight == false && weaponReach > 0)
{
weaponReach *= -1;
}
RaycastHit2D hit = Physics2D.Raycast(origin.position, new Vector2(weaponReach, 0), weaponReach, whoIsEnemy);
if (hit.transform.gameObject.layer == 12)
{
EnemyHealth EnemHealth = hit.transform.gameObject.GetComponent<EnemyHealth>();
EnemHealth.TakeDamage(attackDamage);
}
}
Когда я делаю Raycasthit2D следующий код, все волшебно работает отлично.Проблема в том, что расстояние не ограничено, и я определенно не хочу, чтобы игрок ударил врага за милю.
RaycastHit2D hit = Physics2D.Raycast(origin.position, new Vector2(weaponReach, 0), weaponReach, whoIsEnemy);
Я ожидаю, что обе стороны будут работать идеально и одинаково.