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; } }
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; } } }