Итак, я пытаюсь создать систему, которая ищет уступ для подъема. У меня есть вертикальное поле зрения, которое ищет эти выступы, и я до сих пор заставлял его вращаться в направлении аналоговой ручки, чтобы я мог найти выступ и перейти к нему, куда указывает мой аналог. (Посмотри вверх, найди выступ, поднимись и т. Д.). Моя проблема в том, что когда поле обзора перемещается туда, куда мне нужно, оно остается неподвижным на одной оси и не вращается вместе с игроком.
На рисунке конус обращен туда, где он должен быть, и вращается вокруг игрока так, как я этого хочу, но, как вы можете видеть, конус обращен к оси X и не двигается оттуда. Я хочу, чтобы он вращался вместе с плеером.
В приведенном ниже коде возвращаемое значение y вектора Vector указывает конус вверх. Я перепробовал все виды функций в значениях x и z, но ничего не торчит.
public Vector3 DirFromAngle(float angleInDegrees, bool angleIsGlobal)
{
if(!angleIsGlobal)
{
angleInDegrees += (viewDir + 90);
}
Vector3 newValue = new Vector3(0, Mathf.Sin(angleInDegrees * Mathf.Deg2Rad), Mathf.Cos(angleInDegrees * Mathf.Deg2Rad));
return newValue;
}
Значение viewDir заставляет вращаться конус с моей аналоговой ручкой, чтобы заставить вращаться конус с моим плеером, я предполагаю, что нужно что-то сделать со значениями x или z, или с обоими, но для моей жизни, Я не могу понять это.
Спасибо за любую помощь в этом вопросе. Извиняюсь, если мое объяснение не очень хорошее.
void OnSceneGUI()
{
LedgePointSearch lps = (LedgePointSearch)target;
Handles.color = Color.white;
Handles.DrawWireArc(lps.transform.position, lps.transform.forward * 90, Vector3.up, 360, lps.viewRadius);
Vector3 viewAngleA = lps.DirFromAngle(-lps.viewAngle / 2, false);
Vector3 viewAngleB = lps.DirFromAngle(lps.viewAngle / 2, false);
Handles.DrawLine(lps.transform.position, lps.transform.position + viewAngleA * lps.viewRadius);
Handles.DrawLine(lps.transform.position, lps.transform.position + viewAngleB * lps.viewRadius);
}
Это скрипт редактора, отображающий поле зрения.
Круг просто представляет радиус поля зрения, как далеко он выходит.
https://www.dropbox.com/s/k9siha2aog9vj8o/fov.mp4?dl=0
В видео круг вращается вместе с игроком, а конус вращается с моими левыми аналоговыми движениями. Я хочу, чтобы конус был похож на круг, вращаясь так, как это делает мой игрок, но при этом соответствуя моим аналогичным движениям.