From e60822137fdd17b7f10b1c2254352bbf4cff9b1a Mon Sep 17 00:00:00 2001 From: BobSong <605277374@qq.com> Date: Wed, 24 Sep 2025 20:52:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A7=BB=E5=8A=A8=E6=8E=A7?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Unit/Move/CharacterControllerComponent.cs | 25 +++++++++---------- .../Generate/NetworkProtocol/RoomMessage.cs | 3 +++ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Assets/Scripts/Fishing2/Unit/Move/CharacterControllerComponent.cs b/Assets/Scripts/Fishing2/Unit/Move/CharacterControllerComponent.cs index 432c3a73a..48dade45a 100644 --- a/Assets/Scripts/Fishing2/Unit/Move/CharacterControllerComponent.cs +++ b/Assets/Scripts/Fishing2/Unit/Move/CharacterControllerComponent.cs @@ -21,6 +21,7 @@ namespace NBF.Fishing2 public class CharacterControllerComponent : Entity { public bool IsSelf; + public bool Run; public CharacterController characterController; public PlayerAsset PlayerAsset; @@ -63,6 +64,7 @@ namespace NBF.Fishing2 { self.characterController = null; self.IsSelf = false; + self.Run = false; var mapUnit = self.Parent as MapUnit; if (mapUnit.IsSelf()) { @@ -130,7 +132,7 @@ namespace NBF.Fishing2 { if (action == InputDef.Player.Run) { - // Run = true; + Run = true; } } @@ -138,7 +140,7 @@ namespace NBF.Fishing2 { if (action == InputDef.Player.Run) { - // Run = false; + Run = false; } } @@ -179,23 +181,17 @@ namespace NBF.Fishing2 Vector3 movementDirection = Vector3.zero; - // 修改:根据角色当前朝向计算移动方向 + // 发送本地相对坐标而不是世界坐标 if (!isStop) { - // 获取角色当前的右向和前向(在水平面上) - Vector3 characterRight = - Vector3.ProjectOnPlane(characterController.transform.right, Vector3.up).normalized; - Vector3 characterForward = Vector3.ProjectOnPlane(characterController.transform.forward, Vector3.up) - .normalized; - - // 根据角色朝向计算实际移动方向 - movementDirection = characterForward * movementInput.y + characterRight * movementInput.x; + movementDirection = new Vector3(movementInput.x, 0, movementInput.y); } Net.Send(new C2Map_Move() { Direction = movementDirection.ToVector3Info(), IsStop = isStop, + IsRun = Run, Timestamp = TimeHelper.Now, Position = mapUnit.Position.ToVector3Info(), Rotation = mapUnit.Forward.ToVector3Info(), @@ -306,8 +302,11 @@ namespace NBF.Fishing2 private void UpdateMovement() { - // 修改:使用世界坐标方向而不是相对坐标方向 - Vector3 movementDirection = currentMoveState.moveDirection; + // 将本地相对方向转换为世界方向 + Vector3 localDirection = currentMoveState.moveDirection; + Vector3 characterRight = Vector3.ProjectOnPlane(characterController.transform.right, Vector3.up).normalized; + Vector3 characterForward = Vector3.ProjectOnPlane(characterController.transform.forward, Vector3.up).normalized; + Vector3 movementDirection = characterForward * localDirection.z + characterRight * localDirection.x; float targetSpeed = currentMoveState.moveSpeed; diff --git a/Assets/Scripts/Generate/NetworkProtocol/RoomMessage.cs b/Assets/Scripts/Generate/NetworkProtocol/RoomMessage.cs index c89847deb..4370832e4 100644 --- a/Assets/Scripts/Generate/NetworkProtocol/RoomMessage.cs +++ b/Assets/Scripts/Generate/NetworkProtocol/RoomMessage.cs @@ -163,6 +163,7 @@ namespace NBC Rotation = default; Direction = default; IsStop = default; + IsRun = default; Timestamp = default; #if FANTASY_NET || FANTASY_UNITY GetScene().MessagePoolComponent.Return(this); @@ -180,6 +181,8 @@ namespace NBC [ProtoMember(4)] public bool IsStop { get; set; } [ProtoMember(5)] + public bool IsRun { get; set; } + [ProtoMember(6)] public long Timestamp { get; set; } } [ProtoContract]