为什么我的线条渲染器没有显示在Unity 2D中

时间:2019-07-29 03:24:22

标签: c# unity3d

我正在尝试在Unity 2D上创建一个《水果忍者》风格的游戏,并且我想创建一条跟随玩家“切入”的轨迹。我试图实例化每次用户拖动时包含线条渲染器的“剪切”对象。但是,线条渲染器未显示。任何人都可以纠正任何错误或建议新方法吗?

public class CreateCuts : MonoBehaviour
{
public GameObject cut;
public float cutDestroyTime;

private bool dragging = false;
private Vector2 swipeStart;

// Update is called once per frame
void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        dragging = true;
        swipeStart = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    }
    else if (Input.GetMouseButtonUp(0) && dragging)
    {
        createCut();
    }
}

private void createCut()
{
    this.dragging = false;
    Vector2 swipeEnd = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    GameObject cut = Instantiate(this.cut, this.swipeStart, Quaternion.identity) as GameObject;
    cut.GetComponent<LineRenderer>().positionCount = 1 ;
    cut.GetComponent<LineRenderer>().enabled = true;
    cut.GetComponent<LineRenderer>().SetPosition(0, this.swipeStart);
    cut.GetComponent<LineRenderer>().SetPosition(1, swipeEnd);
    Vector2[] colliderPoints = new Vector2[2];
    colliderPoints[0] = new Vector2(0.0f, 0.0f);
    colliderPoints[1] = swipeEnd - swipeStart;
    cut.GetComponent<EdgeCollider2D>().points = colliderPoints;
    Destroy(cut.gameObject, this.cutDestroyTime);
}

}

我希望有一行,但是什么也没出现。还有一条警告指出SetPosition(1,swipeEnd)超出范围。

1 个答案:

答案 0 :(得分:0)

我想创建一个线索,该路径紧随播放器被“剪切”的位置。

线索”一词表示您宁愿使用线索渲染器!

手册:https://docs.unity3d.com/Manual/class-TrailRenderer.html

API参考:https://docs.unity3d.com/ScriptReference/TrailRenderer.html

回到您的原始问题:

由于从Vector2到Vector3的转换,您的线性渲染器可能已渲染但处于随机位置,所以我不知道您的项目结构,但这是事实。

请发布一张带有您切割的游戏对象的图片,其中包含您的线性渲染器,并扩展线性渲染器上的位置标签,以便我们可以看到您的点xyz坐标