Задать вопрос
@Banpsih

Unity(C#) —почему пуля уничтожает монстра?

в чем суть: Пуля не должна уничтожать монстра и в тоже время должна наносить урон игроку. если я ставлю метод урона (код ниже), то пуля и уничтожает монстра( что не должна делать) и наносит урон игроку(что должна). если я убираю метод урона, то и монстра нельзя уничтожить, но и пуля урон игроку не наносит. как исправить?
Код Пули:

float speed = 10f;
    Vector3 dir;
    public Vector3 Direction { set { dir = value; } }
    public SpriteRenderer sprite;
    void Start()
    {
        Destroy(gameObject, 1f);
        sprite = GetComponentInChildren<SpriteRenderer>();

    }
    GameObject parent;
    public GameObject Parent { set { parent=value; } }
         
    
    void Update()
    {
        transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, speed * Time.deltaTime);
        sprite.flipX = dir.x < 0;


    }
    private void OnTriggerEnter2D(Collider2D collider)
    {
        Unit unit = collider.GetComponent<Unit>();
        if (unit && unit.gameObject !=parent)
        {
            //unit.Hit();
            Destroy(gameObject);
        }
    }


Код Монстра
public float rate = 2f;
    Bullet bullet;
    protected override void Awake()
    {
        bullet = Resources.Load<Bullet>("bb1");

    }
    void Shoot()
    {
        Vector3 position = transform.position; position.y += 0.5f;
        Bullet bull1 = Instantiate(bullet, position, bullet.transform.rotation) as Bullet;
        bull1.Parent = gameObject;
        bull1.Direction = -bull1.transform.right;


    }
    protected override void Start()
    {

        InvokeRepeating("Shoot", rate, rate);
    }
    protected override void OnTriggerEnter2D(Collider2D collider)
    {
        Unit unit = collider.GetComponent<Unit>();
        if (unit && unit is Player)
        {
            if (Mathf.Abs(unit.transform.position.x - transform.position.x) < 0.5f)
            {

                Hit();

            }
            else
            {

                unit.Hit();
            }
        }
    }
  • Вопрос задан
  • 146 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы