unity3d - 如何将对撞机添加到线渲染器?
问题描述
我是一个尝试制作这样的游戏的菜鸟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);
}
解决方案
不幸的是,您不能将碰撞器组件添加到线渲染器,但解决此问题的方法是创建另一个不可见的游戏对象并将其设为线本身的子对象。然后你想要做的是invoke("targetFunctionName", amountOfSeconds)
在玩家击中它后使用该方法销毁对撞机游戏对象,这样游戏不会对那些在玩它时表现良好的人造成滞后。然后您要做的是向游戏对象添加物理材质并将其弹性属性设置为最大值(我认为是 1)。对玩家的游戏对象做同样的事情,你就完成了。
推荐阅读
- c++ - 具有依赖类型的非静态数据成员的非限定名称是否依赖
- spring-boot - Spring Data JPA - findBy 映射对象
- python - 为每个唯一 ID 创建一个图
- git - 如何在拉取请求批准时解决 Azure 环境中的冲突
- python - 循环一个函数
- javascript - 如果 Map 中的键是数组,如何获取键的值?
- javascript - 如何将缓冲区数组转换为音频文件
- javascript - 尝试使用 Javascript 更改元素的 id
- javascript - Navigator.geoLocation.getCurrentPosition 无法正常工作的问题
- linux - puppet 删除一个目录并用一个链接替换它