using System.Collections; using System.Collections.Generic; using UnityEngine; public class ArrowBehaviour : MonoBehaviour { [SerializeField] private float m_rotationSpeed = 1f; [SerializeField] private Transform m_tip; [SerializeField] private float m_lifeTime = 45; private Rigidbody m_rb; ContactPoint[] contactPoints; // Start is called before the first frame update void Start() { m_rb = GetComponent(); Destroy(gameObject, m_lifeTime); } // Update is called once per frame void FixedUpdate() { if (m_rb != null && !m_rb.isKinematic) transform.forward = Vector3.Slerp(transform.forward, m_rb.velocity, m_rotationSpeed); } private void OnCollisionEnter(Collision collision) { contactPoints = new ContactPoint[collision.contactCount]; collision.GetContacts(contactPoints); foreach (ContactPoint point in contactPoints) { //Debug.Log($"point: {point.point}, position: {m_tip.position}. [{Vector3.Distance(point.point, m_tip.position)}]"); if (Vector3.Distance(point.point, m_tip.position) < 0.1f) { Destroy(GetComponent()); Destroy(m_rb); //m_rb.isKinematic = true; transform.parent = point.otherCollider.transform; return; } } } }