update mutiplay

This commit is contained in:
2026-04-08 12:38:39 +07:00
parent e6deb358df
commit 8ef5ecbe0f
10 changed files with 138 additions and 180 deletions

View File

@@ -20,16 +20,14 @@ namespace OnlyScove.Scripts
stateMachine.Input.OnJumpEvent += OnJump;
// Determine dash direction based on input, or default to forward if no input
Vector2 input = stateMachine.Input.MoveInput;
// ĐÚNG: Sử dụng MoveInput đã đồng bộ mạng (Quan trọng để Client không bị phụ thuộc vào phím của Host)
Vector2 input = stateMachine.MoveInput;
if (input != Vector2.zero)
{
dashDirection = new Vector3(input.x, 0f, input.y).normalized;
if (stateMachine.Cam != null)
{
dashDirection = stateMachine.Cam.PlanarRotation * dashDirection;
}
dashDirection = stateMachine.NetworkedCameraRotation * dashDirection;
dashDirection.y = 0;
dashDirection.Normalize();
// Instantly snap rotation to face the dash direction
stateMachine.transform.rotation = Quaternion.LookRotation(dashDirection);
@@ -45,17 +43,18 @@ namespace OnlyScove.Scripts
dashTimer -= deltaTime;
// Apply high speed for the dash (Burst speed)
stateMachine.Controller.Move(dashDirection * stateMachine.SprintSpeed * deltaTime);
// Sử dụng Move tập trung để đồng bộ mạng
stateMachine.Move(dashDirection * stateMachine.SprintSpeed, 1.0f, deltaTime);
// When the dash finishes, decide the next state
if (dashTimer <= 0f)
{
if (stateMachine.Input.IsSprintHeld && stateMachine.Input.MoveInput != Vector2.zero)
if (stateMachine.IsSprintHeld && stateMachine.MoveInput != Vector2.zero)
{
// Kept holding Shift -> Go to Sprint
stateMachine.SwitchState(new PlayerRunState(stateMachine));
}
else if (stateMachine.Input.MoveInput != Vector2.zero)
else if (stateMachine.MoveInput != Vector2.zero)
{
// Released Shift but still moving -> Go to Walk
stateMachine.SwitchState(new PlayerMoveState(stateMachine));