首页 > 解决方案 > 如何将对撞机添加到线渲染器?

问题描述

我是一个尝试制作这样的游戏的菜鸟https://youtu.be/qxwO1wyz50w?t=37,但我不知道如何向我的线渲染器添加碰撞。线渲染器会是解决这个问题的方法还是有更好的方法?

到目前为止,这是我的代码(我知道我也是编程新手)

public GameObject crossHair;
public LineRenderer line;
public Transform startPoint;

public GameObject lazer;

void Start()
{
    Cursor.visible = false;

}

void Update()
{
    crossHair.transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);

    if (Input.GetKeyDown(KeyCode.Mouse0))
    {
        LineSpawner();
        startPoint.position = crossHair.transform.position;
    }
}

void LineSpawner()
{
    
    Vector2 shootDir = crossHair.transform.position - startPoint.transform.position;
 
    GameObject lazerInstance = Instantiate(lazer);
    line = lazerInstance.GetComponent<LineRenderer>();

    line.SetPosition(0, startPoint.transform.position);
    line.SetPosition(1, crossHair.transform.position);


    Physics2D.Raycast(startPoint.transform.position, shootDir);
    Debug.DrawRay(startPoint.transform.position, shootDir, Color.red);
}

标签: unity3d

解决方案


不幸的是,您不能将碰撞器组件添加到线渲染器,但解决此问题的方法是创建另一个不可见的游戏对象并将其设为线本身的子对象。然后你想要做的是invoke("targetFunctionName", amountOfSeconds)在玩家击中它后使用该方法销毁对撞机游戏对象,这样游戏不会对那些在玩它时表现良好的人造成滞后。然后您要做的是向游戏对象添加物理材质并将其弹性属性设置为最大值(我认为是 1)。对玩家的游戏对象做同样的事情,你就完成了。


推荐阅读