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; } } }
void PickUp(IArrowHolder arrowHolder, Arrow arrow) // This is a dumb implementation, but fast enough to code { if (arrowHolder != this) { return; } this.arrow = arrow; }
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. }