public void setCameraPos()
    {
        //ScreenLog.Log("setCameraPos");
        if (mBikePlayer == null)
        {
            if (mAimPoint)
            {
                mCamTran.LookAt(mAimPoint);
            }
            return;
        }

        if (bikeScript != null)
        {
            if (bikeScript.checkBikeState(0))
            {
                //bIsFollow = false;
                //fixCameraPos();
                return;
            }
        }
        else
        {
            Debug.LogWarning("BikeCamera::Update -> bikeScript is null!");
            return;
        }

        if (mAimPoint == null)
        {
            return;
        }

        if (Time.timeScale != 0f)
        {
            if (bikeScript.getIsPlayCool())
            {
                //DepthBigFeiBan.enabled = true;
                if (!IsIntoFeiBan)
                {
                    AudioManager.Instance.PlaySFX(BigFeiBanAudio);
                }
                Time.timeScale = 0.5f;

                IsIntoFeiBan = true;
                camDir       = CamDir.LEFT;
            }
            else if (!bikeScript.GetIsSlowWorld())
            {
                Time.timeScale = 1f;
            }

            if (!bikeScript.getIsDoFly())
            {
                //DepthBigFeiBan.enabled = false;
                IsIntoFeiBan = false;
                camDir       = CamDir.BACK;
            }
        }

        bool isServer = bikeScript.GetIsServer();

        float bikeSpeed = bikeScript.GetBikeSpeed();

        if (!isServer && GlobalScript.GetInstance().player != null)
        {
            bikeSpeed = GlobalScript.GetInstance().player.Speed;
        }
        //TestBikeSpeed = bikeSpeed;

        //ScreenLog.Log("isServer " + isServer);
        if (isServer)
        {
            float   dis           = 0.0f;
            Vector3 miaoZhunGSPos = Vector3.zero;

            switch (camPosEvent)
            {
            case BikeCamEvent.JingZhi:
                break;

            case BikeCamEvent.HangPai:
                transform.position = HangPaiTrans[mzgsIndex].position;
                transform.LookAt(mAimPoint);
                break;

            case BikeCamEvent.JingZhiMiaoZhun:
                transform.LookAt(mAimPoint);
                break;

            case BikeCamEvent.MiaoZhunGenSui:

                if (mzgsIndex == (int)MiaoZhunGenSuiCtrl.THIRD_PERSON)
                {
                    miaoZhunGSPos = mCamPoint_back.position;
                }
                else
                {
                    miaoZhunGSPos = MiaoZhunGenSui[mzgsIndex].position;
                }

                dis = Vector3.Distance(mCamTran.position, miaoZhunGSPos);
                if (dis > 10.0f && bikeSpeed < 10.0f)
                {
                    mCamTran.LookAt(mAimPoint);
                    mCamTran.position = Vector3.Lerp(mCamTran.position, miaoZhunGSPos, smoothVal);
                }

                if (bikeSpeed < 10.0f)
                {
                    return;
                }

                mCamTran.LookAt(mAimPoint);
                mCamTran.position = Vector3.Lerp(mCamTran.position, miaoZhunGSPos, smoothVal);
                break;

            case BikeCamEvent.TeDingDongZuo:
                mCamTran.LookAt(mAimPoint);
                mCamTran.position = mCamPoint_back.position;
                break;

            case BikeCamEvent.GameOver:
                dis = Vector3.Distance(mCamTran.position, MiaoZhunGenSui[mzgsIndex].position);
                if (dis > 10.0f && bikeSpeed < 10.0f)
                {
                    mCamTran.LookAt(mAimPoint);
                    mCamTran.position = Vector3.Lerp(mCamTran.position, MiaoZhunGenSui[mzgsIndex].position, smoothVal);
                }

                if (bikeSpeed < 10.0f)
                {
                    return;
                }

                mCamTran.LookAt(mAimPoint);
                mCamTran.position = Vector3.Lerp(mCamTran.position, MiaoZhunGenSui[mzgsIndex].position, smoothVal);
                break;

            default:
                break;
            }

            return;
        }

        //float steer = bikeScript.GetBikeSteer();
        //bikeSpeed = 30; //test
        //ScreenLog.Log("bikeSpeed " + bikeSpeed);

        bool xiaoFeiBan = bikeScript.GetIsIntoXiaoFeiBan();

        if (xiaoFeiBan)
        {
            float minVel = 50f;
            if (bikeSpeed > minVel)
            {
                mMotionBlur.enabled = true;

                float minBlurAmount = 0.6f;
                float k             = (0.8f - minBlurAmount) / (80f - minVel);
                mMotionBlur.blurAmount = k * (bikeSpeed - minVel) + minBlurAmount;
                //mMotionBlur.blurAmount = 0.92f;
            }
            else if (mMotionBlur.enabled)
            {
                mMotionBlur.enabled = false;
            }
        }
        else
        {
            mMotionBlur.enabled = false;
        }

        Vector3 camPos = mCamPoint_back.position;

        switch (camDir)
        {
        case CamDir.FORWARD:
            mCamTran.position    = mCamPoint_forward.position;
            mCamTran.eulerAngles = mCamPoint_forward.eulerAngles;
            break;

        case CamDir.BACK:

            bIsAimPlayer = true;
            bool isAimBike = true;
            if (followSpeed < smoothVal)
            {
                followSpeed += 0.001f;
                if (followSpeed > smoothVal)
                {
                    followSpeed = smoothVal;
                }

                camPos = Vector3.Lerp(mCamTran.position,
                                      mCamPoint_back.position, followSpeed);
            }
            else
            {
                float dis = Vector3.Distance(mCamTran.position,
                                             mCamPoint_back.position);
                if (bikeSpeed > 0f)
                {
                    camPos = Vector3.Lerp(mCamTran.position,
                                          mCamPoint_back.position, smoothPer * smoothVal);

                    if (bikeSpeed < 5 && Time.timeScale == 1f)
                    {
                        isAimBike             = false;
                        camPos                = transform.position;
                        mCamPoint_back.parent = null;
                    }
                    else if (mCamPoint_back.parent == null)
                    {
                        mCamPoint_back.parent        = backPointParent;
                        mCamPoint_back.localPosition = backLocalPos;
                    }
                }
                else
                {
                    if (dis > 0.3f)
                    {
                        camPos = Vector3.Lerp(mCamTran.position,
                                              mCamPoint_back.position, smoothVal);

                        dis = Vector3.Distance(camPos,
                                               mCamPoint_back.position);
                        if (dis <= 0.29f)
                        {
                            camPos = mCamPoint_back.position;
                        }
                    }
                    else
                    {
                        isAimBike = false;
                        camPos    = transform.position;
                    }
                }
            }

            mCamTran.position = camPos;
            if (isAimBike)
            {
                mCamTran.LookAt(mAimPoint);
            }
            break;

        case CamDir.LEFT:
            mCamTran.position    = mCamPoint_left.position;
            mCamTran.eulerAngles = mCamPoint_left.eulerAngles;
            break;

        case CamDir.FREE:
            mCamTran.position    = Vector3.Lerp(mCamTran.position, mCamPoint_free.position, 0.2f);
            mCamTran.eulerAngles = mCamPoint_free.eulerAngles;
            break;
        }
    }
Beispiel #2
0
    void setCameraPos()
    {
        //Debug.Log("setCameraPos");
        if (mBikePlayer == null)
        {
            if (mAimPoint)
            {
                mCamTran.LookAt(mAimPoint);
            }
            return;
        }

        if (bikeScript != null)
        {
            if (bikeScript.checkBikeState(0))
            {
                //bIsFollow = false;
                //fixCameraPos();
                return;
            }
        }
        else
        {
            Debug.LogWarning("BikeCamera::Update -> bikeScript is null!");
            return;
        }

        if (mAimPoint == null)
        {
            return;
        }

        if (Time.timeScale != 0f)
        {
            if (bikeScript.getIsPlayCool())
            {
                DepthBigFeiBan.enabled = true;
                if (!IsIntoFeiBan)
                {
                    AudioManager.Instance.PlaySFX(BigFeiBanAudio);
                }
                Time.timeScale = 0.5f;

                IsIntoFeiBan = true;
                camDir       = CamDir.LEFT;
            }
            else if (!bikeScript.GetIsSlowWorld())
            {
                Time.timeScale = 1f;
            }

            if (!bikeScript.getIsDoFly())
            {
                DepthBigFeiBan.enabled = false;
                IsIntoFeiBan           = false;
                camDir = CamDir.BACK;
            }
        }

        float bikeSpeed  = bikeScript.GetBikeSpeed();
        bool  xiaoFeiBan = bikeScript.GetIsIntoXiaoFeiBan();

        if (xiaoFeiBan)
        {
            if (!isPlayXiaoFeiBanAudio)
            {
                isPlayXiaoFeiBanAudio = true;
                AudioManager.Instance.PlaySFX(XiaoFeiBanAudio);
            }

            float minVel = 50f;
            if (bikeSpeed > minVel)
            {
                mMotionBlur.enabled = true;

                float minBlurAmount = 0.6f;
                float k             = (0.8f - minBlurAmount) / (80f - minVel);
                mMotionBlur.blurAmount = k * (bikeSpeed - minVel) + minBlurAmount;
                //mMotionBlur.blurAmount = 0.92f;
            }
            else if (mMotionBlur.enabled)
            {
                mMotionBlur.enabled = false;
            }
        }
        else
        {
            isPlayXiaoFeiBanAudio = false;
            mMotionBlur.enabled   = false;
        }

        if (bikeScript.GetIsAiNPC() || !bIsAimPlayer)
        {
            mCamTran.position = Vector3.Lerp(mCamTran.position, mCamPoint_back.position, followSpeed);
            mCamTran.LookAt(mAimPoint);
        }
        else
        {
            Vector3 camPos = transform.position;
            switch (camDir)
            {
            case CamDir.FORWARD:
                mCamTran.position    = mCamPoint_forward.position;
                mCamTran.eulerAngles = mCamPoint_forward.eulerAngles;
                break;

            case CamDir.BACK:

                bIsAimPlayer = true;
                bool isAimBike = true;
                if (followSpeed < smoothVal)
                {
                    followSpeed += 0.001f;
                    if (followSpeed > smoothVal)
                    {
                        followSpeed = smoothVal;
                    }

                    camPos = Vector3.Lerp(mCamTran.position,
                                          mCamPoint_back.position, followSpeed);
                }
                else
                {
                    float dis = Vector3.Distance(mCamTran.position,
                                                 mCamPoint_back.position);
                    if (bikeSpeed > 0f)
                    {
                        camPos = Vector3.Lerp(mCamTran.position,
                                              mCamPoint_back.position, smoothPer * smoothVal);

                        if (bikeSpeed < 5 && Time.timeScale == 1f)
                        {
                            isAimBike             = false;
                            camPos                = transform.position;
                            mCamPoint_back.parent = null;
                        }
                        else if (mCamPoint_back.parent == null)
                        {
                            mCamPoint_back.parent        = backPointParent;
                            mCamPoint_back.localPosition = backLocalPos;
                        }
                    }
                    else
                    {
                        if (dis > 0.1f)
                        {
                            camPos = Vector3.Lerp(mCamTran.position,
                                                  mCamPoint_back.position, smoothVal);
                        }
                        else
                        {
                            isAimBike = false;
                            camPos    = transform.position;
                        }
                    }
                }

                mCamTran.position = camPos;
                if (isAimBike)
                {
                    mCamTran.LookAt(mAimPoint);
                }
                break;

            case CamDir.LEFT:
                mCamTran.position    = mCamPoint_left.position;
                mCamTran.eulerAngles = mCamPoint_left.eulerAngles;
                break;

            case CamDir.FREE:
                mCamTran.position    = Vector3.Lerp(mCamTran.position, mCamPoint_free.position, 0.2f);
                mCamTran.eulerAngles = mCamPoint_free.eulerAngles;
                break;
            }
        }
    }