TargetBody.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. TargetView targetView = TargetView.ins;
  15. if (targetView && targetView.IsOpen() != cameraForTargetView.activeSelf) {
  16. cameraForTargetView.SetActive(targetView.IsOpen());
  17. }
  18. }
  19. void OnCollisionEnter(Collision collision) {
  20. Arrow arrow = collision.transform.GetComponent<Arrow>();
  21. if (arrow)
  22. {
  23. arrow.transform.Find("Head").position = collision.contacts[0].point;
  24. arrow.Hit();
  25. AudioMgr.ins.PlayHit(AudioMgr.GetAudioSource(this.gameObject));
  26. bool hitTarget = false;
  27. if (arrow.armBow.validTargets.Contains(this)) {
  28. float maxSize = Vector3.Distance(this.transform.Find("CenterPoint").position, this.transform.Find("SidePoint").position);
  29. float radius = this.measureRadius(collision.contacts[0].point);
  30. int score = 10 - Mathf.FloorToInt(radius / maxSize * 10);
  31. if (score > 0) {
  32. GameMgr.ins.gameMode.HitTarget(score);
  33. AudioMgr.ins.PlayCheer(true);
  34. hitTarget = true;
  35. }
  36. }
  37. if (!hitTarget) {
  38. GameMgr.ins.gameMode.HitTarget(0);
  39. AudioMgr.ins.PlayCheer(false);
  40. }
  41. }
  42. }
  43. float measureRadius(Vector3 position) {
  44. return Vector3.Distance(this.transform.Find("CenterPoint").position, position);
  45. }
  46. public void SetDistance(float value) {
  47. distance = value;
  48. Vector3 v3 = this.transform.parent.localPosition;
  49. v3.x = 9.815f - GameMgr.RealSizeToGameSize(value);
  50. this.transform.parent.localPosition = v3;
  51. }
  52. public float GetDistance() {
  53. return distance;
  54. }
  55. }