Ejemplo n.º 1
0
    // 施放物品时候可能会发生的效果
    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
                }
            }
        }
    }
Ejemplo n.º 2
0
    //点击物品时判断是否可以打开此物品的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("不可互动不可收集");
        }
    }