Я следовал этому уроку https://www.youtube.com/watch?v=pa_U64G7gkE, чтобы создать функциональность рисования линий в Unity 2d.
Проблема в том, что к префабу прикреплен краевой коллайдер, и когда мяч касается линии, мяч достигает центра, а не на вершине линии.Это как перекрытие верхней половины линии.
Вот код ниже.Я пытался использовать полигональный коллайдер, но это не сработало или, возможно, я сделал не правильно.Я буду очень признателен, если кто-нибудь поможет мне.
public class DrawLine : MonoBehaviour
{
public GameObject linePrefab;
public GameObject currentLine;
public LineRenderer lineRenderer;
public EdgeCollider2D edgeCollider;
public List<Vector2> fingerPositions;
// Update is called once per frame
void Update ()
{
if(Input.GetMouseButtonDown(0))
{
CreateLine();
}
if(Input.GetMouseButton(0))
{
Vector2 tempFingerPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
if(Vector2.Distance(tempFingerPos, fingerPositions[fingerPositions.Count-1])> .1f)
{
UpdateLine(tempFingerPos);
}
}
}
void CreateLine()
{
currentLine = Instantiate(linePrefab,Vector2.zero,Quaternion.identity);
lineRenderer = currentLine.GetComponent<LineRenderer>();
edgeCollider = currentLine.GetComponent<EdgeCollider2D>();
fingerPositions.Clear();
fingerPositions.Add(Camera.main.ScreenToWorldPoint(Input.mousePosition));
fingerPositions.Add(Camera.main.ScreenToWorldPoint(Input.mousePosition));
lineRenderer.SetPosition(0, fingerPositions[0]);
lineRenderer.SetPosition(1, fingerPositions[1]);
edgeCollider.points = fingerPositions.ToArray();
}
void UpdateLine(Vector2 newFingerPos)
{
fingerPositions.Add(newFingerPos);
lineRenderer.positionCount++;
lineRenderer.SetPosition(lineRenderer.positionCount - 1,newFingerPos);
edgeCollider.points = fingerPositions.ToArray();
}
}