4、Unity【基础】画线功能Linerenderer、物理系统Physics

在这里插入图片描述

画线功能Linerenderer

1、LineRenderer是什么

LineRenderer是Unity提供的一个用于画线的组件
使用它我们可以在场景中绘制线段
一般可以用于
1、绘制攻击范围 2、武器红外线 3、辅助功能 4、其它画线功能

2、LineRender参数相关

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3、LineRender代码相关

private Material m;
void Start()
{
   
    //动态添加一个线段
    GameObject line = new GameObject();
    line.name = "line";
    LineRenderer lineRenderer = line.AddComponent<LineRenderer>();
    //首尾相连
    lineRenderer.loop = true;
    //开始结束宽
    lineRenderer.startWidth = 0.02f;
    lineRenderer.endWidth = 0.02f;
    //开始结束颜色
    lineRenderer.startColor = Color.white;
    lineRenderer.endColor = Color.red;
    //设置材质
    m = Resources.Load<Material>("M");
    lineRenderer.material = m;
    //设置点的数量
    lineRenderer.positionCount = 4;
    lineRenderer.SetPositions(new Vector3[] {
    new Vector3(0, 0, 0),
    new Vector3(0, 0, 5),new Vector3(5, 0, 5)}); //批量设置
    lineRenderer.SetPosition(3, new Vector3(5, 0, 0)); //索引设置
    //是否使用世界坐标系
    //决定了是否随对象移动而移动
    lineRenderer.useWorldSpace = true;
    //让线段受光影响会接受光数据进行着色器计算
    lineRenderer.generateLightingData = true;
}

思考1 请写一个方法,传入一个中心点,传入一个半径,用LineRender画个圆出来

using UnityEngine;

public class CicleLine : MonoBehaviour
{
   
    void Start()
    {
   
        DrawCicleLine(Vector3.zero, 5, 360);
    }
    public void DrawCicleLine(Vector3 centerPos, float r, int pointNum)
    {
   
        //画线对象
        GameObject obj = new GameObject();
        obj.name = "R";
        LineRenderer cicleLine = obj.AddComponent<LineRenderer>();
        cicleLine.loop = true;
        //设置点
        cicleLine.positionCount = pointNum;
        //圆的单位弧度
        float angle = 360f / pointNum;
        //画圆
        for (int i = 0; i < pointNum; i++)
        {
   
            cicleLine.SetPosition(i, centerPos + Quaternion.AngleAxis(angle * i, Vector3.up) * Vector3.forward * r);
        }
    }
}

思考2 在Game窗口长按鼠标用LineRender画出鼠标移动的轨迹

using UnityEngine;

public class MouseLine : MonoBehaviour
{
   
    private LineRenderer DrawLine;
    //为了设置画线位置的横截面(距离)
    private Vector3 nowMousePos;
    void Update()
    {
   
        if(Input.GetMouseButtonDown(0))
        {
   
            GameOb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值