Exemple #1
0
    public void ShowSlot(ItemDesc item = null)
    {
        foreach (GameObject obj in SlotsRenderer)
        {
            cObject o = obj.GetComponent <cObject>();
            if (item != null && item.Type == TypeItem.Meuble && item.Slots.Contains(o.pType))
            {
                obj.renderer.enabled = true;
            }
            else
            {
                obj.renderer.enabled = false;
            }

            if (item != null)
            {
                foreach (GameObject carton in o.Cartons)
                {
                    carton.renderer.enabled = !obj.renderer.enabled && !HasItemAt(o);
                }
            }
            else
            {
                foreach (GameObject carton in o.Cartons)
                {
                    carton.renderer.enabled = !HasItemAt(o);
                }
            }
        }
    }
Exemple #2
0
    public void CheckCanGroundTile(cObject pObj)
    {
        pObj.notUpBlocked    = true;
        pObj.notGrounded     = true;
        pObj.notRightBlocked = true;
        pObj.notLeftBlocked  = true;

        CheckTiles(tileMap_canHit, pObj, pObj.rt.size);
        CheckTiles(tileMap_cannotHit, pObj, pObj.rt.size);

        if (pObj.notUpBlocked)
        {
            pObj.isUpBlocked = false;
        }
        if (pObj.notGrounded)
        {
            pObj.SetIsGrounded(false);
        }
        if (pObj.notLeftBlocked)
        {
            pObj.isLeftBlocked = false;
        }
        if (pObj.notRightBlocked)
        {
            pObj.isRightBlocked = false;
        }
    }
Exemple #3
0
    private bool HasItemAt(cObject o)
    {
        int type = (int)o.pType;

        if (type == 0)
        {
            return(false);
        }

        return(GameData.Get.Data.Spots[type - 1] != null);
    }
    protected override void Awake()
    {
        base.Awake();

        m_objects = new List <cObject>();

        cObject    BansheeBullet = new cObject();
        GameObject obj           = Instantiate(Resources.Load("Prefabs/Bullet/BansheeBullet")) as GameObject;

        obj.SetActive(false);
        BansheeBullet.Inititlized(ref obj, 24, 6, 5, BulletState.Boss, transform);
        m_objects.Add(BansheeBullet);

        obj = Instantiate(Resources.Load("Prefabs/Bullet/BabyBatBullet")) as GameObject;
        obj.SetActive(false);
        cObject BatBullet = new cObject();

        BatBullet.Inititlized(ref obj, 15, 3, 5, BulletState.Monster, transform);
        m_objects.Add(BatBullet);

        obj = Instantiate(Resources.Load("Prefabs/Bullet/Arrow")) as GameObject;
        obj.SetActive(false);
        cObject Arrow = new cObject();

        Arrow.Inititlized(ref obj, 15, 5, 5, BulletState.Monster, transform);
        m_objects.Add(Arrow);

        obj = Instantiate(Resources.Load("Prefabs/Bullet/BatBullet")) as GameObject;
        obj.SetActive(false);
        cObject BigRadBat = new cObject();

        BigRadBat.Inititlized(ref obj, 40, 5, 5, BulletState.Monster, transform);
        m_objects.Add(BigRadBat);

        obj = Instantiate(Resources.Load("Prefabs/Bullet/BatBullet")) as GameObject;
        obj.SetActive(false);
        cObject GiantBat = new cObject();

        GiantBat.Inititlized(ref obj, 40, 5, 5, BulletState.Monster, transform);
        m_objects.Add(GiantBat);



        obj = Instantiate(Resources.Load("Prefabs/Boss/BossBullet")) as GameObject;
        obj.SetActive(false);
        cObject BossBullet = new cObject();

        BossBullet.Inititlized(ref obj, 120, 9, 5, BulletState.Boss, transform);
        m_objects.Add(BossBullet);
    }
Exemple #5
0
    public void Remove()
    {
        GameObject.Destroy(this.gameObject);
        GameData.Get.Data.Spots[(int)this.usedSlot - 1] = null;

        cObject o = MenuManager.Get.SlotsRenderer[(int)this.usedSlot - 1].GetComponent <cObject>();

        if (o)
        {
            foreach (GameObject carton in o.Cartons)
            {
                carton.renderer.enabled = true;
            }
        }
    }
Exemple #6
0
    private bool CheckItemToCollider(GameObject obj)
    {
        ItemDesc itemDesc = mItemGrab.GetComponent <Item>().ItemDesc;

        switch (itemDesc.Type)
        {
        case TypeItem.Consommable:
            if (obj.CompareTag("Player"))
            {
                return(true);
            }
            break;

        case TypeItem.Assurance:
            if (obj.CompareTag("Player"))
            {
                return(true);
            }
            break;

        case TypeItem.Meuble:
            cObject cObj = obj.GetComponent <cObject>();
            if (!cObj)
            {
                break;
            }
            if (itemDesc.Slots.Contains(cObj.pType))
            {
                return(true);
            }
            break;

        default:
            break;
        }
        return(false);
    }
Exemple #7
0
    private void CheckTiles(Tilemap pTileMap, cObject pObj, Vector2 pSize)
    {
        Vector3 originTPos       = pObj.originObj.transform.position;
        float   originRtXLenHalf = pObj.rt.size.x * 0.5f;
        float   originRtYLenHalf = pObj.rt.size.y * 0.5f;

        cellPos = new Vector3Int[]
        {
            new Vector3Int((int)originTPos.x, (int)originTPos.y + (int)(pSize.y * 0.7f), 0),
            new Vector3Int((int)originTPos.x + (int)(pSize.x * 0.4f), (int)originTPos.y + (int)(pSize.y * 0.7f), 0),
            new Vector3Int((int)originTPos.x + (int)(pSize.x * 0.8f), (int)originTPos.y, 0),
            new Vector3Int((int)originTPos.x + (int)(pSize.x * 0.4f), (int)originTPos.y - (int)(pSize.y * 0.7f), 0),
            new Vector3Int((int)originTPos.x, (int)originTPos.y - (int)(pSize.y * 0.7f), 0),
            new Vector3Int((int)originTPos.x - (int)(pSize.x * 0.4f), (int)originTPos.y - (int)(pSize.y * 0.7f), 0),
            new Vector3Int((int)originTPos.x - (int)(pSize.x * 0.8f), (int)originTPos.y, 0),
            new Vector3Int((int)originTPos.x - (int)(pSize.x * 0.4f), (int)originTPos.y + (int)(pSize.y * 0.7f), 0),
        };

        for (short i = 0; i < cellPos.Length; i++)
        {
            Vector3Int worldToCellPos = pTileMap.WorldToCell(cellPos[i]);
            Vector3    cellToWorldPos = pTileMap.CellToWorld(worldToCellPos);
            TileBase   t_tile         = pTileMap.GetTile(worldToCellPos);

            if (t_tile != null)
            {
                switch (i)
                {
                //위쪽 충돌
                case 0:
                    //충돌하였다면..
                    if (originTPos.y + originRtYLenHalf > cellToWorldPos.y)
                    {
                        pObj.notUpBlocked = false;
                        pObj.isUpBlocked  = true;
                        pObj.originObj.transform.position = new Vector3(
                            originTPos.x,
                            cellToWorldPos.y - originRtYLenHalf,
                            originTPos.z
                            );
                    }
                    break;

                //오른쪽 위 충돌
                case 1:
                    //충돌하였다면..
                    if (originTPos.x + originRtXLenHalf > cellToWorldPos.x - 1 &&
                        originTPos.y + originRtYLenHalf > cellToWorldPos.y)
                    {
                        float distX = Mathf.Abs((originTPos.x + originRtXLenHalf) -
                                                cellToWorldPos.x);
                        float distY = Mathf.Abs((originTPos.y + originRtYLenHalf) -
                                                cellToWorldPos.y);

                        //가로 면적이 크다면 아래로
                        if (distX > distY)
                        {
                            pObj.notUpBlocked = false;
                            pObj.isUpBlocked  = true;
                            pObj.originObj.transform.position = new Vector3(
                                originTPos.x,
                                cellToWorldPos.y - originRtYLenHalf,
                                originTPos.z
                                );
                        }
                        //세로 면적이 크다면 왼쪽으로
                        else
                        {
                            pObj.notRightBlocked = false;
                            pObj.isRightBlocked  = true;
                            pObj.originObj.transform.position = new Vector3(
                                cellToWorldPos.x - originRtXLenHalf,
                                originTPos.y,
                                originTPos.z
                                );
                        }
                    }
                    break;

                //오른쪽 충돌
                case 2:
                    //충돌하였다면..
                    if (originTPos.x + originRtXLenHalf > cellToWorldPos.x - 1)
                    {
                        pObj.notRightBlocked = false;
                        pObj.isRightBlocked  = true;
                        pObj.originObj.transform.position = new Vector3(
                            cellToWorldPos.x - originRtXLenHalf,
                            originTPos.y,
                            originTPos.z
                            );
                    }

                    Vector3 checkUpRightTile = new Vector3(pObj.originObj.transform.position.x,
                                                           pObj.originObj.transform.position.y + tileSize,
                                                           pObj.originObj.transform.position.z);
                    break;

                //오른쪽 아래 충돌
                case 3:
                    //충돌하였다면..
                    if (originTPos.x + originRtXLenHalf > cellToWorldPos.x - 1 &&
                        originTPos.y - originRtYLenHalf < (cellToWorldPos.y + tileSize) + 1)
                    {
                        float distX = Mathf.Abs((originTPos.x + originRtXLenHalf) -
                                                cellToWorldPos.x);
                        float distY = Mathf.Abs((originTPos.y - originRtYLenHalf) -
                                                (cellToWorldPos.y + tileSize));

                        //가로 면적이 크다면 위로
                        if (distX > distY)
                        {
                            pObj.notGrounded = false;
                            pObj.SetIsGrounded(true);
                            pObj.originObj.transform.position = new Vector3(
                                originTPos.x,
                                (cellToWorldPos.y + tileSize) + originRtYLenHalf,
                                originTPos.z
                                );
                        }
                        //세로 면적이 크다면 왼쪽으로
                        else
                        {
                            pObj.notRightBlocked = false;
                            pObj.isRightBlocked  = true;
                            pObj.originObj.transform.position = new Vector3(
                                cellToWorldPos.x - originRtXLenHalf,
                                originTPos.y,
                                originTPos.z
                                );
                        }
                    }
                    else if (originTPos.y - originRtYLenHalf < (cellToWorldPos.y + tileSize) + 1)
                    {
                        pObj.notGrounded = false;
                    }
                    break;

                //아래쪽 충돌
                case 4:
                    //충돌하였다면..
                    if (originTPos.y - originRtYLenHalf < (cellToWorldPos.y + tileSize))
                    {
                        pObj.notGrounded = false;
                        pObj.SetIsGrounded(true);
                        pObj.originObj.transform.position = new Vector3(
                            originTPos.x,
                            (cellToWorldPos.y + tileSize) + originRtYLenHalf,
                            originTPos.z
                            );
                    }
                    else if (originTPos.y - originRtYLenHalf < (cellToWorldPos.y + tileSize) + 1)
                    {
                        pObj.notGrounded = false;
                    }

                    break;

                //왼쪽 아래 충돌
                case 5:
                    //충돌하였다면..
                    if (originTPos.x - originRtXLenHalf < (cellToWorldPos.x + tileSize) - 1 &&
                        originTPos.y - originRtYLenHalf < (cellToWorldPos.y + tileSize) - 1)
                    {
                        float distX = Mathf.Abs((originTPos.x - originRtXLenHalf) -
                                                (cellToWorldPos.x + tileSize));
                        float distY = Mathf.Abs((originTPos.y - originRtYLenHalf) -
                                                (cellToWorldPos.y + tileSize));

                        //가로 면적이 크다면 위로
                        if (distX > distY)
                        {
                            pObj.notGrounded = false;
                            pObj.SetIsGrounded(true);
                            pObj.originObj.transform.position = new Vector3(
                                originTPos.x,
                                (cellToWorldPos.y + tileSize) + originRtYLenHalf,
                                originTPos.z
                                );
                        }
                        //세로 면적이 크다면 오른쪽으로
                        else
                        {
                            pObj.notLeftBlocked = false;
                            pObj.isLeftBlocked  = true;
                            pObj.originObj.transform.position = new Vector3(
                                (cellToWorldPos.x + tileSize) + originRtXLenHalf,
                                originTPos.y,
                                originTPos.z
                                );
                        }
                    }
                    else if (originTPos.y - originRtYLenHalf < (cellToWorldPos.y + tileSize) + 1)
                    {
                        pObj.notGrounded = false;
                    }
                    if (originTPos.x - originRtXLenHalf < (cellToWorldPos.x + tileSize) + 1)
                    {
                        pObj.notLeftBlocked = false;
                    }
                    break;

                //왼쪽 충돌
                case 6:
                    //충돌하였다면..
                    if (originTPos.x - originRtXLenHalf < (cellToWorldPos.x + tileSize) + 1)
                    {
                        pObj.notLeftBlocked = false;
                        pObj.isLeftBlocked  = true;
                        pObj.originObj.transform.position = new Vector3(
                            (cellToWorldPos.x + tileSize) + originRtXLenHalf,
                            originTPos.y,
                            originTPos.z
                            );
                    }
                    if (originTPos.x - originRtXLenHalf < (cellToWorldPos.x + tileSize) - 1)
                    {
                        pObj.notLeftBlocked = false;
                    }
                    break;

                //왼쪽 위 충돌
                case 7:
                    //충돌하였다면..
                    if (originTPos.x - originRtXLenHalf < (cellToWorldPos.x + tileSize) + 1 &&
                        originTPos.y + originRtYLenHalf > cellToWorldPos.y)
                    {
                        float distX = Mathf.Abs((originTPos.x - originRtXLenHalf) -
                                                (cellToWorldPos.x + tileSize));
                        float distY = Mathf.Abs((originTPos.y + originRtYLenHalf) -
                                                (cellToWorldPos.y));

                        //가로 면적이 크다면 아래로
                        if (distX > distY)
                        {
                            pObj.notUpBlocked = false;
                            pObj.isUpBlocked  = true;
                            pObj.originObj.transform.position = new Vector3(
                                originTPos.x,
                                cellToWorldPos.y - originRtYLenHalf,
                                originTPos.z
                                );
                        }
                        //세로 면적이 크다면 오른쪽으로
                        else
                        {
                            pObj.notLeftBlocked = false;
                            pObj.isLeftBlocked  = true;
                            pObj.originObj.transform.position = new Vector3(
                                (cellToWorldPos.x + tileSize) + originRtXLenHalf,
                                originTPos.y,
                                originTPos.z
                                );
                        }
                    }
                    break;
                }
                originTPos = pObj.originObj.transform.position;
            }
        }
        //========for문 종료========//
    }