Exemplo n.º 1
0
    void CheckOpenedChestPos()
    {
        if (curObj == null)
        {
            return;
        }

        if (!IsCloseToPlayer(curObj))
        {
            curObj = curObj.Interact();
        }
    }
Exemplo n.º 2
0
    void GetInput()
    {
        //입력 받았을 때
        if (!Input.GetKeyDown(PlayerActionKeys.Interact))
        {
            return;
        }

        //이미 열려있는 상자가 있으면
        if (curObj)
        {
            //그 상자 닫고 함수 종료
            curObj = curObj.Interact();
            return;
        }

        //열려있지 않은 상자들을 거리순으로 정렬
        var chestsByDist =
            from chest in interactiveObjs
            where Vector2.Distance(chest.transform.position, player.position) < chestRange
            where chest.isInteractive
            orderby Vector2.Distance(chest.transform.position, player.position)
            select chest;

        //가장 가까운 상자가
        InteractiveObj closest = chestsByDist.DefaultIfEmpty().First();

        //존재하면
        if (closest != null)
        {
            if (curObj)
            {
                Debug.Log(curObj.name);
            }
            //열린상자 갱신하고 엶
            curObj = closest.Interact();
        }
    }