public CarCheckInfo.CheckResult _checkLineResult(Vector3 vecPosFrom) { CarCheckInfo.CheckResult _res = CarCheckInfo.CheckResult.CheckResult_None; float fLineDis = 0.0f; RaycastHit[] _rayCastLst; _rayCastLst = Physics.RaycastAll(vecPosFrom, transform.right, CheckInfo.MaxCheckDistance, CheckInfo.LayerMsk); if (_rayCastLst.Length > 0) { fLineDis = _rayCastLst[0].distance; if (fLineDis > CheckInfo.DistOfSlowDown) { _res = CarCheckInfo.CheckResult.CheckResult_Safe; } else if (fLineDis > CheckInfo.DistOfStop) { _res = CarCheckInfo.CheckResult.CheckResult_Slow; } else { _res = CarCheckInfo.CheckResult.CheckResult_Stop; } } else { _res = CarCheckInfo.CheckResult.CheckResult_Safe; } if (_res == CarCheckInfo.CheckResult.CheckResult_None) { Debug.Assert(false); } return(_res); }
private void FixedUpdate() { if (m_bPower == true) { m_fCurTime += Time.fixedDeltaTime; if (m_fCurTime >= TimeOfPowerSpeed) { m_bPower = false; m_fCurSpeed = CarSpeedInf.NormalSpeed; } } else { Vector3 vecPosLeft = transform.TransformPoint(Vector3.forward * m_fColliderHeight); Vector3 vecPosRight = transform.TransformPoint(Vector3.forward * -m_fColliderHeight); CarCheckInfo.CheckResult _resLeft = _checkLineResult(vecPosLeft); CarCheckInfo.CheckResult _resRight = _checkLineResult(vecPosRight); CarCheckInfo.CheckResult _res = _resLeft > _resRight ? _resLeft : _resRight; if (_res == CarCheckInfo.CheckResult.CheckResult_Safe) { m_fCurSpeed = CarSpeedInf.NormalSpeed; } else if (_res == CarCheckInfo.CheckResult.CheckResult_Slow) { m_fCurSpeed = CarSpeedInf.SlowSpeed; } else if (_res == CarCheckInfo.CheckResult.CheckResult_Stop) { m_fCurSpeed = CarSpeedInf.StopSpeed; } } if (m_dir == GlobalDefine.CarMovementDir.CarMovementDir_West) { transform.Translate(transform.right * Time.fixedDeltaTime * m_fCurSpeed); } else if (m_dir == GlobalDefine.CarMovementDir.CarMovementDir_East) { transform.Translate(-transform.right * Time.fixedDeltaTime * m_fCurSpeed); } else if (m_dir == GlobalDefine.CarMovementDir.CarMovementDir_North) { transform.Translate(transform.forward * Time.fixedDeltaTime * m_fCurSpeed); } else if (m_dir == GlobalDefine.CarMovementDir.CarMovementDir_South) { transform.Translate(-transform.forward * Time.fixedDeltaTime * m_fCurSpeed); } }