Exemplo n.º 1
0
    //[MenuItem("Assets/Create/Invantory Object")]
    public static InvantoryObject CreateInvantoryAsset()
    {
        InvantoryObject io = ScriptableObjectUtility.CreateAsset <InvantoryObject>();

        io.itemLogic.name = io.name;
        return(io);
    }
    void OnWizardCreate()
    {
        InvantoryObject io = ScriptableObjectClasses.CreateInvantoryAsset();

        io.objectImage      = objectImage;
        io.objectTooltip    = objectTooltip;
        objectToPrefab.name = itemLogic.name;
        AssetDatabase.RenameAsset("Assets/InvantorySystem/Resources/InvantoryItems/InvantoryObject.asset",
                                  itemLogic.name);
        if (!objectToPrefab.GetComponent <CollectableObject>())
        {
            var co = objectToPrefab.AddComponent <CollectableObject>();
            co.objectRefrence = io;
            co.quantity       = 1;
        }
        else
        {
            objectToPrefab.GetComponent <CollectableObject>().objectRefrence = io;
        }
        var  cols = objectToPrefab.GetComponents <SphereCollider>();
        bool hasTriggerCollider = false;

        for (var i = 0; i < cols.Length; i++)
        {
            if (cols[i].isTrigger)
            {
                hasTriggerCollider = true;
            }
        }
        if (!hasTriggerCollider)
        {
            var co = objectToPrefab.AddComponent <SphereCollider>();
            co.isTrigger = true;
        }

        GameObject igo = CreatePrefab(objectToPrefab);

        Selection.activeObject = igo;
        io.objectPrefab        = Resources.Load <GameObject>("InvantoryPrefabs/" + objectToPrefab.name);
        io.itemLogic           = itemLogic;

        io.name = itemLogic.name;

        Vector3    pos = objectToPrefab.transform.position;
        Quaternion rot = objectToPrefab.transform.rotation;

        DestroyImmediate(objectToPrefab);
        GameObject go = (GameObject)PrefabUtility.InstantiatePrefab(igo);

        go.transform.position  = pos;
        go.transform.rotation  = rot;
        Selection.activeObject = go;
        EditorGUIUtility.PingObject(go);
    }
Exemplo n.º 3
0
    private void UpdateEquipped()
    {
        foreach (Transform child in hand)
        {
            Destroy(child.gameObject);
        }
        if (currentlySelectedItem >= objectsInInvantory.Count)
        {
            return;
        }
        InvantoryObject currentObject = objectsInInvantory [currentlySelectedItem];

        currentObject.equipLogic.EquipItem(currentObject, hand);
    }
    public void UseItem(Transform tf, InvantoryObject invantoryObject)
    {
        switch (logicType)
        {
        case LogicType.Spawn:
            Object.Instantiate(invantoryObject.objectPrefab, tf.position + (tf.forward * 2), Quaternion.identity);
            break;

        case LogicType.Other:
            invantoryObject.objectPrefab.GetComponent <RuntimeInvantoryLogic>().Use(tf.gameObject);
            break;

        default:
            break;
        }
    }
    public void EquipItem(InvantoryObject obj, Transform hand)
    {
        //Debug.Log ("Equipping inventory object " + obj);
        GameObject newObj = GameObject.Instantiate(obj.objectPrefab, Vector3.zero, hand.rotation, hand) as GameObject;

        newObj.gameObject.transform.localPosition = Vector3.zero;
        CollectableObject collectable = obj.objectPrefab.GetComponent <CollectableObject> ();

        hand.localRotation = Quaternion.Euler(collectable.offsetXRot, collectable.offsetYRot, collectable.offsetZRot);

        // disable rigidbody
        Rigidbody rb = newObj.GetComponent <Rigidbody> ();

        rb.useGravity       = false;
        rb.isKinematic      = true;
        rb.detectCollisions = false;

        newObj.gameObject.GetComponent <Light> ().enabled = false;
        if (equipType == EquipType.Custom)
        {
            newObj.GetComponent <RuntimeEquipLogic> ().Equip(newObj);
        }
    }