Ejemplo n.º 1
0
    public bool IsFindCeiling()
    {
        HangTask.mCeilingCoolTimeT += Time.deltaTime;
        if (!HangTask.IsCeilingNearOf())
        {
        }
        else if (HangTask.FindCeiling)
        {
            HangTask.IsFollowEndToCeiling = HangTask.IsCeilingNear();
            return(true);
        }


        if ((FindCeilingT += Time.deltaTime) < HangTask.CeilingCoolTime)
        {
            return(false);
        }
        // 벽에 매달리지 않는다.
        // 벽을 검색 하지 않는 타이머를 설정한 뒤 빠져나온다.
        if (bUseTimer && !ARandom.Get(HangTask.CeilingPercentage))
        {
            FindCeilingT = 0;
            return(false);
        }
        else
        {
            var Tr = Detect.GetHitTrOrNull(transform.position, Vector2.up, HangTask.mCeilingDetectRange, GM.SoildGroundLayer);
            if (Tr)
            {
                HangTask.MyCeiling = Tr;
                // 발견한 천장이 이미 누가 매달려 있는 벽이라면?
                if (FlowerBat_Task_Hang.HangWalls.Contains(HangTask.MyCeiling.gameObject))
                {
                    bUseTimer = false;
                    return(false);
                }

                //찾은 천장을 목적지로 설정.
                HangTask.mCeilingPos = Tr.position;
                //천장을 찾았다.
                HangTask.FindCeiling = true;
                bUseTimer            = true;
            }
            else
            {
                bUseTimer = false;
                return(false);
            }

            FlowerBat_Task_Hang.HangWalls.Add(Tr.gameObject);
            HangTask.IsFollowEndToCeiling = HangTask.IsCeilingNear();
            return(true);
        }
    }