У меня есть RayCast, представленный LineRenderer в Unity, поэтому он выглядит как лазер. Я хочу, чтобы этот лазер перемещал объекты, с которыми сталкивается, так, чтобы объект следовал за hit.point
удара Raycast.
Мой код не работает, потому что я перемещаю эти GameObjects в hit.point
, что заставляет объект приближаться к начальной точке Raycast, потому что вычисляется новый hit.point
, так как объект перемещается в hit.point
. Я понимаю, почему это происходит, но я не уверен, как заставить объект двигаться с помощью Raycast, но не влияю на новую точку попадания.
Вот моя функция обновления в моем скрипте, прикрепленная к моему Laser GameObject. Кто-нибудь знает, как я могу исправить свой код так, чтобы объект двигался с точкой удара?
void Update()
{
Vector3 target = calculateDeltaVector();
lr.SetPosition(0, palm.transform.position);
RaycastHit hit;
if (Physics.Raycast(palm.transform.position, target , out hit))
{
if (hit.collider)
{
lr.SetPosition(1, hit.point);
if (hit.transform.gameObject.tag == "Chair")
{
GameObject chair = hit.transform.gameObject;
// !!! move object to hit point, problem HERE
chair.transform.position = hit.point;
hitLock = false;
}
}
}
else lr.SetPosition(1, target * 50);
}