using UnityEngine; public class TargetBody : MonoBehaviour { float distance = 20f; public static TargetBody ins; void Start() { ins = this; SetDistance(distance); } void OnCollisionEnter(Collision collision) { Arrow arrow = collision.transform.GetComponent(); if (arrow) { arrow.transform.Find("Head").position = collision.contacts[0].point; arrow.Hit(); AudioMgr.ins.PlayHit(AudioMgr.GetAudioSource(this.gameObject)); bool hitTarget = false; if (arrow.armBow.validTargets.Contains(this)) { float maxSize = Vector3.Distance(this.transform.Find("CenterPoint").position, this.transform.Find("SidePoint").position); float radius = this.measureRadius(collision.contacts[0].point); int score = 10 - Mathf.FloorToInt(radius / maxSize * 10); if (score > 0) { GameMgr.ins.gameMode.HitTarget(score); AudioMgr.ins.PlayCheer(true); hitTarget = true; } } if (!hitTarget) { GameMgr.ins.gameMode.HitTarget(0); AudioMgr.ins.PlayCheer(false); } } } float measureRadius(Vector3 position) { return Vector3.Distance(this.transform.Find("CenterPoint").position, position); } public void SetDistance(float value) { distance = value; Vector3 v3 = this.transform.parent.localPosition; v3.x = -1.5f - GameMgr.RealSizeToGameSize(value); this.transform.parent.localPosition = v3; } public float GetDistance() { return distance; } }