TargetBody.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. using UnityEngine;
  2. public class TargetBody : MonoBehaviour
  3. {
  4. void OnCollisionEnter(Collision collision) {
  5. Arrow arrow = collision.transform.GetComponent<Arrow>();
  6. if (arrow != null)
  7. {
  8. arrow.transform.Find("Head").position = collision.contacts[0].point;
  9. arrow.Hit();
  10. AudioMgr.ins.PlayHit(AudioMgr.GetAudioSource(this.gameObject));
  11. bool hitTarget = false;
  12. if (arrow.armBow.validTargets.Contains(this)) {
  13. float maxSize = Vector3.Distance(this.transform.Find("CenterPoint").position, this.transform.Find("SidePoint").position);
  14. float radius = this.measureRadius(collision.contacts[0].point);
  15. int score = 10 - Mathf.FloorToInt(radius / maxSize * 5);
  16. if (score > 5) {
  17. GameMgr.ins.hitTarget(score);
  18. AudioMgr.ins.PlayCheer(true);
  19. hitTarget = true;
  20. }
  21. }
  22. if (!hitTarget) {
  23. GameMgr.ins.hitTarget(0);
  24. AudioMgr.ins.PlayCheer(false);
  25. }
  26. }
  27. }
  28. float measureRadius(Vector3 position) {
  29. return Vector3.Distance(this.transform.Find("CenterPoint").position, position);
  30. }
  31. }