我正在尝试在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)超出范围。
答案 0 :(得分:0)
我想创建一个线索,该路径紧随播放器被“剪切”的位置。
“ 线索”一词表示您宁愿使用线索渲染器!
手册:https://docs.unity3d.com/Manual/class-TrailRenderer.html
API参考:https://docs.unity3d.com/ScriptReference/TrailRenderer.html
回到您的原始问题:
由于从Vector2到Vector3的转换,您的线性渲染器可能已渲染但处于随机位置,所以我不知道您的项目结构,但这是事实。
请发布一张带有您切割的游戏对象的图片,其中包含您的线性渲染器,并扩展线性渲染器上的位置标签,以便我们可以看到您的点xyz坐标