в чем суть: Пуля не должна уничтожать монстра и в тоже время должна наносить урон игроку. если я ставлю метод урона (код ниже), то пуля и уничтожает монстра( что не должна делать) и наносит урон игроку(что должна). если я убираю метод урона, то и монстра нельзя уничтожить, но и пуля урон игроку не наносит. как исправить?
Код Пули:
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();
}
}
}