// 施放物品时候可能会发生的效果 public void PutOnGround() { int resultSize = 0; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo, (clickInScene.distanceToClick + clickInScene.cameraDistance), clickInScene.layerMask) && clickInScene.canAct) { GameObject dragOnObject = hitInfo.collider.gameObject; print(dragOnObject); ObItem targetOb; string targetName; InSceneItem inSceneProperty = dragOnObject.GetComponent <InSceneItem>(); targetOb = dragOnObject.GetComponent <ObItem>(); targetName = dragOnObject.name; print(draggedItem.name + ", on to ground item: " + dragOnObject.name); if (inSceneProperty != null && inSceneProperty.itemType != InSceneItem.ItemTypes.UncollNUnin) { go.ob.GetComponent <ObManagement>().GetItemType(dragOnObject); } canPlaceItem = ItemEffects.canPlace(draggedItem.name, targetName); if (canPlaceItem) { if (targetName == "WCPlaceholder") { ItemEffects.puzzleEffect(draggedItem.name, targetName, pointerData.position, draggedItem, dragOnObject, false); } else { GameObject targetObj = targetOb.correspondingOB; this.placedOnGround = true; go.ob.GetComponent <ObManagement>().DelayedEffect(draggedItem.name, targetName, pointerData.position, draggedItem, targetObj); // ItemEffects.puzzleEffect(draggedItem.name, targetName, pointerData.position, draggedItem, targetObj); go.backpack.GetComponent <Backpack>().RemoveItem(draggedItem); } } else if (inSceneProperty != null) { if (inSceneProperty.itemType != InSceneItem.ItemTypes.CollNIn) { // Dialog nothing happens } else if (inSceneProperty.itemType != InSceneItem.ItemTypes.UncollNIn) { // Dialog nothing happens } else if (inSceneProperty.itemType != InSceneItem.ItemTypes.CollNUnin) { // Dialog this is not interactable but you can collect } } } }
//点击物品时判断是否可以打开此物品的OB,如果可以则打开 public void GetItemType(GameObject clickObject) { InSceneItem inSceneProperty = clickObject.GetComponent <InSceneItem>(); if (inSceneProperty == null || inSceneProperty.itemType != InSceneItem.ItemTypes.UncollNUnin) { GetObItemData(clickObject.GetComponent <ObItem>()); correspondingObj = clickObject; if (inSceneProperty != null && inSceneProperty.itemType == InSceneItem.ItemTypes.UncollNIn) { bound.SetActive(true); } OpenOb(); } else { Debug.Log("不可互动不可收集"); } }