/* 文件名:Move.nut 路径:Game/CharacterScript/Common/Move.nut 创建日期:2025-10-03 02:02 文件用途:角色移动脚本 */ /** * * @function * @param {ActiveObject} obj * @returns {void} */ function checkCanChangeState_Character_Move(obj) { //获取当前状态 local CurState = obj.GetState(); //得到摇杆的数据 X 和 Y的范围 -1.0 ~ 1.0 local arr = obj.GetVars("_move_data_", "float"); if (fabs(arr[0]) > 0.35 || fabs(arr[1]) > 0.35) { return true; } else return false; } /** * * @function * @param {ActiveObject} obj * @returns {void} */ function SetState_Character_Move(obj) { //获取移动数据 local arr = obj.GetVars("_move_data_", "float"); //设置人物朝向 摇杆X轴大于0则朝右,小于0则朝左 local SetValue = arr[0] > 0 ? 0 : 1; if (SetValue != obj.GetDirection()) { if (fabs(arr[0]) > 0.35) obj.SetDirection(SetValue); //设置动作 obj.SetAction("move"); } else { if (obj.GetState() != 1) obj.SetAction("move"); } local Speed = 250; local Dir = obj.GetDirection(); local Pos = obj.GetPosition(); local XOffset = null; if (fabs(arr[0]) > 0.35) XOffset = arr[0] > 0 ? Speed : -Speed; else XOffset = 0; local YOffset = null; //当摇杆Y轴大于0.35或小于-0.35时,设置Y轴偏移量 if (fabs(arr[1]) > 0.35) YOffset = arr[1] > 0 ? Speed : -Speed; else YOffset = 0; obj.SetSpeed(XOffset, YOffset, null); } /** * * @function * @param {ActiveObject} obj * @param {integer} DeltaTime * @returns {void} */ function ProcState_Character_Move(obj, DeltaTime) { //获取移动数据 local arr = obj.GetVars("_move_data_", "float"); if (arr[0] == 0 && arr[1] == 0) { obj.SetState(0); } }