예제 #1
0
    public void TestOneFish()
    {
        float hBound  = 120;
        float yBottom = -70;
        float yUp     = 70;

        int[] temp = new int[2] {
            -1, 1
        };
        int   flag   = temp[Random.Range(0, 2)];
        float speed  = Random.Range(40, 70);
        int   pathid = Random.Range(0, 5);

        int[] temp1 = new int[10] {
            0, 0, 0, 0, 0, 2, 0, 0, 0, 1
        };
        int fishid = temp1[Random.Range(0, 10)];

        if (fishid == 1)
        {
            speed = 30;
        }
        if (fishid == 2)
        {
            speed  = 20;
            pathid = 0;
        }
        Vector3 headPosition    = new Vector3(hBound * flag, Random.Range(yBottom + 20, yUp - 20), Random.Range(96, 96 + 20));
        Vector3 bornEulerAngles = new Vector3(Random.Range(-20, 20), -Random.Range(80, 100) * flag, 0);

        FishManager.GetInstance().CreateFish(fishid, headPosition, bornEulerAngles, pathid, speed, 0);
    }
예제 #2
0
    public void OnClickedIsland()
    {
        FishManager.GetInstance().Initialize();
        FishData.GetInstance().GameState = GameState.MainLoop;
        gameObject.SetActive(false);

        UIManager.GetInstance().Show("Debug");
    }
예제 #3
0
    public void InitFish(int FishID)
    {
        var fishManager = FishManager.GetInstance();

        for (int i = 0; i < Trans.Count; i++)
        {
            var fish = fishManager.CreatFishByID(FishID);
            fish.transform.position = Trans[i].position;
            fish.transform.rotation = Trans[i].rotation;
            fish.transform.SetParent(gameObject.transform);
            Fishes.Add(fish);
        }
    }
예제 #4
0
    // Update is called once per frame
    void Update()
    {
        float dt = Time.deltaTime;

        UIManager.GetInstance().Update(dt);
        UICommandSystem.GetInstance().Update(dt);
        if (FishData.GetInstance().GameState == GameState.MainLoop)
        {
            TimeManager.GetInstance().Update(dt);
            EventManager.GetInstance().Update(dt);
            FishManager.GetInstance().Update(dt);
        }
    }
예제 #5
0
    public void TestFishSeason()
    {
        FishSeason season = SeasonConfigManager.GetInstance().GetSeason(Random.Range(0, 3));

        if (season == null)
        {
            return;
        }
        foreach (OneWave wave in season.waves)
        {
            foreach (WaveFish fish in wave.fishes)
            {
                FishManager.GetInstance().CreateFish(fish.fkid, fish.p, wave.ea, wave.pathid, wave.speed, -fish.p.x / 20.0f);
            }
        }
    }
예제 #6
0
 public void InitFishs(List <int> fishs)
 {
     if (fishs.Count == Trans.Count)
     {
         var fishManager = FishManager.GetInstance();
         for (int i = 0; i < fishs.Count; i++)
         {
             if (Trans[i] != null)
             {
                 var fish = fishManager.CreatFishByID(fishs[i]);
                 if (fish != null)
                 {
                     fish.transform.SetParent(Trans[i]);
                     fish.transform.position = Trans[i].position;
                 }
             }
         }
     }
 }
예제 #7
0
    public void TestTeam()
    {
        float hBound  = 120;
        float yBottom = -70;
        float yUp     = 70;

        int[] temp = new int[2] {
            -1, 1
        };
        int     flag         = temp[Random.Range(0, 2)];
        float   speed        = Random.Range(40, 70);
        int     pathid       = Random.Range(0, 5);
        Vector3 headPosition = new Vector3(hBound * flag, Random.Range(yBottom + 20, yUp - 20), Random.Range(96, 96 + 20));
        //Vector3 bornEulerAngles = new Vector3(Random.Range(-20, 20), Random.Range(80, 100) * flag, 0);
        Vector3 bornEulerAngles = new Vector3(0, -90 * flag, 0);
        int     randomCnt       = Random.Range(5, 11);

        for (int i = 0; i < randomCnt; i++)
        {
            Vector3 offset = new Vector3(i * 15 * flag, 0, 0);
            //offset = Quaternion.Euler(bornEulerAngles) * offset;
            FishManager.GetInstance().CreateFish(0, headPosition + offset, bornEulerAngles, pathid, speed, i * 15.0f / speed);
        }
    }
예제 #8
0
    // Update is called once per frame
    void Update()
    {
        if (mFishPath == null)
        {
            return;
        }
        if (mUnActiveTime > 0)
        {
            transform.Translate(Vector3.forward * Time.deltaTime * mSpeed);
            mUnActiveTime -= Time.deltaTime;
            return;
        }
        float framedt = Time.deltaTime * mSpeedScaleFactor;

        mLastFrameLife = mCurrentLife;
        mCurrentLife  += framedt;
        mStepTime      = 0;

        for (int i = 0; i < mFishPath.controlPoints.Length; i++)
        {
            mStepTime += mFishPath.controlPoints[i].mTime;
            if (mCurrentLife <= mStepTime)
            {
                mCurrentStep = i;
                break;
            }
            else
            {
                mCurrentStep = mFishPath.controlPoints.Length;
                if (i == mFishPath.controlPoints.Length - 1)
                {
                    FishManager.GetInstance().RecycleFish(this);
                }
            }
        }

        if (mLastFrameStep != mCurrentStep)
        {
            int   tmpStep = mLastFrameStep;
            float t1      = mLastFrameLife;
            while (true)
            {
                tmpStep = tmpStep + 1;
                if (tmpStep > mCurrentStep)
                {
                    break;
                }
                float t2 = 0;
                for (int i = 0; i < tmpStep; i++)
                {
                    t2 += mFishPath.controlPoints[i].mTime;
                }
                float dt1 = t2 - t1;
                t1 = t2;
                int cnt1 = Mathf.FloorToInt(dt1 / SECOND_ONE_FRAME);
                for (int i = 0; i < cnt1; i++)
                {
                    CaculateTransform(tmpStep - 1, SECOND_ONE_FRAME);
                }
                CaculateTransform(tmpStep - 1, dt1 - SECOND_ONE_FRAME * cnt1);
            }
            float t3 = 0;
            for (int i = 0; i < mCurrentStep; i++)
            {
                t3 += mFishPath.controlPoints[i].mTime;
            }
            float dt2  = mCurrentLife - t3;
            int   cnt2 = Mathf.FloorToInt(dt2 / SECOND_ONE_FRAME);
            for (int i = 0; i < cnt2; i++)
            {
                CaculateTransform(mCurrentStep, SECOND_ONE_FRAME);
            }
            CaculateTransform(mCurrentStep, dt2 - SECOND_ONE_FRAME * cnt2);
            mLastFrameStep = mCurrentStep;
        }
        else
        {
            int cnt1 = Mathf.FloorToInt(framedt / SECOND_ONE_FRAME);
            for (int i = 0; i < cnt1; i++)
            {
                CaculateTransform(mCurrentStep, SECOND_ONE_FRAME);
            }
            CaculateTransform(mCurrentStep, framedt - SECOND_ONE_FRAME * cnt1);
        }
    }