示例#1
0
    public void getNextFloor(ref float fSpeed)
    {
        // 10층 전까지 무조건 1층의 빈공간 부여
        // 10~20 :: 20퍼 확률로 빈공간 제거, 이속 max 0.5증가
        // 20~40 :: 40퍼 확률로 빈공간 제거, 이속 max 1증가
        // 40~60 :: 60퍼 확률로 빈공간 제거, 이속 max 2증가
        int nOffset = maxFloor / 10 * 5;

        if (nOffset >= 90)
        {
            nOffset = 90;
        }
        fSpeed = maxFloor / 5 * 0.5f;
        bool bJumpFloor = UnityEngine.Random.Range(0, 100) >= nOffset ? true : false;

        if (bJumpFloor)
        {
            // 쉬는 공간 오브젝트 만들기
            RestZone obj = Instantiate(m_restZonePrefabs, m_parentOfObj.transform).GetComponent <RestZone>();
            m_restZoneList.Add(obj);
            obj.setFloor(maxFloor + 1, onHitPlayer);
            maxFloor += 2;
        }
        else
        {
            ++maxFloor;
        }
    }
示例#2
0
    /// <summary>
    /// 일정 시간 안움직이면 발생
    /// </summary>
    void makeRestZoneObstacleOBJ()
    {
        int      nCurRealFloor = m_nCurMoveLength;
        RestZone restZone      = getCurrentRestZone();

        if (restZone != null)
        {
            restZone.makeObstacleZone();
        }
    }
示例#3
0
        private void Camp()
        {
            PlayerInventory inventory = GameState.s_playerCharacter.Inventory;

            if (IEModOptions.MaxCampingSupplies != IEModOptions.MaxCampingSuppliesOptions.Disabled)
            {
                if (inventory)
                {
                    inventory.CampingSuppliesTotal--;
                }
            }

            RestZone.Rest(RestZone.Mode.Camp);
        }
示例#4
0
 private static void SetStartBonesToEachPlayer()
 {
     ShuffleBones();
     RestZone.CopyAllBones(bones);
     foreach (BonesZone zone in activePlayers)
     {
         for (int i = 0; i < 7; i++)
         {
             Random random = new Random();
             int    r      = random.Next(0, RestZone.Bones.Count);
             RestZone.TransferBone(zone, r, true, false, new Point(0, 0));
         }
     }
 }
示例#5
0
    IEnumerator moveDownOBJ()
    {
        Vector2 offset = new Vector2(0, m_curYoffset);

        // 올라가기전
        RestZone restZone = getCurrentRestZone();

        if (restZone != null)
        {
            restZone.disableFlag();
        }

        m_fCurMoveRateY = 0;
        while (m_fCurMoveRateY < m_fMoveCoolTime)
        {
            m_fCurMoveRateY += Time.deltaTime;

            // 올라가기 ...
            offset.y = m_curYoffset + m_fCurMoveRateY / m_fMoveCoolTime * m_offsetY;
            m_backgroundScrollMAT.material.mainTextureOffset = offset; // 배경 업데이트
            for (int i = 0; i < m_objList.Count; ++i)                  // 장애물 업데이트
            {
                m_objList[i].moveDown(m_fCurMoveRateY / m_fMoveCoolTime);
            }
            for (int i = 0; i < m_restZoneList.Count; ++i) // 휴식 지역 업데이트
            {
                m_restZoneList[i].moveDown(m_fCurMoveRateY / m_fMoveCoolTime);
                if (m_restZoneList[i].gameObject.activeSelf == false)
                {
                    DestroyImmediate(m_restZoneList[i].gameObject);
                    m_restZoneList.RemoveAt(i);
                    --i;
                }
            }

            yield return(null);
        }
        // 실제 다 올라갔을때

        m_curYoffset += m_offsetY;
        offset.y      = m_curYoffset;
        m_backgroundScrollMAT.material.mainTextureOffset = offset;


        for (int i = 0; i < m_objList.Count; ++i) // 장애물 업데이트
        {
            m_objList[i].moveDown(1);
        }
        for (int i = 0; i < m_restZoneList.Count; ++i) // 휴식 지역 업데이트
        {
            m_restZoneList[i].moveDown(1);
            if (m_restZoneList[i].gameObject.activeSelf == false)
            {
                DestroyImmediate(m_restZoneList[i].gameObject);
                m_restZoneList.RemoveAt(i);
                --i;
            }
        }
        ++m_nCurMoveLength;

        restZone = getCurrentRestZone();
        if (restZone != null)
        {
            restZone.onFlag();
        }
        m_funcList[(int)FUNC_TYPE.UP_FLOOR](m_nCurMoveLength);


        m_fCurMoveRateY = m_fMoveCoolTime;
    }
示例#6
0
    // Update is called once per frame
    void Update()
    {
        // hp check
        if (m_bEndGame)
        {
            return;
        }

        m_fCurrentStayTime += Time.deltaTime;

        if (m_fCurrentOnHitCoolTime > 0)
        {
            m_fCurrentOnHitCoolTime -= Time.deltaTime;
        }

        if (m_fCurMoveRateY >= m_fMoveCoolTime * 2 && Input.GetKey(KeyCode.UpArrow))
        {
            // move down another obj list
            moveVerticalOBJ();
            m_fCurrentStayTime = 0;
        }
        else if (m_fCurMoveRateY >= m_fMoveCoolTime)
        {
            m_fCurMoveRateY += Time.deltaTime;
        }
        if (m_fCurMoveRateX >= m_fMoveCoolTime * 2)
        {
            int direction = 0;
            if (Input.GetKey(KeyCode.LeftArrow) && m_nCurCharacterPosX > -2)
            {
                --direction;
            }
            if (Input.GetKey(KeyCode.RightArrow) && m_nCurCharacterPosX < 2)
            {
                ++direction;
            }
            if (direction != 0)
            {
                StartCoroutine(moveHorizontalCharacter(direction));
                m_fCurrentStayTime = 0;
            }
        }
        else if (m_fCurMoveRateX >= m_fMoveCoolTime)
        {
            m_fCurMoveRateX += Time.deltaTime;
        }

        if (m_fCurrentStayTime >= m_fLimitStayTime)
        {
            m_fCurrentStayTime = 0;
            makeRestZoneObstacleOBJ();
        }
        else if (m_fCurrentStayTime > 0)
        {
            RestZone restZone = getCurrentRestZone();
            if (restZone != null)
            {
                restZone.setColorG(1 - getStayTimeRate());
            }
        }

        // move another obj horizontal
        moveHorizontalOBJ();
    }