Анимлеер резольверобъясняю, чтобы хитать с ресольвером на леерах в лв нужно что то сделать, только что?
Для логики нужна логика. А где взять логику? Имея логику, значит она у тебя уже есть, тебе не нужна 2-я логика, тк всего может быть 1 логика. У тебя есть логика? Если сказать что у тебя есть логика, напиши нам ресолвер на анимлеерах. Если нет у тебя логики, значит, ты нам не напишешь ресолвер на Анимлеерах. Логично? Да логично. Так как тут есть логика.Анимлеер резольвер
хахапхпхпх, он есть, но вот проблема без него хитает лучше чем с ним и так только в лв (логика без лееров тоже есть)Анимлеер резольвер
Покажи как ты собираешь и юзаешь эти анимоверлеи...хахапхпхпх, он есть, но вот проблема без него хитает лучше чем с ним и так только в лв (логика без лееров тоже есть)
В точности описал все вопросы на форуме по этой теме.Для логики нужна логика. А где взять логику? Имея логику, значит она у тебя уже есть, тебе не нужна 2-я логика, тк всего может быть 1 логика. У тебя есть логика? Если сказать что у тебя есть логика, напиши нам ресолвер на анимлеерах. Если нет у тебя логики, значит, ты нам не напишешь ресолвер на Анимлеерах. Логично? Да логично. Так как тут есть логика.
сломался, дай пожалуйста ссылочку хоть на одну темуВ точности описал все вопросы на форуме по этой теме.
А по теме: есть уже разделы, где описывается принцип, видимо у тебя поиск сломался...
Покажи как ты собираешь и юзаешь эти анимоверлеи...
float no_side = FLT_MAX;
auto animstate = player->get_animation_state();
AnimationLayer layers[15];
AnimationLayer moveLayers[3][15];
memcpy(moveLayers, player->get_animlayers(), sizeof(AnimationLayer) * 15);
auto speed = player->m_vecVelocity().Length2D();
int m_side;
if (speed <= 0.1f)
{
auto delta = math::AngleDiff(player->m_angEyeAngles().y, player->get_animation_state()->m_flGoalFeetYaw);
if (layers[3].m_flWeight == 0.0f && layers[3].m_flCycle == 0.0f)
{
resolving_way = (math::AngleDiff(player->get_animation_state()->m_flEyeYaw, player->get_animation_state()->m_flGoalFeetYaw) <= 0.0) - 1;
}
}
if (int(layers[12].m_flWeight * 1000.0f) == int(layers[6].m_flWeight * 1000.0f))
{
float firstDelta = fabs(layers[6].m_flPlaybackRate - moveLayers[0][6].m_flPlaybackRate);
float secondDelta = fabs(layers[6].m_flPlaybackRate - moveLayers[2][6].m_flPlaybackRate);
float thirdDelta = fabs(layers[6].m_flPlaybackRate - moveLayers[1][6].m_flPlaybackRate);
if (firstDelta < secondDelta || thirdDelta <= secondDelta || (secondDelta * 1000.0))
{
if (firstDelta >= thirdDelta && secondDelta > thirdDelta && !(thirdDelta * 1000.0))
{
m_side= 1;
}
}
else
{
m_side= -1;
}
}
AnimationLayer layers[15];сломался, дай пожалуйста ссылочку хоть на одну тему
типо такого, щас не дома точно не скажуКод:float no_side = FLT_MAX; auto animstate = player->get_animation_state(); AnimationLayer layers[15]; AnimationLayer moveLayers[3][15]; memcpy(moveLayers, player->get_animlayers(), sizeof(AnimationLayer) * 15); auto speed = player->m_vecVelocity().Length2D(); int m_side; if (speed <= 0.1f) { auto delta = math::AngleDiff(player->m_angEyeAngles().y, player->get_animation_state()->m_flGoalFeetYaw); if (layers[3].m_flWeight == 0.0f && layers[3].m_flCycle == 0.0f) { resolving_way = (math::AngleDiff(player->get_animation_state()->m_flEyeYaw, player->get_animation_state()->m_flGoalFeetYaw) <= 0.0) - 1; } } if (int(layers[12].m_flWeight * 1000.0f) == int(layers[6].m_flWeight * 1000.0f)) { float firstDelta = fabs(layers[6].m_flPlaybackRate - moveLayers[0][6].m_flPlaybackRate); float secondDelta = fabs(layers[6].m_flPlaybackRate - moveLayers[2][6].m_flPlaybackRate); float thirdDelta = fabs(layers[6].m_flPlaybackRate - moveLayers[1][6].m_flPlaybackRate); if (firstDelta < secondDelta || thirdDelta <= secondDelta || (secondDelta * 1000.0)) { if (firstDelta >= thirdDelta && secondDelta > thirdDelta && !(thirdDelta * 1000.0)) { m_side= 1; } } else { m_side= -1; } }
а че надо?AnimationLayer layers[15];
AnimationLayer moveLayers[3][15];
Если ты будешь такие значения юзать, то у тебя вообще нхя не получится...
абсолютно не правильно, ты даже лееры не собираешь....сломался, дай пожалуйста ссылочку хоть на одну тему
типо такого, щас не дома точно не скажуКод:float no_side = FLT_MAX; auto animstate = player->get_animation_state(); AnimationLayer layers[15]; AnimationLayer moveLayers[3][15]; memcpy(moveLayers, player->get_animlayers(), sizeof(AnimationLayer) * 15); auto speed = player->m_vecVelocity().Length2D(); int m_side; if (speed <= 0.1f) { auto delta = math::AngleDiff(player->m_angEyeAngles().y, player->get_animation_state()->m_flGoalFeetYaw); if (layers[3].m_flWeight == 0.0f && layers[3].m_flCycle == 0.0f) { resolving_way = (math::AngleDiff(player->get_animation_state()->m_flEyeYaw, player->get_animation_state()->m_flGoalFeetYaw) <= 0.0) - 1; } } if (int(layers[12].m_flWeight * 1000.0f) == int(layers[6].m_flWeight * 1000.0f)) { float firstDelta = fabs(layers[6].m_flPlaybackRate - moveLayers[0][6].m_flPlaybackRate); float secondDelta = fabs(layers[6].m_flPlaybackRate - moveLayers[2][6].m_flPlaybackRate); float thirdDelta = fabs(layers[6].m_flPlaybackRate - moveLayers[1][6].m_flPlaybackRate); if (firstDelta < secondDelta || thirdDelta <= secondDelta || (secondDelta * 1000.0)) { if (firstDelta >= thirdDelta && secondDelta > thirdDelta && !(thirdDelta * 1000.0)) { m_side= 1; } } else { m_side= -1; } }
абсолютно не правильно, ты даже лееры не собираешь....
АБСОЛЮТНО НЕ КАКИЕ,откуда он данные возьмет ? напрямую от структуры/класса??????
upd : В целом займись обучением не только игры ну и языка целиком...
if (player->m_fFlags() & FL_ONGROUND)
{
if (speed <= 1.1f)
{
if (speed > 1.0f && !moving)
{
if (resolver_adjust->previous_layers[3].m_flWeight == 0.0f && resolver_adjust->previous_layers[3].m_flCycle == 0.0f)
{
float v53 = fabsf(resolver_adjust->previous_layers[6].m_flPlaybackRate - resolver_adjust->resolver_layers[0][6].m_flPlaybackRate);
float v54 = fabsf(resolver_adjust->previous_layers[6].m_flPlaybackRate - resolver_adjust->resolver_layers[2][6].m_flPlaybackRate);
float v55 = fabsf(resolver_adjust->previous_layers[6].m_flPlaybackRate - resolver_adjust->resolver_layers[1][6].m_flPlaybackRate);
if (v53 < v54 || v55 <= v55 || float(!v55 * 1000.0))
{
if (v54 > v55 || v53 >= v54 || float(v54 * 1000.0))
{
if ((v54 * 10000.f) != (v55 * 1000.0))
{
if (v53 <= v54)
move_delta = v53;
else
move_delta = v53;
if (move_delta > v55)
move_delta = v54;
/*
@note - der grobe.
create animation layer a two matrixes and create !server goal feet yaw.
*/
if (!(move_delta * 1000.f) && (v55 * 1000.f) != (v54 * 1000.f))
{
if (move_delta == v55)
{
// v56 = -v56;
v54 = v55;
}
else if (move_delta == v54)
{
v55 = v54;
LABEL_51:
auto delta_lby = AngleDiff(animstate->m_flEyeYaw, player->m_flLowerBodyYawTarget());
if (abs(delta_lby) > 35.f)
delta_lby = - delta_lby;
goto LABEL_51;
}
}
}
}
}
}
}
}
/*
@note - der grobe.
break adjust balance for try resolve player using desync balance or break lby.
*/
else if (speed <= 0.1f)
{
if (resolver_adjust->previous_layers[3].m_flWeight == 1.0f && resolver_adjust->previous_layers[3].m_flWeightDeltaRate == 0.0f)
{
if (act == 979)
{
auto delta_lby = AngleDiff(animstate->m_flEyeYaw, player->m_flLowerBodyYawTarget());
if (abs(delta_lby) > 35.f)
delta_lby = - delta_lby;
}
else
{
v56 == -delta;
}
}
}
}
а так?C++:if (player->m_fFlags() & FL_ONGROUND) { if (speed <= 1.1f) { if (speed > 1.0f && !moving) { if (resolver_adjust->previous_layers[3].m_flWeight == 0.0f && resolver_adjust->previous_layers[3].m_flCycle == 0.0f) { float v53 = fabsf(resolver_adjust->previous_layers[6].m_flPlaybackRate - resolver_adjust->resolver_layers[0][6].m_flPlaybackRate); float v54 = fabsf(resolver_adjust->previous_layers[6].m_flPlaybackRate - resolver_adjust->resolver_layers[2][6].m_flPlaybackRate); float v55 = fabsf(resolver_adjust->previous_layers[6].m_flPlaybackRate - resolver_adjust->resolver_layers[1][6].m_flPlaybackRate); if (v53 < v54 || v55 <= v55 || float(!v55 * 1000.0)) { if (v54 > v55 || v53 >= v54 || float(v54 * 1000.0)) { if ((v54 * 10000.f) != (v55 * 1000.0)) { if (v53 <= v54) move_delta = v53; else move_delta = v53; if (move_delta > v55) move_delta = v54; /* @note - der grobe. create animation layer a two matrixes and create !server goal feet yaw. */ if (!(move_delta * 1000.f) && (v55 * 1000.f) != (v54 * 1000.f)) { if (move_delta == v55) { // v56 = -v56; v54 = v55; } else if (move_delta == v54) { v55 = v54; LABEL_51: auto delta_lby = AngleDiff(animstate->m_flEyeYaw, player->m_flLowerBodyYawTarget()); if (abs(delta_lby) > 35.f) delta_lby = - delta_lby; goto LABEL_51; } } } } } } } } /* @note - der grobe. break adjust balance for try resolve player using desync balance or break lby. */ else if (speed <= 0.1f) { if (resolver_adjust->previous_layers[3].m_flWeight == 1.0f && resolver_adjust->previous_layers[3].m_flWeightDeltaRate == 0.0f) { if (act == 979) { auto delta_lby = AngleDiff(animstate->m_flEyeYaw, player->m_flLowerBodyYawTarget()); if (abs(delta_lby) > 35.f) delta_lby = - delta_lby; } else { v56 == -delta; } } } }
абсолютно не правильно, ты даже лееры не собираешь....
АБСОЛЮТНО НЕ КАКИЕ,откуда он данные возьмет ? напрямую от структуры/класса??????
upd : В целом займись обучением не только игры ну и языка целиком...
Жесть,была даже тема где в деталях все это описали..можешь дать пример правильного кода, варианта исполнения такого ресика?
Подчеркну кол-во слоев - 15 ( движок ),но в кс используется только 13.Ну во-первых количество слоёв 13...
тобишь C_AnimationLayer layer[3][13];
то есть уже ошибка, во вторых тебе для каждого сайда нужно сторить и обновлять анимацию, тебе объяснили...
Научись пользоваться поиском.
Я знаю, что 15, я акцентировал внимание на том, что в кс конкретно 13 слоёв, 12 из которых используются.Подчеркну кол-во слоев - 15 ( движок ),но в кс используется только 13.
Причём 13 это не конкретно слой а его кол-во в нумерации устанавливается на SetNumAnimLayers() и на OnReset().
А по поводу сайда ( тс'у ) как минимум анимируешь влево , записываешь лееры, делаешь сетап костей, ресторишь и по новой уже с другим сайдом..
в десинк випе это правильно сделано?Ну во-первых количество слоёв 13...
тобишь C_AnimationLayer layer[3][13];
то есть уже ошибка, во вторых тебе для каждого сайда нужно сторить и обновлять анимацию, тебе объяснили...
Научись пользоваться поиском.
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz