| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- using UnityEngine;
- public class TargetBody : MonoBehaviour
- {
- float distance = 70f;
- void Start()
- {
- SetDistance(distance);
- }
- void OnCollisionEnter(Collision collision) {
- Arrow arrow = collision.transform.GetComponent<Arrow>();
- 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 * 5);
- if (score > 5) {
- 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 = 7.718f + (-17.12f - 7.718f) * ((value - 10f) / 60f);
- this.transform.parent.localPosition = v3;
- }
- public float GetDistance() {
- return distance;
- }
- }
|