0
마우스 움직임의 마지막 0.25 초 동안 raycast를하고 싶습니다.지난 0.25 초 동안 마우스 위치를 레이크하는 방법
이동 시간이 0.25 초를 초과하는 항목은 대기열에서 제거해야합니다.
현재 최대 크기 (크기) 인 대기열을 사용합니다. 최대 크기를 초과하면 항목을 제거하기 시작합니다. 대신이 메서드를 변환하여 0.25f 초보다 오래된 항목을 삭제할 수 있습니까?
//Ray Cache
public Queue<Ray> inputRays;
int counter = 0;
int size = 10;//size of queue
/**********************************************/
private void Start()
{
inputRays = new Queue<Ray>();
}
private void FixedUpdate()
{
QueueInputRays();
}
private void QueueInputRays()
{
if (counter < size)
{
inputRays.Enqueue(Camera.main.ScreenPointToRay(Input.mousePosition));
counter += 1;
}
else
{
inputRays.Enqueue(Camera.main.ScreenPointToRay(Input.mousePosition));
inputRays.Dequeue();
}
}
이 문제를 해결하기위한 방법 중 하나는 광선을 직접 사용하는 것이 아니라 광선이 포함될 새로운 클래스와 광선이 캐스팅 된 시간을 사용하는 것입니다. 그런 다음 대기열 앞에있는 인스턴스를보고 해당 시간을 현재 시간과 비교하십시오. 따라서 시간이 0.25보다 클 경우 해당 인스턴스를 대기열에서 제외합니다. –