IEnumerator DropItem() { instructions.enabled = false; itemReady = false; item.transform.parent = itemPreviousParent; float endTime = Time.time + unequipTime; float percent; // set up the destination point RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(new Vector3(Camera.main.pixelWidth / 2, Camera.main.pixelHeight / 2)); Vector3 destPos; // if we try to put it into the ground ... if (Physics.Raycast(ray, out hit, pA.interactDistance + 0.5f)) { // float it above ground destPos = hit.point + Vector3.up * floatHeight; } else { // if we try to put it in the air, move it away from us, then drop it to floatHeight destPos = item.position + equipPoint.forward * pA.interactDistance * 0.8f; if (Physics.Raycast(destPos, Vector3.down, out hit)) { destPos = hit.point + Vector3.up * floatHeight; } } Quaternion destRot = Quaternion.AngleAxis(equipPoint.eulerAngles.y, Vector3.up); while (Time.time <= endTime) { percent = 1 - (endTime - Time.time) / unequipTime; item.position = Vector3.Lerp(item.position, destPos, percent); item.rotation = Quaternion.Slerp(item.rotation, destRot, percent); yield return(new WaitForFixedUpdate()); } itemEquipping = false; pA.setFree(); itemSpinner.enabled = true; try { item.SendMessage("DeactivateItem", SendMessageOptions.RequireReceiver); } catch { Debug.LogError("EquipObject: item needs to implement DeactivateItem()"); } }
public void StartGame() { BUIC.ClearMenus(); player.setFree(); }