Как сделать так, чтобы объект с тегом "Enemy" не проходил сквозь другие объекты?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Enemy : MonoBehaviour
{
    float speed = 5f;
    int heath = 1;
    Transform target;
    void Start()
    {
        target = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();
    }

    private void Update()
    {
        if (heath <= 0)
        {
            Destroy(gameObject);
        }
    }
    
    public void TakeDamage(int damage)
    {
        heath -= damage;
    }


    void FixedUpdate()
    {
        transform.position = Vector2.MoveTowards(transform.position, target.position, speed * Time.fixedDeltaTime);
    }
     private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.CompareTag("KillAura"))
        {
            Destroy(gameObject);
        }
        else
        {
            SceneManager.LoadScene(4);
        }
    }
}

Ответы (1 шт):

Автор решения: ExtracT

Это сделать довольно легко. Насколько я знаю, Unity сам идентифицирует Enemy как прозрачность. Два варианта:

  1. Поставить объекту физику: в скрипте, добавляя ему колайдер через this.gameObject.AddComponent<Collider>(); и составляя физику через Rigidbody, и собственно сам колайдер
  2. Просто поменять тег на другой, например Spike или Enemy-1
→ Ссылка