Нарисуйте линию и добавьте к ней коллайдер - PullRequest
0 голосов
/ 21 апреля 2019

Я хотел бы знать, как я могу нарисовать линию, которая содержит коллайдер.Я пытаюсь сделать что-то подобное:

enter image description here

Я следовал этому уроку на сайте: https://unitycoder.com/blog/2017/09/23/drawing-2d-lines-and-adding-collider-to-it/

Но это не такДля того, чтобы работать, как я ожидал, линия рисуется, но объект, который должен сталкиваться с линией, не сталкивается.

Что мне нужно изменить в моем коде?

Код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DrawLine2D : MonoBehaviour
{
    [SerializeField]
    protected LineRenderer m_LineRenderer;
    [SerializeField]
    protected bool m_AddCollider = false;
    [SerializeField]
    protected EdgeCollider2D m_EdgeCollider2D;
    [SerializeField]
    protected Camera m_Camera;
    protected List<Vector2> m_Points;


    protected virtual void Awake ()
    {
        if ( m_Camera == null ) {
            m_Camera = Camera.main;
        }
        m_Points = new List<Vector2> ();
    }

    protected virtual void Update ()
    {
        if ( Input.GetMouseButtonDown ( 0 ) )
        {
            Reset ();
        }
        if ( Input.GetMouseButton ( 0 ) )
        {
            Vector2 mousePosition = m_Camera.ScreenToWorldPoint ( Input.mousePosition );
            if ( !m_Points.Contains ( mousePosition ) )
            {
                m_Points.Add ( mousePosition );
                m_LineRenderer.positionCount = m_Points.Count;
                m_LineRenderer.SetPosition ( m_LineRenderer.positionCount - 1, mousePosition );
                if ( m_EdgeCollider2D != null && m_AddCollider && m_Points.Count > 1 )
                {
                    m_EdgeCollider2D.points = m_Points.ToArray ();
                }
            }
        }
    }

    protected virtual void Reset ()
    {
        if ( m_LineRenderer != null )
        {
            m_LineRenderer.positionCount = 0;
        }
        if ( m_Points != null )
        {
            m_Points.Clear ();
        }
        if ( m_EdgeCollider2D != null && m_AddCollider )
        {
            m_EdgeCollider2D.Reset ();
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...