我已按照本教程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();
}
}