Доброго времени суток!
Я делаю скролл-шутер на Unity. У разных врагов разные скрипты, но они используют один префаб пули. Пуля должна брать переменную вектора из скрипта врага, но при написании скрипта возникает проблема: для разных врагов приходится писать отдельную переменную скрипта. Более того, при появлении приравнение переменной к скрипту через GetComponent происходит в блоке try-catch, из-за чего часто у пули просто не получается получить вектор и она остается висеть на месте. Как можно решить мою проблему?
Скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyBullet : MonoBehaviour
{
[SerializeField] Rigidbody2D rb;
[SerializeField] float speed;
Vector2 dir;
bool is_changed = false;
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.CompareTag("Player")) { Destroy(this.gameObject); }
if (collision != null)
{
if (!is_changed)
{
try
{
try
{
dir = collision.GetComponent<EnemyCannon>().direction;
}
catch { }
try
{
dir = collision.GetComponent<CrossEnemyCannon>().direction;
}
catch { }
is_changed = true;
}
catch { }
}
}
}
private void FixedUpdate()
{
rb.velocity = dir.normalized * speed;
}
}