Итак, я пытаюсь использовать 2D-raycast, чтобы остановить лазерный прицел в моей игре, проходящей сквозь стены.Unity 2D, C# 2D Raycast дает странные результаты дистанции
Сначала я попытался просто установить конечную точку лазера в точку попадания. Тем не менее, это приносило странные результаты, причем точка попадания, казалось бы, находилась в случайном месте, обычно за игроком.
Я сделал отладки, чтобы проверить, что raycast сталкивается, как я хотел (хотя я знаю отладки использует для 3D-системы raycast, так что, может быть, я делаю что-то неправильно там?)
Затем я попытался с помощью расстояние от точки попадания. Он работает, вроде, когда лазер попадает в стену, он меняет свою длину, поэтому он не попадает в стену. Проблема в том, что она останавливается задолго до стены, а не в какой-то конкретной точке, если я подошёл ближе к стене, линия изменится почти так же, как если бы она пыталась сохранить разделение расстояния от стены. Это, наверное, что-то действительно простое, но я не могу, чтобы лифт меня это исправить.
Лазерный прицел глубоко в иерархии компонентов игроков, некоторые из которых имеют масштаб, мне интересно, может ли это быть причиной нечетного деления, и если да, то как его исправить.
Заранее благодарим за любую помощь!
using UnityEngine;
using System.Collections;
public class LaserSight : MonoBehaviour {
private LineRenderer Lren;
public void Start() {
Lren = GetComponent<LineRenderer>();
}
public void Update() {
if (Lren.enabled) {
int layerMask = (1 << LayerMask.NameToLayer("Wall")) |
(1 << LayerMask.NameToLayer("Enemies"));
//layerMask = ~layerMask;
RaycastHit2D hit = Physics2D.Raycast(transform.position,
transform.right,
layerMask);
if (hit) {
Lren.SetPosition(1,-hit.point);
//Lren.SetPosition(1, new Vector3(hit.distance, 0, 0));
} else {
Lren.SetPosition(1, new Vector3(100, 0, 0));
}
}
}
}