Пример #1
0
    public void OnTriggerEnter2D(Collider2D other)
    {
        IArrowHolder           arrowHolder = other.GetComponent <IArrowHolder>();
        EnemyMovementBehaviour EMB         = other.gameObject.GetComponent <EnemyMovementBehaviour>();

        if (arrowHolder != null)
        {
            OnPickedUpBy(arrowHolder, this);
            PickUpBy(arrowHolder);
        }

        if (CurrentState == State.InFlight) // Resting arrows shouldn't hit people
        {
            ITarget target = other.GetComponent <ITarget>();

            if (target != null)
            {
                OnHit(other, target, this);
                Hit(target, other.ClosestPoint(transform.position));
            }

            if (other.gameObject.tag == "Enemy")
            // kill enemy
            {
                EMB.dead = true;
            }
        }
    }
Пример #2
0
    void PickUp(IArrowHolder arrowHolder, Arrow arrow) // This is a dumb implementation, but fast enough to code
    {
        if (arrowHolder != this)
        {
            return;
        }

        this.arrow = arrow;
    }
Пример #3
0
    public void PickUpBy(IArrowHolder arrowHolder)
    {
        _currentState = State.Carried;

        transform.SetParent(arrowHolder.ShootPoint);
        transform.SetPositionAndRotation(arrowHolder.ShootPoint.position, arrowHolder.ShootPoint.rotation);

        collider.enabled = false; // Just in case.
    }