Origin в этом скрипте не обновляется. Любая помощь приветствуетсяC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Origin в этом скрипте не обновляется. Любая помощь приветствуется

Сообщение Anonymous »

Я пытался скопировать руководство CodeMonkey по сценарию поля зрения с YouTube, однако источник лучей не обновляется в соответствии с положением игрока. Что работает правильно, так это направление лучей, но не положение, поскольку оно все еще думает, что оно равно 0, 0. Я могу прикрепить сценарий поля зрения к контроллеру моего проигрывателя, чтобы переместить сетку, но проблема остается. Я пробовал отладку, распечатывая положение начала координат, и оно, по-видимому, движется вместе с координатами игрока, но все еще не рассчитывается правильно. У меня есть объект, с которым скрипт сталкивается правильно, но как только игрок движется, «попадания» raycast не обновляются, создавая впечатление, что объект все еще существует. Это в Unity 2D.
Вот скрипт:

Код: Выделить всё

public class FieldOfView : MonoBehaviour
{
[SerializeField] private LayerMask layerMask;

private Mesh mesh;
//create mesh
private float fov;
private Vector3 origin;
private float startingAngle;
private void Start()
{
mesh = new Mesh();
GetComponent().mesh = mesh;
fov = 90f;
origin = Vector3.zero;
}

private void LateUpdate()
{
Vector3 origin = Vector3.zero;
int rayCount = 100;
float angle = startingAngle;
float angleIncrease = fov / rayCount;
float viewDistance = 10f;

Vector3[] vertices = new Vector3[rayCount + 1 + 1];
Vector2[] uv = new Vector2[vertices.Length];
int[] triangles = new int[rayCount * 3];

vertices[0] = origin;

int vertexIndex = 1;
int triangleIndex = 0;
for (int i = 0; i  0)
{

triangles[triangleIndex + 0] = 0;
triangles[triangleIndex + 1] = vertexIndex - 1;
triangles[triangleIndex + 2] = vertexIndex;

triangleIndex += 3;
}

vertexIndex++;
angle -= angleIncrease;

}

mesh.vertices = vertices;
mesh.uv = uv;
mesh.triangles = triangles;
}

public void SetOrigin(Vector3 origin)
{

this.origin = origin;

}

public void SetAimDirection(Vector3 aimDirection)
{
startingAngle = GetAngleFromVectorFloat(aimDirection) + fov / 2f;
}

public static Vector3 GetVectorFromAngle(float angle)
{
float angleRad = angle * (Mathf.PI / 180f);
return new Vector3(Mathf.Cos(angleRad), Mathf.Sin(angleRad));
}

public static float GetAngleFromVectorFloat(Vector3 dir)
{
dir = dir.normalized;
float n = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
if (n < 0) n += 360;

return n;
}

}
Это скрипт PlayerAim, в котором это называется

Код: Выделить всё

public class PlayerAim : MonoBehaviour
{
[SerializeField] private FieldOfView fieldOfView;

void Update()
{
Vector3 targetPosition = GetMouseWorldPosition();
Vector3 aimDir = (targetPosition - transform.position).normalized;
fieldOfView.SetAimDirection(aimDir);
fieldOfView.SetOrigin(transform.position);
}

public static Vector3 GetMouseWorldPosition()
{
Vector3 vec = GetMouseWorldPositionWithZ(Input.mousePosition, Camera.main);
vec.z = 0f;
return vec;
}

public static Vector3 GetMouseWorldPositionWithZ()
{
return GetMouseWorldPositionWithZ(Input.mousePosition, Camera.main);
}

public static Vector3 GetMouseWorldPositionWithZ(Camera worldCamera)
{
return GetMouseWorldPositionWithZ(Input.mousePosition, worldCamera);
}

public static Vector3 GetMouseWorldPositionWithZ(Vector3 screenPosition, Camera worldCamera)
{
Vector3 worldPosition = worldCamera.ScreenToWorldPoint(screenPosition);
return worldPosition;
}

public static Vector3 GetDirToMouse(Vector3 fromPosition)
{
Vector3 mouseWorldPosition = GetMouseWorldPosition();
return (mouseWorldPosition - fromPosition).normalized;
}

}
Извиняюсь, если моя формулировка двусмысленна, я новичок в программировании. Опять же, любая помощь приветствуется.

Подробнее здесь: https://stackoverflow.com/questions/784 ... ppreciated
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Новичок Непонятен вывод. Любая помощь приветствуется
    Anonymous » » в форуме CSS
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Новичок запутался в выводе. Любая помощь приветствуется [закрыто]
    Anonymous » » в форуме CSS
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Новичок запутался в выводе. Переопределение кода CSS, но проблема не найдена. Любая помощь приветствуется [закрыто]
    Anonymous » » в форуме CSS
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Почему имя задания abaqus не обновляется в моем скрипте Python abaqus?
    Anonymous » » в форуме Python
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous
  • Почему сетка не отображается в этом скрипте matplotlib?
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»