private void Update()
    {
        // Checking for WaterDetector
        if (_waterDetector == null)
        {
            _waterDetector = GetComponent <WaterDetector>() ?? gameObject.AddComponent <WaterDetector>();
        }

        // If we are in the water
        if (_waterDetector != null)
        {
            _controller            = GetComponent <CharacterController>();
            _thirdPersonController = GetComponent <DW_ThirdPersonController>();

            // If we are actually submerged to a some extent
            float waterLevel = _waterDetector.GetWaterLevel(transform.position);

            float min = _controller.bounds.center.y;
            float max = _controller.bounds.center.y + _controller.height / 2f;
            // Assume we are submerged when the character is at least half in the water.
            _isSubmerged = (min <waterLevel && max> waterLevel) || (min < waterLevel && max < waterLevel);
            // 1 when fully submerged, 0 when half submerged
            float submergedCoeff = Mathf.Clamp01((waterLevel - min) / (max - min));

            // Setting the speeds
            if (_isSubmerged)
            {
                float smoothSlowdownFactor = Mathf.Lerp(1f, UnderwaterSpeedFactor, submergedCoeff);

                _thirdPersonController.Gravity               = _initGravity * smoothSlowdownFactor;
                _thirdPersonController.WalkSpeed             = _initWalkSpeed * smoothSlowdownFactor;
                _thirdPersonController.RunSpeed              = _initRunSpeed * smoothSlowdownFactor;
                _thirdPersonController.TrotSpeed             = _initTrotSpeed * smoothSlowdownFactor;
                _thirdPersonController.walkMaxAnimationSpeed = _initWalkAnimationSpeed * smoothSlowdownFactor;
                _thirdPersonController.runMaxAnimationSpeed  = _initRunMaxAnimationSpeed * smoothSlowdownFactor;
                _thirdPersonController.jumpAnimationSpeed    = _initJumpAnimationSpeed * smoothSlowdownFactor;
                _thirdPersonController.landAnimationSpeed    = _initLandAnimationSpeed * smoothSlowdownFactor;
                _thirdPersonController.trotMaxAnimationSpeed = _initTrotAnimationSpeed * smoothSlowdownFactor;
            }
            else
            {
                _thirdPersonController.Gravity               = _initGravity;
                _thirdPersonController.WalkSpeed             = _initWalkSpeed;
                _thirdPersonController.RunSpeed              = _initRunSpeed;
                _thirdPersonController.TrotSpeed             = _initTrotSpeed;
                _thirdPersonController.walkMaxAnimationSpeed = _initWalkAnimationSpeed;
                _thirdPersonController.runMaxAnimationSpeed  = _initRunMaxAnimationSpeed;
                _thirdPersonController.jumpAnimationSpeed    = _initJumpAnimationSpeed;
                _thirdPersonController.landAnimationSpeed    = _initLandAnimationSpeed;
                _thirdPersonController.trotMaxAnimationSpeed = _initTrotAnimationSpeed;
            }
        }
    }
 private void Start() {
     _thirdPersonController = GetComponent<DW_ThirdPersonController>();
     _initGravity = _thirdPersonController.Gravity;
     _initWalkSpeed = _thirdPersonController.WalkSpeed;
     _initRunSpeed = _thirdPersonController.RunSpeed;
     _initTrotSpeed = _thirdPersonController.TrotSpeed;
     _initWalkAnimationSpeed = _thirdPersonController.walkMaxAnimationSpeed;
     _initRunMaxAnimationSpeed = _thirdPersonController.runMaxAnimationSpeed;
     _initJumpAnimationSpeed = _thirdPersonController.jumpAnimationSpeed;
     _initLandAnimationSpeed = _thirdPersonController.landAnimationSpeed;
     _initTrotAnimationSpeed = _thirdPersonController.trotMaxAnimationSpeed;
 }
 private void Start()
 {
     _thirdPersonController    = GetComponent <DW_ThirdPersonController>();
     _initGravity              = _thirdPersonController.Gravity;
     _initWalkSpeed            = _thirdPersonController.WalkSpeed;
     _initRunSpeed             = _thirdPersonController.RunSpeed;
     _initTrotSpeed            = _thirdPersonController.TrotSpeed;
     _initWalkAnimationSpeed   = _thirdPersonController.walkMaxAnimationSpeed;
     _initRunMaxAnimationSpeed = _thirdPersonController.runMaxAnimationSpeed;
     _initJumpAnimationSpeed   = _thirdPersonController.jumpAnimationSpeed;
     _initLandAnimationSpeed   = _thirdPersonController.landAnimationSpeed;
     _initTrotAnimationSpeed   = _thirdPersonController.trotMaxAnimationSpeed;
 }
    private void Update()
    {
        // Checking for WaterDetector
        if (_waterDetector == null) {
            _waterDetector = GetComponent<WaterDetector>() ?? gameObject.AddComponent<WaterDetector>();
        }

        // If we are in the water
        if (_waterDetector != null) {
            _controller = GetComponent<CharacterController>();
            _thirdPersonController = GetComponent<DW_ThirdPersonController>();

            // If we are actually submerged to a some extent
            float waterLevel = _waterDetector.GetWaterLevel(transform.position);

            float min = _controller.bounds.center.y;
            float max = _controller.bounds.center.y + _controller.height / 2f;
            // Assume we are submerged when the character is at least half in the water.
            _isSubmerged = (min < waterLevel && max > waterLevel) || (min < waterLevel && max < waterLevel);
            // 1 when fully submerged, 0 when half submerged
            float submergedCoeff = Mathf.Clamp01((waterLevel - min) / (max - min));

            // Setting the speeds
            if (_isSubmerged) {
                float smoothSlowdownFactor = Mathf.Lerp(1f, UnderwaterSpeedFactor, submergedCoeff);

                _thirdPersonController.Gravity = _initGravity * smoothSlowdownFactor;
                _thirdPersonController.WalkSpeed = _initWalkSpeed * smoothSlowdownFactor;
                _thirdPersonController.RunSpeed = _initRunSpeed * smoothSlowdownFactor;
                _thirdPersonController.TrotSpeed = _initTrotSpeed * smoothSlowdownFactor;
                _thirdPersonController.walkMaxAnimationSpeed = _initWalkAnimationSpeed * smoothSlowdownFactor;
                _thirdPersonController.runMaxAnimationSpeed = _initRunMaxAnimationSpeed * smoothSlowdownFactor;
                _thirdPersonController.jumpAnimationSpeed = _initJumpAnimationSpeed * smoothSlowdownFactor;
                _thirdPersonController.landAnimationSpeed = _initLandAnimationSpeed * smoothSlowdownFactor;
                _thirdPersonController.trotMaxAnimationSpeed = _initTrotAnimationSpeed * smoothSlowdownFactor;
            } else {
                _thirdPersonController.Gravity = _initGravity;
                _thirdPersonController.WalkSpeed = _initWalkSpeed;
                _thirdPersonController.RunSpeed = _initRunSpeed;
                _thirdPersonController.TrotSpeed = _initTrotSpeed;
                _thirdPersonController.walkMaxAnimationSpeed = _initWalkAnimationSpeed;
                _thirdPersonController.runMaxAnimationSpeed = _initRunMaxAnimationSpeed;
                _thirdPersonController.jumpAnimationSpeed = _initJumpAnimationSpeed;
                _thirdPersonController.landAnimationSpeed = _initLandAnimationSpeed;
                _thirdPersonController.trotMaxAnimationSpeed = _initTrotAnimationSpeed;
            }
        }
    }
    private void Update()
    {
        // Checking for WaterDetector
        if (_waterDetector == null)
        {
            _waterDetector = GetComponent <WaterDetector>() ?? gameObject.AddComponent <WaterDetector>();
        }

        // If we are in the water
        if (_waterDetector != null)
        {
            _controller            = GetComponent <CharacterController>();
            _thirdPersonController = GetComponent <DW_ThirdPersonController>();

            // If we are actually submerged to a some extent
            float waterLevel = _waterDetector.GetWaterLevel(transform.position);

            float min = _controller.bounds.center.y;
            float max = _controller.bounds.center.y + _controller.height / 2f;

            // Assume we can swim when at least half submerged into water
            _isSubmerged = (min <waterLevel && max> waterLevel) || (min < waterLevel && max < waterLevel);

            // Value of 1 means fully submerged, value of 0 means not submerged
            float submergedCoeff = Mathf.Clamp01((waterLevel - min) / (max - min));

            if (_isSubmerged)
            {
                bool flag = Input.GetKey(SwimUpKey);
                if (flag)
                {
                    _thirdPersonController.VerticalSpeed = 0f;
                }

                // Swimming u
                if (Input.GetKey(SwimUpKey))
                {
                    _controller.Move(Vector3.up * SwimSpeed * submergedCoeff * Time.deltaTime);
                }
            }
        }
    }
示例#6
0
    private void Update()
    {
        // Checking for WaterDetector
        if (_waterDetector == null) {
            _waterDetector = GetComponent<WaterDetector>() ?? gameObject.AddComponent<WaterDetector>();
        }

        // If we are in the water
        if (_waterDetector != null) {
            _controller = GetComponent<CharacterController>();
            _thirdPersonController = GetComponent<DW_ThirdPersonController>();

            // If we are actually submerged to a some extent
            float waterLevel = _waterDetector.GetWaterLevel(transform.position);

            float min = _controller.bounds.center.y;
            float max = _controller.bounds.center.y + _controller.height / 2f;

            // Assume we can swim when at least half submerged into water
            _isSubmerged = (min < waterLevel && max > waterLevel) || (min < waterLevel && max < waterLevel);

            // Value of 1 means fully submerged, value of 0 means not submerged
            float submergedCoeff = Mathf.Clamp01((waterLevel - min) / (max - min));

            if (_isSubmerged) {
                bool flag = Input.GetKey(SwimUpKey);
                if (flag) {
                    _thirdPersonController.VerticalSpeed = 0f;
                }

                // Swimming u
                if (Input.GetKey(SwimUpKey)) {
                    _controller.Move(Vector3.up * SwimSpeed * submergedCoeff * Time.deltaTime);
                }
            }
        }
    }
示例#7
0
 private void Start()
 {
     _thirdPersonController = GetComponent<DW_ThirdPersonController>();
     Camera.allCameras[0].depthTextureMode = DepthTextureMode.Depth;
 }
 private void Start()
 {
     _thirdPersonController = GetComponent <DW_ThirdPersonController>();
     Camera.allCameras[0].depthTextureMode = DepthTextureMode.Depth;
 }