/* 文件名:Move.nut 路径:Game/CharacterScript/Common/Move.nut 创建日期:2025-10-03 02:02 文件用途:角色移动脚本 */ /** * * @function * @param {CharacterObject} 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 {CharacterObject} 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 if (fabs(arr[0]) > 0.35) XOffset = arr[0] > 0 ? Speed : -Speed else XOffset = 0 local YOffset //当摇杆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 {CharacterObject} 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) } }