rabidus-test/Assets/BNG Framework/Scripts/Extras/ArrowGrabArea.cs

53 lines
1.7 KiB
C#
Raw Permalink Normal View History

2023-07-24 16:38:13 +03:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BNG {
/// <summary>
/// Spawn an arrow if Trigger is grabbed
/// </summary>
public class ArrowGrabArea : MonoBehaviour {
Bow theBow;
// Start is called before the first frame update
void Start() {
theBow = transform.parent.GetComponent<Bow>();
}
void OnTriggerEnter(Collider other) {
// Grabber entered grab area. We can potentially grab an arrow
Grabber grabObject = other.GetComponent<Grabber>();
if (grabObject != null) {
theBow.ClosestGrabber = grabObject;
// Not holding anything.
if (!grabObject.HoldingItem) {
theBow.CanGrabArrow = true;
}
// Holding an arrow
else if(grabObject.HoldingItem && grabObject.HeldGrabbable != null) {
// A held Arrow entered the grab area but has not yet been knocked
Arrow arrowObject = grabObject.HeldGrabbable.GetComponent<Arrow>();
if (arrowObject != null && theBow.GrabbedArrow == null) {
theBow.GrabArrow(arrowObject);
}
}
}
}
void OnTriggerExit(Collider other) {
// Grabber exited grab area. No longer able to grab an arrow
Grabber grabObject = other.GetComponent<Grabber>();
if (theBow.ClosestGrabber != null && grabObject != null && theBow.ClosestGrabber == grabObject) {
theBow.CanGrabArrow = false;
theBow.ClosestGrabber = null;
}
}
}
}