done else player animation

This commit is contained in:
VDH
2025-09-22 12:15:11 +07:00
parent 0dd73da3c4
commit a995887904
9 changed files with 84 additions and 34 deletions
Binary file not shown.
@@ -26,6 +26,7 @@ namespace PerfectWorld.Scripts.Managers
public int HandlerId => (int)MANAGER_INDEX.MAN_PLAYER;
public bool ProcessMessage(ECMSG Msg)
{
Debug.Log("HoangDev: ProcessMessageManPlayer :");
if (Msg.iSubID == 0)
{
if (GameController.Instance == null) return true;
@@ -7,7 +7,7 @@ using UnityEngine;
namespace PerfectWorld.Scripts.Player
{
public class EC_ElsePlayer : MonoBehaviour
public class EC_ElsePlayer : EC_Player
{
A3DVECTOR3 m_vMoveDir; // Player's velocity
A3DVECTOR3 m_vServerPos; // Player's real position on server
@@ -119,6 +119,11 @@ namespace PerfectWorld.Scripts.Player
m_aabb.CompleteMinsMaxs();
m_aabbServer.Center = vPos + new A3DVECTOR3(0.0f, m_aabbServer.Extents.y, 0.0f);
m_aabbServer.CompleteMinsMaxs();
if (TryGetComponent<PlayerVisual>(out var visual))
{
visual.InitHostPlayerEventDoneHandler();
}
}
void CalcPlayerAABB()
@@ -160,6 +165,10 @@ namespace PerfectWorld.Scripts.Player
m_fMoveSpeed = fDist / (dwDeltaTime * 0.001f);
Mathf.Clamp(m_fMoveSpeed, 0.0f, fSpeed * 1.2f);
//if (!m_pPlayerModel) return;
//if (!IsValidAction(iCurAction)) return;
BrewMonster.Logger.Log("HoangDev : MoveToMoveTo");
PlayAction((int)PLAYER_ACTION_TYPE.ACT_RUN, true, 1, false);
}
public bool MovingTo(float dwDeltaTime)
@@ -202,6 +211,12 @@ namespace PerfectWorld.Scripts.Player
vDir.Normalize();
vPos = MoveStep(vDir, m_fMoveSpeed, fDeltaTime);
SetPos(vPos);
Quaternion targetRotation = Quaternion.LookRotation(EC_Utility.ToVector3(vDir));
transform.rotation = Quaternion.Slerp(
transform.rotation,
targetRotation,
rotationSpeed * Time.deltaTime
);
}
return bRet;
@@ -266,7 +281,7 @@ namespace PerfectWorld.Scripts.Player
// SetGroundNormal(m_cdr.vecGroundNormal);
//else
// SetGroundNormal(g_vAxisY);
return m_cdr.vCenter - g_vAxisY * m_cdr.vExts.y;
}
@@ -314,7 +329,7 @@ namespace PerfectWorld.Scripts.Player
// Set server position
public void SetServerPos(A3DVECTOR3 vPos)
{
m_vServerPos = vPos;
m_vServerPos = vPos;
// If this player is a mule, change it's rider's server pos too.
if (m_iBuddyId != 0 && !m_bHangerOn)
{
@@ -341,7 +356,7 @@ namespace PerfectWorld.Scripts.Player
m_aabb.CompleteMinsMaxs();
m_aabbServer.Center = vPos + new A3DVECTOR3(0.0f, m_aabbServer.Extents.y, 0.0f);
m_aabbServer.CompleteMinsMaxs();
}
}
private A3DVECTOR3 GetPos()
{
@@ -350,7 +365,7 @@ namespace PerfectWorld.Scripts.Player
result.y = transform.position.y;
result.z = transform.position.z;
return result;
}
}
}
// Player appear flag
+1 -1
View File
@@ -77450,7 +77450,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!4 &960760104
Transform:
m_ObjectHideFlags: 0
+11 -12
View File
@@ -39,7 +39,6 @@ public class CECHostPlayer : EC_Player
Vector3 playerVelocity;
bool isGrounded = false;
bool isRun = false;
GameObject modle;
Vector3 m_vLastSevPos;
// ====== Ground cast config ======
@@ -76,16 +75,16 @@ public class CECHostPlayer : EC_Player
public void SetModelHostPlayer()
{
modle = NPCManager.Instance.GetModelPlayer();
m_pPlayerModel = NPCManager.Instance.GetModelPlayer();
Scene scene = SceneManager.GetSceneByName("WorldRender");
SceneManager.MoveGameObjectToScene(modle, scene);
modle.transform.SetParent(parentModel);
modle.transform.localPosition = Vector3.zero;
modle.SetActive(true);
SceneManager.MoveGameObjectToScene(m_pPlayerModel, scene);
m_pPlayerModel.transform.SetParent(parentModel);
m_pPlayerModel.transform.localPosition = Vector3.zero;
m_pPlayerModel.SetActive(true);
}
private void Start()
{
_playerStateMachine.InitState(_moveState);
_playerStateMachine.InitState(_idleState);
// btnJump.onClick.AddListener(HandleJump);
}
@@ -301,6 +300,7 @@ public class CECHostPlayer : EC_Player
//{
// roleName = Encoding.UTF8.GetString(role.name.ByteArray, 0, role.name.Length);
//}
SetPlayerInfor(new INFO(role.cid, role.crc_e, role.crc_c));
Vector3 pos = new Vector3(role.pos.x, role.pos.y, role.pos.z);
if (txtName != null) txtName.text = roleName;
transform.position = pos;
@@ -309,7 +309,10 @@ public class CECHostPlayer : EC_Player
joystick = FindAnyObjectByType<Joystick>();
EventBus.Subscribe<JoystickRealeaseEvent>(JoystickRelease);
EventBus.Subscribe<JoystickPressEvent>(JoystickStartDrag);
EventBus.Publish(new InitHostPlayerEventDone()) ;
if (TryGetComponent<PlayerVisual>(out var visual))
{
visual.InitHostPlayerEventDoneHandler();
}
}
private void JoystickStartDrag(JoystickPressEvent joystickPressEvent)
@@ -343,7 +346,3 @@ public enum StateAnim
Run = 3,
Jump = 4
}
public struct InitHostPlayerEventDone
{
}
-4
View File
@@ -25,10 +25,6 @@ public class CECStringTab
{
bool ok = bUnicode ? LoadWideStrings(szFile) : LoadANSIStrings(szFile);
m_bInit = ok;
foreach(var str in m_AStrTab.Values)
{
BrewMonster.Logger.Log("HoangDev: m_AStrTab.Values" + str);
}
return ok;
}
catch (Exception e)
+5
View File
@@ -1,4 +1,5 @@
using BrewMonster;
using CSNetwork.GPDataType;
using System;
using System.Collections;
using UnityEngine;
@@ -33,6 +34,10 @@ public static class EC_Utility
{
return new System.Numerics.Vector3(v.x, v.y, v.z);
}
public static Vector3 ToVector3(A3DVECTOR3 a3DVECTOR3)
{
return new Vector3(a3DVECTOR3.x, a3DVECTOR3.y, a3DVECTOR3.z);
}
public static float MagnitudeH(this Vector3 v)
{
return Mathf.Sqrt(v.x * v.x + v.z * v.z);
+31 -3
View File
@@ -1,24 +1,37 @@
using BrewMonster;
using ModelRenderer.Scripts.GameData;
using Mono.Cecil;
using System;
using System.Collections.Generic;
using UnityEngine;
public class EC_Player : MonoBehaviour
public abstract class EC_Player : MonoBehaviour
{
private static PLAYER_ACTION[] _default_actions;
private static PLAYER_ACTION[] _turning_actions;
PLAYER_ACTION[] m_PlayerActions;
[SerializeField] protected INFO m_PlayerInfo;
protected GameObject m_pPlayerModel;
protected float rotationSpeed = 5;
protected void Awake()
{
m_PlayerActions = _default_actions;
}
public void SetPlayerInfor(INFO playinfo)
{
m_PlayerInfo = playinfo;
}
public INFO GetPlayInfo()
{
return m_PlayerInfo;
}
public static void InitStaticRes()
{
BuildActionList();
}
public bool IsValidAction(int iIndex) { return (iIndex >= 0 && iIndex < (int)PLAYER_ACTION_TYPE.ACT_MAX) ? true : false; }
private static void BuildActionList()
{
if (_default_actions == null)
@@ -98,6 +111,7 @@ public class EC_Player : MonoBehaviour
}
else
{
}
}
return PlayActionWithConfig(iAction, m_PlayerActions[iAction], bRestart, iTransTime, bQueue);
@@ -108,7 +122,8 @@ public class EC_Player : MonoBehaviour
PLAYER_ACTION action = actionConfig;
var szAct = EC_Utility.BuildActionName(action, 0);
EventBus.Publish(new PlayActionEvent(szAct));
BrewMonster.Logger.Log("HoangDev szActszAct: " + szAct);
EventBus.PublishChannel(m_PlayerInfo.cid, new PlayActionEvent(szAct));
return true;
}
public static void Dispose()
@@ -260,9 +275,22 @@ public class EC_Player : MonoBehaviour
}
public struct PlayActionEvent
{
public string AnimationName;
public string AnimationName;
public PlayActionEvent(string animationName)
{
this.AnimationName = animationName;
}
}
[Serializable]
public struct INFO
{
public int cid; // Character ID
public int crc_c; // customized data crc
public int crc_e; // Equipment data crc
public INFO(int cid, int crc_c, int crc_)
{
this.cid = cid;
this.crc_c = crc_c;
this.crc_e = crc_;
}
};
+15 -9
View File
@@ -5,11 +5,9 @@ using UnityEngine;
public class PlayerVisual : MonoBehaviour
{
[SerializeField] NamedAnimancerComponent animancer;
private void Awake()
{
EventBus.Subscribe<InitHostPlayerEventDone>(InitHostPlayerEventDoneHandler);
EventBus.Subscribe<PlayActionEvent>(PlayActionEventHandler);
}
[SerializeField] private INFO _playerInfo;
private void PlayActionEventHandler(PlayActionEvent @event)
{
@@ -17,17 +15,25 @@ public class PlayerVisual : MonoBehaviour
animancer.TryPlay(@event.AnimationName);
}
private void InitHostPlayerEventDoneHandler(InitHostPlayerEventDone done)
public void InitHostPlayerEventDoneHandler()
{
animancer = GetComponentInChildren<NamedAnimancerComponent>();
if(animancer == null)
{
BrewMonster.Logger.Log("animancer == null");
BrewMonster.Logger.LogError("animancer == null");
return;
}
var player = GetComponentInParent<EC_Player>();
if(player == null)
{
BrewMonster.Logger.LogError("player == null");
return;
}
_playerInfo = player.GetPlayInfo();
EventBus.SubscribeChannel<PlayActionEvent>(_playerInfo.cid, PlayActionEventHandler);
}
private void OnDestroy()
{
EventBus.Unsubscribe<InitHostPlayerEventDone>(InitHostPlayerEventDoneHandler);
EventBus.Unsubscribe<PlayActionEvent>(PlayActionEventHandler);
EventBus.UnsubscribeAllInChannel(_playerInfo.cid);
}
}