예제 #1
0
    public DroppedItem CreateItem(Vector2 pos, int lifeStoneAmount, int goldRate)
    {
        float         droppedLifeStoneOffset = 0.33f;
        DroppedItem   temp          = Instantiate(droppedItem, pos, Quaternion.identity);
        LifeStoneInfo lifeStoneInfo = LifeStoneManager.Instance.CreateLifeStoneShape(lifeStoneAmount, goldRate);

        temp.lifeStoneInfo = lifeStoneInfo;

        for (int y = 0; y < lifeStoneInfo.size.y; y++)
        {
            for (int x = 0; x < lifeStoneInfo.size.x; x++)
            {
                if ((LifeStoneType)int.Parse(lifeStoneInfo.lifeStonePos[y * lifeStoneInfo.size.x + x].ToString()) != LifeStoneType.NULL)
                {
                    Instantiate(droppedLifeStone, new Vector2(x, y) * droppedLifeStoneOffset, Quaternion.identity, temp.transform);
                }
            }
        }
        temp.GetComponent <BoxCollider2D>().size   = (Vector2)lifeStoneInfo.size * droppedLifeStoneOffset;
        temp.GetComponent <BoxCollider2D>().offset = (lifeStoneInfo.size - new Vector2(1, 1)) / 2 * droppedLifeStoneOffset;
        temp.transform.Find("GroundCollider").GetComponent <BoxCollider2D>().size   = (Vector2)lifeStoneInfo.size * droppedLifeStoneOffset;
        temp.transform.Find("GroundCollider").GetComponent <BoxCollider2D>().offset = (lifeStoneInfo.size - new Vector2(1, 1)) / 2 * droppedLifeStoneOffset;

        temp.isWeapon = false;

        return(temp);
    }
예제 #2
0
    void OnTriggerStay2D(Collider2D col)
    {
        DroppedItem di = col.GetComponent <DroppedItem>();
        Entity      e  = col.GetComponent <Entity>();
        Block       b  = col.GetComponent <Block>();

        if (di != null)
        {
            di.GetComponent <Rigidbody2D>().velocity = (Vector2)transform.right * transportSpeed;
            s.color = effect;
        }
        else if (e != null)
        {
            e.GetComponent <Rigidbody2D>().position += (Vector2)transform.right * transportSpeed * Time.deltaTime;
            e.GetComponent <Rigidbody2D>().velocity *= 0.9f;
            //e.GetComponent<Rigidbody2D>().position = Vector3.Lerp(e.GetComponent<Rigidbody2D>().position, transform.position, pullToCenterSpeed * Time.deltaTime);
        }
        else if ((b != null && b.fluid && moveLiquids) || (b != null && b.blockGravity && moveGravityBlocks))
        {
            if (liquidTransportCooldown <= 0)
            {
                liquidTransportCooldown = 1 / liquidTransportRate;
                b.transform.position   += transform.right;
            }
        }
    }
예제 #3
0
            public void ActivateItem(DroppedItem item)
            {
                var rigidbody = item.GetComponent <Rigidbody>();

                rigidbody.isKinematic      = false;
                rigidbody.detectCollisions = true;
                inactiveItems.Remove(item);
                activeItems.Add(item);
            }
예제 #4
0
    void OnTriggerStay2D(Collider2D col)
    {
        DroppedItem di = col.GetComponent <DroppedItem>();
        Entity      e  = col.GetComponent <Entity>();


        if (di != null)
        {
            di.GetComponent <Rigidbody2D>().position = (Vector2)transform.position;
            di.GetComponent <Rigidbody2D>().velocity = Vector2.zero;
            Vector2    a = Vector2.zero;
            Collider2D b = Physics2D.OverlapBox((Vector2)transform.position + (Vector2)transform.up, Vector2.one * .9f, 0, 1021);
            Collider2D c = Physics2D.OverlapBox((Vector2)transform.position + (Vector2)transform.right, Vector2.one * .9f, 0, 1021);
            Collider2D d = Physics2D.OverlapBox((Vector2)transform.position - (Vector2)transform.up, Vector2.one * .9f, 0, 1021);

            Collider2D[]    sides        = new Collider2D[] { b, c, d };
            List <Itemduct> possibleOnes = new List <Itemduct>();

            int i = 0;
            foreach (Collider2D side in sides)
            {
                if (side != null)
                {
                    if (side.GetComponent <Itemduct>() != null)
                    {
                        possibleOnes.Add(side.GetComponent <Itemduct>());
                    }
                }

                i++;
            }

            if (possibleOnes.Count < 1)
            {
                return;
            }
            a = possibleOnes[(int)Mathf.Floor(Random.Range(0, possibleOnes.Count))].transform.position;
            di.GetComponent <Rigidbody2D>().position = a;
        }
    }
예제 #5
0
 public DroppedItem CreateItem(Vector2 pos, Weapon wp)
 {
     if (wp != null)
     {
         DroppedItem temp = Instantiate(droppedItem, pos, Quaternion.identity);
         temp.weapon = wp;
         temp.GetComponent <SpriteRenderer>().sprite = wp.info.sprite;
         temp.isWeapon = true;
         return(temp);
     }
     else
     {
         return(null);
     }
 }
예제 #6
0
    public override void DropItem() //Only Boss!
    {
        DropItemObject.GetComponent <DroppedItem>().dropItemCode = myMonsterInfo.monsterDropItemCode;

        //-----------------------------------아이템 드랍-----------------------------------
        DroppedItem item = Instantiate(DropItemObject).GetComponent <DroppedItem>();

        SpawnCode mDropItemCode = myMonsterInfo.monsterDropItemCode;

        item.name = myMonsterInfo.monsterName + " 드롭 아이템:" + mDropItemCode.ToString();

        int ranX = Random.Range(-100, 101);     //min ~ max-1
        int ranY = Random.Range(100, 201);      //min ~ max-1

        item.transform.position = GetComponent <Transform>().position;
        item.GetComponent <Rigidbody2D>().AddForce(new Vector3(ranX, ranY, 0));              //위 방향으로 랜덤 발사
    }
예제 #7
0
            public void AddFood(bool allChicken)
            {
                if (wait)
                {
                    return;
                }
                wait = true;
                for (int i = 0; i < ItemList.Count; i++)
                {
                    if (ItemList[i] != null)
                    {
                        Item removeitem = ItemList[i];
                        ItemList.Remove(removeitem);
                        removeitem.DoRemove();
                    }
                }


                for (int u = 0; u < (oven.inventory.itemList.Count); u++)
                {
                    if (oven.inventory.itemList[u] == null)
                    {
                        continue;
                    }
                    if (oven.inventory.itemList[u].info == null)
                    {
                        continue;
                    }
                    var itemid = oven.inventory.itemList[u].info.itemid;
                    if (itemid == null)
                    {
                        continue;
                    }
                    if (itemid == 3655341 || itemid == 1436001773)
                    {
                        continue;
                    }

                    var pos = entity.transform.position + new Vector3(0, 0.8f, 0);
                    var ang = entity.transform.eulerAngles;
                    //itemAmount.itemDef.itemid
                    var appear = oven.inventory.itemList[u].info.itemid;
                    if (allChicken)
                    {
                        //burned
                        if (itemid == -225234813 || itemid == -2066726403 || itemid == 1711323399 || itemid == -1014825244 || itemid == 968732481 || itemid == -1714986849)
                        {
                            appear = 1711323399;
                        }
                        //cooked
                        if (itemid == -2043730634 || itemid == 1734319168 || itemid == -202239044 || itemid == -2078972355 || itemid == -991829475 || itemid == 991728250 || itemid == -1691991080)
                        {
                            appear = 1734319168;
                        }
                        //uncooked
                        if (itemid == 1325935999 || itemid == -1658459025 || itemid == -322501005 || itemid == -533484654 || itemid == -642008142 || itemid == -253819519 || itemid == 179448791)
                        {
                            appear = -1658459025;
                        }
                        //spoiled
                        if (itemid == 431617507 || itemid == 661790782 || itemid == -726947205)
                        {
                            appear = -726947205;
                        }
                    }
                    Item item = ItemManager.CreateByItemID(appear, 1, (ulong)0);
                    ItemList.Add(item);
                    DroppedItem food = item.Drop(pos, Vector3.zero).GetComponent <DroppedItem>();
                    food.SetParent(entity);
                    var offset  = 0f;
                    var offset2 = 0f;
                    if (u >= 6)
                    {
                        offset = 0.2f; offset2 = 6;
                    }
                    food.transform.localPosition = new Vector3(-0.1f + offset, 0.8f, -0.38f + (u - offset2) * 0.15f);
                    food.transform.eulerAngles   = ang;
                    food.transform.hasChanged    = true;
                    food.SendNetworkUpdateImmediate();
                    food.GetComponent <Rigidbody>().isKinematic = true;
                    food.GetComponent <Rigidbody>().useGravity  = false;
                    food.allowPickup = false;
                    food.GetComponent <Rigidbody>().detectCollisions = true;
                    food.CancelInvoke((Action)Delegate.CreateDelegate(typeof(Action), food, "IdleDestroy"));
                }

                coroutine = Wait(5);
                StartCoroutine(coroutine);
            }
예제 #8
0
        void DestroyAnyTracker()
        {
            SetMapMarker(Vector3.zero);
            Tracker tracker = containerAK?.GetComponent <Tracker>() ?? holdingPlayer?.GetComponent <Tracker>() ?? droppedAK?.GetComponent <Tracker>();

            if (tracker != null)
            {
                UnityEngine.Object.Destroy(tracker);
            }
        }