Пользователь
-
Автор темы
- #1
делаю фристенд (детект стен)
через цикл градусов от -180 до 180 (шаг 10) пускаю лучи в эти направления, ищу самый коротки луч > там и стена
но работает это только для некоторых стен (линии для визуализации сделал):
уже все маски для TraceRay перепробовал
через цикл градусов от -180 до 180 (шаг 10) пускаю лучи в эти направления, ищу самый коротки луч > там и стена
но работает это только для некоторых стен (линии для визуализации сделал):
уже все маски для TraceRay перепробовал
C++:
float antiaim::Freestand() {
float best_yaw = 361, min_distance = 101.f;
Vector origin = g_LocalPlayer->GetOrigin() + g_LocalPlayer->GetViewOffset();
for (int i = -180; i < 180; i += 10) {
QAngle trace_angle = { 0, i, 0 };
Vector direction;
Utils::AngleVectors(trace_angle, direction);
direction.NormalizeInPlace();
Vector wall = origin + direction * 100;
CGameTrace trace;
CTraceFilter filter;
Ray_t ray;
filter.pSkip = (void*)g_LocalPlayer;
ray.Init(origin, wall);
I::Trace->TraceRay(ray, MASK_SHOT, &filter, &trace);
if ((trace.endpos - trace.startpos).LengthSqr() < min_distance) {
min_distance = (trace.endpos - trace.startpos).LengthSqr();
best_yaw = i;
}
Vector2 start;
Vector2 end;
start = render::WorldToScreen(trace.startpos);
end = render::WorldToScreen(trace.endpos);
render::Line(start.x, start.y, end.x, end.y, 255, 255, 255, 255);
}
return best_yaw;
}