public virtual void Update() { if (Dropping) { RaycastHit hit; if (Physics.Raycast(transform.position, Vector3.down, out hit, 0.3f, LayerMask.GetMask("Crates", "Floor"))) { Crate crate = hit.transform.GetComponent <Crate> (); if (crate == null) { transform.position = hit.point; OnDropStop(hit.transform); } else if (!crate.Dropping) { transform.position = hit.point; OnDropStop(hit.transform); crate.OnHitByDroppedObject(); } } } }