有几种修改方式:
1、男法、女鬼剑等角色到nut修改
如神迹新生女鬼剑,找到对应的attack.nut,分析代码后,定位到位移写在sqr/character/atswordman/atswordman_new.nut -> function procSetIsMove,默认位移30,按前方向键额外加76,按后额外减30,不按则保持默认。修改不按方向键减30抵消默认就没有位移。
2、原版角色设置停止移动
如鬼剑、女法,在 function onProc_XXX 中添加 if (!sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL) && !sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)) sq_SetVelocity(obj, 0, 0.0);
判断按键与角色朝向不一致时清零X轴移速,还可以换成 obj.sq_SetStaticMoveInfo(0, 0, 0, false, 0, true); 有相同效果,还有obj.sq_StopMove();可以用来停止大枪的后座
3、通用的处理
上述两种方式有时会有瑕疵,例如女法特定的按键输入时会发生后退,可以换一种方式,把角色钉在某个坐标上
function onSetState_XXX(obj, state, datas, isResetTimer)
{
if (!obj || !obj.sq_IsMyControlObject()) return;
obj.getVar("targetX").setInt(0, obj.getXPos());
}
function onProc_XXX(obj)
{
if(!obj||!obj.sq_IsMyControlObject())return;
local targetX = obj.getVar("targetX").getInt(0);
if(obj.getDirection() == obj.sq_GetInputDirection(0)) obj.getVar("targetX").setInt(0, -1);
else if (targetX >=0) sq_setCurrentAxisPos(obj, 0, targetX);
}
判断方向是为了按方向键时可以移动,不按时不移动。去掉if就成了普攻在原地无法移动