TargetBody.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using UnityEngine;
  2. public class TargetBody : MonoBehaviour
  3. {
  4. [SerializeField] GameObject cameraForTargetView;
  5. float distance = 70f;
  6. public static TargetBody ins;
  7. void Start()
  8. {
  9. ins = this;
  10. SetDistance(distance);
  11. }
  12. void Update()
  13. {
  14. if (GameAssistUI.ins && GameAssistUI.ins.targetViewIsOpen != cameraForTargetView.activeSelf) {
  15. cameraForTargetView.SetActive(GameAssistUI.ins.targetViewIsOpen);
  16. }
  17. }
  18. void OnCollisionEnter(Collision collision) {
  19. Arrow arrow = collision.transform.GetComponent<Arrow>();
  20. if (arrow)
  21. {
  22. arrow.transform.Find("Head").position = collision.contacts[0].point;
  23. arrow.Hit();
  24. AudioMgr.ins.PlayHit(AudioMgr.GetAudioSource(this.gameObject));
  25. bool hitTarget = false;
  26. if (arrow.armBow.validTargets.Contains(this)) {
  27. float maxSize = Vector3.Distance(this.transform.Find("CenterPoint").position, this.transform.Find("SidePoint").position);
  28. float radius = this.measureRadius(collision.contacts[0].point);
  29. int score = 10 - Mathf.FloorToInt(radius / maxSize * 10);
  30. if (score > 0) {
  31. GameMgr.ins.gameMode.HitTarget(score);
  32. AudioMgr.ins.PlayCheer(true);
  33. hitTarget = true;
  34. }
  35. }
  36. if (!hitTarget) {
  37. GameMgr.ins.gameMode.HitTarget(0);
  38. AudioMgr.ins.PlayCheer(false);
  39. }
  40. }
  41. }
  42. float measureRadius(Vector3 position) {
  43. return Vector3.Distance(this.transform.Find("CenterPoint").position, position);
  44. }
  45. public void SetDistance(float value) {
  46. distance = value;
  47. Vector3 v3 = this.transform.parent.localPosition;
  48. v3.x = 9.815f - GameMgr.RealSizeToGameSize(value);
  49. this.transform.parent.localPosition = v3;
  50. }
  51. public float GetDistance() {
  52. return distance;
  53. }
  54. }