Vector3 FreeMovement() { velocity.x = 0f; velocity.z = 0f; velocity.y = 0; if (characterController.enabled) { var speed = movementSpeed * (isSprinting ? runningSpeedMultiplier : 1f); transform.forward = characterForward.Get().Value; var xzPlaneForward = Vector3.Scale(cameraForward.Get(), new Vector3(1, 0, 1)); var xzPlaneRight = Vector3.Scale(cameraRight.Get(), new Vector3(1, 0, 1)); Vector3 forwardTarget = Vector3.zero; if (characterYAxis.GetValue() > 0) { forwardTarget += xzPlaneForward; } if (characterYAxis.GetValue() < 0) { forwardTarget -= xzPlaneForward; } if (characterXAxis.GetValue() > 0) { forwardTarget += xzPlaneRight; } if (characterXAxis.GetValue() < 0) { forwardTarget -= xzPlaneRight; } if (Input.GetKey(KeyCode.Space)) { forwardTarget += Vector3.up; } else if (Input.GetKey(KeyCode.X)) { forwardTarget += Vector3.down; } forwardTarget.Normalize(); velocity += forwardTarget * speed; CommonScriptableObjects.playerUnityEulerAngles.Set(transform.eulerAngles); characterController.Move(velocity * deltaTime); } return(velocity); }
public void Update() { if (!settings.enabled) { return; } var orbit = sourceFreeLook.m_Orbits[1]; if (characterYAxis.GetValue() > 0 && !DCLCharacterController.i.isWalking) { currentDampingDelay += Time.deltaTime; if (currentDampingDelay > settings.inDampingDelay) { orbit.m_Radius += Damper.Damp(settings.distanceMax - orbit.m_Radius, settings.inDampingTime, Time.deltaTime); sourceFreeLook.m_Lens.FieldOfView += Damper.Damp(settings.fovMax - sourceFreeLook.m_Lens.FieldOfView, settings.inDampingTime, Time.deltaTime); } } else { currentDampingDelay = 0; orbit.m_Radius += Damper.Damp(settings.distanceMin - orbit.m_Radius, settings.outDampingTime, Time.deltaTime); sourceFreeLook.m_Lens.FieldOfView += Damper.Damp(settings.fovMin - sourceFreeLook.m_Lens.FieldOfView, settings.outDampingTime, Time.deltaTime); } sourceFreeLook.m_Orbits[1] = orbit; }
private void Update() { if ((playerXAxisInpuAction.GetValue() != 0f || playerYAxisInputAction.GetValue() != 0f) && mainSection.activeSelf) { timeRunning += Time.deltaTime; } }
public override void OnUpdate() { defaultVirtualCameraAsFreeLook.m_BindingMode = CinemachineTransposer.BindingMode.WorldSpace; var xzPlaneForward = Vector3.Scale(cameraTransform.forward, new Vector3(1, 0, 1)); var xzPlaneRight = Vector3.Scale(cameraTransform.right, new Vector3(1, 0, 1)); if (characterYAxis.GetValue() != 0f || characterXAxis.GetValue() != 0f) { Vector3 forwardTarget = Vector3.zero; if (characterYAxis.GetValue() > 0) { forwardTarget += xzPlaneForward; } if (characterYAxis.GetValue() < 0) { forwardTarget -= xzPlaneForward; } if (characterXAxis.GetValue() > 0) { forwardTarget += xzPlaneRight; } if (characterXAxis.GetValue() < 0) { forwardTarget -= xzPlaneRight; } forwardTarget.Normalize(); if (!characterForward.HasValue()) { characterForward.Set(forwardTarget); } else { var lerpedForward = Vector3.Slerp(characterForward.Get().Value, forwardTarget, rotationLerpSpeed * Time.deltaTime); characterForward.Set(lerpedForward); } } }
/// <summary> /// This methods ensures the Avatar rotates smoothly when changing direction. /// Note that this will NOT affect the player movement, is only cosmetic. /// TODO(Brian): This is not camera feel, move this elsewhere /// </summary> private void UpdateAvatarRotationDamping() { var xzPlaneForward = Vector3.Scale(cameraTransform.forward, new Vector3(1, 0, 1)); var xzPlaneRight = Vector3.Scale(cameraTransform.right, new Vector3(1, 0, 1)); if (characterYAxis.GetValue() != 0f || characterXAxis.GetValue() != 0f) { Vector3 forwardTarget = Vector3.zero; if (characterYAxis.GetValue() > 0) { forwardTarget += xzPlaneForward; } if (characterYAxis.GetValue() < 0) { forwardTarget -= xzPlaneForward; } if (characterXAxis.GetValue() > 0) { forwardTarget += xzPlaneRight; } if (characterXAxis.GetValue() < 0) { forwardTarget -= xzPlaneRight; } forwardTarget.Normalize(); if (!characterForward.HasValue()) { characterForward.Set(forwardTarget); } else { var lerpedForward = Vector3.Slerp(characterForward.Get().Value, forwardTarget, avatarRotationLerpSpeed * Time.deltaTime); characterForward.Set(lerpedForward); } } }
internal void LateUpdate() { deltaTime = Mathf.Min(deltaTimeCap, Time.deltaTime); if (transform.position.y < minimumYPosition) { SetPosition(characterPosition.worldPosition); return; } velocity.x = 0f; velocity.z = 0f; velocity.y += gravity * deltaTime; bool previouslyGrounded = isGrounded; if (!isJumping || velocity.y <= 0f) { CheckGround(); } if (isGrounded) { isJumping = false; velocity.y = gravity * deltaTime; // to avoid accumulating gravity in velocity.y while grounded } else if (previouslyGrounded && !isJumping) { lastUngroundedTime = Time.time; } if (Utils.isCursorLocked && characterForward.HasValue()) { // Horizontal movement var speed = movementSpeed * (isSprinting ? runningSpeedMultiplier : 1f); transform.forward = characterForward.Get().Value; var xzPlaneForward = Vector3.Scale(cameraForward.Get(), new Vector3(1, 0, 1)); var xzPlaneRight = Vector3.Scale(cameraRight.Get(), new Vector3(1, 0, 1)); Vector3 forwardTarget = Vector3.zero; if (characterYAxis.GetValue() > 0) { forwardTarget += xzPlaneForward; } if (characterYAxis.GetValue() < 0) { forwardTarget -= xzPlaneForward; } if (characterXAxis.GetValue() > 0) { forwardTarget += xzPlaneRight; } if (characterXAxis.GetValue() < 0) { forwardTarget -= xzPlaneRight; } forwardTarget.Normalize(); velocity += forwardTarget * speed; CommonScriptableObjects.playerUnityEulerAngles.Set(transform.eulerAngles); } bool jumpButtonPressedWithGraceTime = jumpButtonPressed && (Time.time - lastJumpButtonPressedTime < 0.15f); if (jumpButtonPressedWithGraceTime) // almost-grounded jump button press allowed time { bool justLeftGround = (Time.time - lastUngroundedTime) < 0.1f; if (isGrounded || justLeftGround) // just-left-ground jump allowed time { Jump(); } } bool movingPlatformMovedTooMuch = Vector3.Distance(lastPosition, transform.position) > movingPlatformAllowedPosDelta; if (isOnMovingPlatform && !characterPosition.RepositionedWorldLastFrame() && movingPlatformMovedTooMuch) { ResetGround(); // As the character has already been moved faster-than-we-want, we reposition it characterController.transform.position = lastPosition; } if (characterController.enabled) { //NOTE(Brian): Transform has to be in sync before the Move call, otherwise this call // will reset the character controller to its previous position. SceneController.i.physicsSyncController.Sync(); characterController.Move(velocity * deltaTime); } SetPosition(characterPosition.UnityToWorldPosition(transform.position)); if ((DCLTime.realtimeSinceStartup - lastMovementReportTime) > PlayerSettings.POSITION_REPORTING_DELAY) { ReportMovement(); } if (isOnMovingPlatform) { lastLocalGroundPosition = groundTransform.InverseTransformPoint(transform.position); } }
void Update() { axisTarget[0] = axisX.GetValue(); axisTarget[1] = axisY.GetValue(); axis += Damper.Damp(axisTarget - axis, dampTime, Time.deltaTime); }
internal void LateUpdate() { deltaTime = Mathf.Min(deltaTimeCap, Time.deltaTime); if (transform.position.y < minimumYPosition) { SetPosition(characterPosition.worldPosition); return; } if (freeMovementController.IsActive()) { velocity = freeMovementController.CalculateMovement(); } else { velocity.x = 0f; velocity.z = 0f; velocity.y += gravity * deltaTime; bool previouslyGrounded = isGrounded; if (!isJumping || velocity.y <= 0f) { CheckGround(); } if (isGrounded) { isJumping = false; velocity.y = gravity * deltaTime; // to avoid accumulating gravity in velocity.y while grounded } else if (previouslyGrounded && !isJumping) { lastUngroundedTime = Time.time; } if (Utils.isCursorLocked && characterForward.HasValue()) { // Horizontal movement var speed = movementSpeed * (isWalking ? runningSpeedMultiplier : 1f); transform.forward = characterForward.Get().Value; var xzPlaneForward = Vector3.Scale(cameraForward.Get(), new Vector3(1, 0, 1)); var xzPlaneRight = Vector3.Scale(cameraRight.Get(), new Vector3(1, 0, 1)); Vector3 forwardTarget = Vector3.zero; if (characterYAxis.GetValue() > 0) { forwardTarget += xzPlaneForward; } if (characterYAxis.GetValue() < 0) { forwardTarget -= xzPlaneForward; } if (characterXAxis.GetValue() > 0) { forwardTarget += xzPlaneRight; } if (characterXAxis.GetValue() < 0) { forwardTarget -= xzPlaneRight; } forwardTarget.Normalize(); velocity += forwardTarget * speed; CommonScriptableObjects.playerUnityEulerAngles.Set(transform.eulerAngles); } bool jumpButtonPressedWithGraceTime = jumpButtonPressed && (Time.time - lastJumpButtonPressedTime < 0.15f); if (jumpButtonPressedWithGraceTime) // almost-grounded jump button press allowed time { bool justLeftGround = (Time.time - lastUngroundedTime) < 0.1f; if (isGrounded || justLeftGround) // just-left-ground jump allowed time { Jump(); } } //NOTE(Mordi): Detecting when the character hits the ground (for landing-SFX) if (isGrounded && !previouslyGrounded && (Time.time - lastUngroundedTime) > 0.4f) { OnHitGround?.Invoke(); } } if (characterController.enabled) { //NOTE(Brian): Transform has to be in sync before the Move call, otherwise this call // will reset the character controller to its previous position. Environment.i.platform.physicsSyncController.Sync(); characterController.Move(velocity * deltaTime); } SetPosition(PositionUtils.UnityToWorldPosition(transform.position)); if ((DCLTime.realtimeSinceStartup - lastMovementReportTime) > PlayerSettings.POSITION_REPORTING_DELAY) { ReportMovement(); } if (isOnMovingPlatform) { lastLocalGroundPosition = groundTransform.InverseTransformPoint(transform.position); } OnUpdateFinish?.Invoke(deltaTime); }
public void Return_0_AsDefaultValue() { Assert.AreEqual(0, action.GetValue()); }