【问题标题】:How would I add a collider to a line renderer?如何将对撞机添加到线渲染器?
【发布时间】:2021-06-29 00:20:16
【问题描述】:

我是一个尝试制作像 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


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复。有机会一定会试一试的。
    • 如何将子游戏对象缩放到我的线渲染器线的长度?
    • 你将线条渲染器 + 隐形游戏对象设为预制件,它会自动设置其大小。
    • 我试图用一个空的游戏对象和一个盒子碰撞器使它成为一个预制件,但不幸的是碰撞器没有缩放到线渲染器的长度。当我检查线渲染器对象时,它说比例没有改变并且保持其原始的变换和比例。
    • @pip 你需要做的是绘制线渲染器并制作一个空的游戏对象并将一个盒子碰撞器添加到空的游戏对象,然后使空的游戏对象成为 linerenderer 游戏对象的子对象。将其大小设置为线渲染器大小和宽度和长度等。然后用你的脚本计算你的线的第一个点和第二个点之间的角度。然后让它设置空的游戏对象 Z 轴角度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多