Unity引擎学习笔记之【线条、拖尾操作】

线条、拖尾 Line&Trail

一、LIne Renderer组件

1、基本属性

  • 场景工具 包含基本的调整点和添加点

  • 循环:选择是否连接线段首尾

  • 位置:设置线段的位置,而Transform组件中并不是真正的位置

    • 大小:设置关键点数量
    • index X Y Z :设置线段上每一个关键点的位置

  • 宽度:设置整根线条的粗细,在曲线上双击可以添加锚点

  • 颜色:调整线条的颜色和透明度

  • 角顶点:设置拐角的顶点细分数,角顶点数越多过度越圆滑

  • 末端顶点 更改线段两端圆滑度

  • Materials 设置线段的材质纹理

2、自定义脚本

  • 获取LIne Renderer组件
    LineRenderer lineRenderer= GetComponent<LineRenderer>();
  • 设置线段属性

    • 设置线段锚点数
        lineRenderer.positionCount = 3;
    
    • 设置每个点的位置
    lineRenderer.positionCount = 3;
    lineRenderer.SetPosition(0, Vector3.zero);
    lineRenderer.SetPosition(0, Vector3.up);
    lineRenderer.SetPosition(0, Vector3.down);
    

    • 设置点数组的位置
    public void SetPositions (Vector3[] positions);
    public void SetPositions (NativeArray<Vector3> positions);
    public void SetPositions (NativeSlice<Vector3> positions);
    

二、Trail Renderer组件

1.基本属性

  • 宽度:设置拖尾线条的宽度

  • 时间:生成的拖尾留存的生命周期

  • 最小顶点距离:在移动多少距离范围内不生成拖尾

  • 自动销毁:拖尾动效完成后销毁本物体

  • 正在发射:拖尾正在生效中

  • 颜色:设置拖尾的颜色

2.自定义脚本

    
public class TrailRendererTest : MonoBehaviour
{
    public GameObject trailPrefab;  // 预制体用于创建轨迹效果(例如粒子系统)

    private GameObject currentTrail;  // 当前的轨迹对象
    private bool isTrailing;  // 是否正在绘制轨迹

    // 在每一帧更新轨迹的位置
    private void Update()
    {
        if (isTrailing)
        {
            UpdateTrailPosition();
        }
    }

    // 启动轨迹绘制
    public void StartTrailing()
    {
        if (!isTrailing)
        {
            CreateTrail();
            isTrailing = true;
        }
    }

    // 停止轨迹绘制
    public void StopTrailing()
    {
        if (isTrailing)
        {
            DestroyTrail();
            isTrailing = false;
        }
    }

    // 创建轨迹效果
    private void CreateTrail()
    {
        currentTrail = Instantiate(trailPrefab, transform.position, Quaternion.identity);
        currentTrail.transform.SetParent(transform);  // 将轨迹对象设置为当前对象的子对象
    }

    // 销毁轨迹对象
    private void DestroyTrail()
    {
        Destroy(currentTrail);
    }

    // 更新轨迹位置
    private void UpdateTrailPosition()
    {
        if (currentTrail != null)
        {
            currentTrail.transform.position = transform.position;
        }
    }
}

附1:LIne Renderer参数解释

变量



alignment 选择线是朝向摄像机还是变换组件的方向。
colorGradient 设置颜色渐变,用于描述线在其长度上各个点处的颜色。
endColor 设置线终点处的颜色。
endWidth 设置线终点处的宽度。
generateLightingData 配置线以生成法线和切线。借助此数据,场景光照可以通过法线贴图和 Unity 标准着色器或是您自己的定制着色器来影响线。
loop 将线的起点和终点位置连接在一起,以形成连续循环。
numCapVertices 将它设置为大于 0 的值,可在线的每端上获得圆角。
numCornerVertices 将它设置为大于 0 的值,可在线的每个细分段之间获得圆角。
positionCount 设置/获取顶点数。
shadowBias 应用阴影偏差以防止自我阴影瑕疵。指定的值是每一段的线宽比例。
startColor 设置线起点处的颜色。
startWidth 设置线起点处的宽度。
textureMode 选择线纹理的 U 坐标是进行平铺还是拉伸。
useWorldSpace 如果启用,则在世界空间中定义线。
widthCurve 设置曲线,用于描述线在其长度上各个点处的宽度。
widthMultiplier 设置一个整体乘数,它应用于 LineRenderer.widthCurve 以获取线的最终宽度。
公共函数


BakeMesh 创建 LineRenderer 的快照并将其存储在 mesh 中。
GetPosition 获取线中某个顶点的位置。
GetPositions 获取线中所有顶点的位置。
SetPosition 设置线中某个顶点的位置。
SetPositions 设置线中所有顶点的位置。
Simplify 通过删除处于指定公差内的点来生成原始线的简化版本。

继承的成员

变量


gameObject 此组件附加到的游戏对象。始终将组件附加到游戏对象。
tag 此游戏对象的标签。
transform 附加到此 GameObject 的 Transform。
hideFlags 该对象应该隐藏、随场景一起保存还是由用户修改?
name 对象的名称。
allowOcclusionWhenDynamic 控制是否应对该渲染器执行动态遮挡剔除。
bounds The bounding box of the renderer in world space.
enabled 如果启用,则使渲染的 3D 对象可见。
forceRenderingOff 允许关闭特定组件的渲染。
isPartOfStaticBatch Indicates whether the renderer is part of a static batch with other renderers.
isVisible 该渲染器是否在任何摄像机中可见?(只读)
lightmapIndex 应用到该渲染器的烘焙光照贴图的索引。
lightmapScaleOffset 用于光照贴图的 UV 缩放和偏移。
lightProbeProxyVolumeOverride 如果设置,则渲染器将使用附加到源 GameObject 的 Light Probe Proxy Volume 组件。
lightProbeUsage 光照探针插值类型。
localBounds The bounding box of the renderer in local space.
localToWorldMatrix 将点从本地空间转换到世界空间的矩阵(只读)。
material 返回指定给渲染器的第一个实例化 Material。
materials 返回该对象的所有实例化材质。
motionVectorGenerationMode 指定运动矢量渲染的模式。
probeAnchor 如果设置,渲染器将使用该变换的位置来查找光源或反射探针。
rayTracingMode 描述如何更新该渲染器来进行射线追踪。
realtimeLightmapIndex The index of the real-time lightmap applied to this renderer.
realtimeLightmapScaleOffset The UV scale & offset used for a real-time lightmap.
receiveShadows 该对象是否接受阴影?
reflectionProbeUsage 是否应为该渲染器使用反射探针?
rendererPriority 此值按优先级对渲染器排序。首先渲染较小值,最后渲染较大值。
renderingLayerMask 确定该渲染器所在的渲染层。
shadowCastingMode 该对象是否投射阴影?
sharedMaterial 该对象的共享材质。
sharedMaterials 该对象的所有共享材质。
sortingLayerID 渲染器排序图层的唯一 ID。
sortingLayerName 渲染器排序图层的名称。
sortingOrder 排序图层中的渲染器顺序。
staticShadowCaster Is this renderer a static shadow caster?
worldToLocalMatrix 将点从世界空间转换到本地空间的矩阵(只读)。
公共函数


BroadcastMessage 调用此游戏对象或其任何子项中的每个 MonoBehaviour 上名为 methodName 的方法。
CompareTag Checks the GameObject’s tag against the defined tag.
GetComponent Returns the component of type if the GameObject has one attached.
GetComponentInChildren Returns the Component of type in the GameObject or any of its children using depth first search.
GetComponentInParent Returns the Component of type in the GameObject or any of its parents.
GetComponents 返回 GameObject 中类型为 type 的所有组件。
GetComponentsInChildren Returns all components of Type type in the GameObject or any of its children using depth first search. Works recursively.
GetComponentsInParent 返回 GameObject 或其任何父项中类型为 type 的所有组件。
SendMessage 调用此游戏对象中的每个 MonoBehaviour 上名为 methodName 的方法。
SendMessageUpwards 调用此游戏对象中的每个 MonoBehaviour 上或此行为的每个父级上名为 methodName 的方法。
TryGetComponent 获取指定类型的组件(如果存在)。
GetInstanceID Gets the instance ID of the object.
ToString 返回对象的名称。
GetClosestReflectionProbes 返回一个数组,其中包含带有权重的最近反射探针。权重显示探针对渲染器的影响程度,当反射探针之间发生混合时,也会用到该值。
GetMaterials 返回该对象的所有实例化材质。
GetPropertyBlock 获取每渲染器或每材质的属性块。
GetSharedMaterials 返回该对象的所有共享材质。
HasPropertyBlock 如果渲染器具有通过 SetPropertyBlock 附加的材质属性块,则返回 true。
ResetBounds Reset custom world space bounds.
ResetLocalBounds Reset custom local space bounds.
SetPropertyBlock 允许您设置或清除每渲染器或每材质参数重写。
静态函数


Destroy 移除 GameObject、组件或资源。
DestroyImmediate 立即销毁对象 /obj/。强烈建议您改用 Destroy。
DontDestroyOnLoad 在加载新的 Scene 时,请勿销毁 Object。
FindObjectOfType 返回第一个类型为 type 的已加载的激活对象。
FindObjectsOfType Gets a list of all loaded objects of Type type.
Instantiate 克隆 original 对象并返回克隆对象。
运算符


bool 该对象是否存在?
operator != 比较两个对象是否引用不同的对象。
operator == 比较两个对象引用,判断它们是否引用同一个对象。
消息


OnBecameInvisible OnBecameInvisible 在对象对任何摄像机都不可见时调用。
OnBecameVisible OnBecameVisible 在对象变为对任意摄像机可见时调用。

附2:Trail Renderer参数解释

变量



alignment 选择轨迹是朝向摄像机还是变换组件的方向。
autodestruct 此轨迹渲染器的 GameObject 是否自动销毁?
colorGradient 设置颜色渐变,用于描述轨迹在其长度上各个点处的颜色。
emitting 创建 GameObject 移动时的轨迹。
endColor 设置轨迹终点处的颜色。
endWidth 轨迹终点处的轨迹宽度。
generateLightingData 配置轨迹以生成法线和切线。借助此数据,场景光照可以通过法线贴图和 Unity 标准着色器或是您自己的定制着色器来影响轨迹。
minVertexDistance 设置轨迹在新顶点添加到其中之前可以行进的最小距离。
numCapVertices 将它设置为大于 0 的值,可在轨迹的每端上获得圆角。
numCornerVertices 将它设置为大于 0 的值,可在轨迹的每个细分段之间获得圆角。
positionCount 获取轨迹中的线细分段数。
shadowBias 应用阴影偏差以防止自我阴影瑕疵。指定的值是每一段的轨迹宽度比例。
startColor 设置轨迹起点处的颜色。
startWidth 生成点处的轨迹宽度。
textureMode 选择轨迹纹理的 U 坐标是进行平铺还是拉伸。
time 轨迹淡出需要的时间。
widthCurve 设置曲线,用于描述轨迹在其长度上各个点处的宽度。
widthMultiplier 设置一个整体乘数,它应用于 TrailRenderer.widthCurve 以得到轨迹的最终宽度。
公共函数


AddPosition 向轨迹添加位置。
AddPositions 向轨迹添加位置数组。
BakeMesh 创建 TrailRenderer 的快照并将其存储在 mesh 中。
Clear 删除 TrailRenderer 中的所有点。 对于从新位置重新开始轨迹非常有用。
GetPosition 获取轨迹中某个顶点的位置。
GetPositions 获取轨迹中所有顶点的位置。
SetPosition 设置轨迹中某个顶点的位置。
SetPositions 设置轨迹中所有顶点的位置。

继承的成员

变量


gameObject 此组件附加到的游戏对象。始终将组件附加到游戏对象。
tag 此游戏对象的标签。
transform 附加到此 GameObject 的 Transform。
hideFlags 该对象应该隐藏、随场景一起保存还是由用户修改?
name 对象的名称。
allowOcclusionWhenDynamic 控制是否应对该渲染器执行动态遮挡剔除。
bounds The bounding box of the renderer in world space.
enabled 如果启用,则使渲染的 3D 对象可见。
forceRenderingOff 允许关闭特定组件的渲染。
isPartOfStaticBatch Indicates whether the renderer is part of a static batch with other renderers.
isVisible 该渲染器是否在任何摄像机中可见?(只读)
lightmapIndex 应用到该渲染器的烘焙光照贴图的索引。
lightmapScaleOffset 用于光照贴图的 UV 缩放和偏移。
lightProbeProxyVolumeOverride 如果设置,则渲染器将使用附加到源 GameObject 的 Light Probe Proxy Volume 组件。
lightProbeUsage 光照探针插值类型。
localBounds The bounding box of the renderer in local space.
localToWorldMatrix 将点从本地空间转换到世界空间的矩阵(只读)。
material 返回指定给渲染器的第一个实例化 Material。
materials 返回该对象的所有实例化材质。
motionVectorGenerationMode 指定运动矢量渲染的模式。
probeAnchor 如果设置,渲染器将使用该变换的位置来查找光源或反射探针。
rayTracingMode 描述如何更新该渲染器来进行射线追踪。
realtimeLightmapIndex The index of the real-time lightmap applied to this renderer.
realtimeLightmapScaleOffset The UV scale & offset used for a real-time lightmap.
receiveShadows 该对象是否接受阴影?
reflectionProbeUsage 是否应为该渲染器使用反射探针?
rendererPriority 此值按优先级对渲染器排序。首先渲染较小值,最后渲染较大值。
renderingLayerMask 确定该渲染器所在的渲染层。
shadowCastingMode 该对象是否投射阴影?
sharedMaterial 该对象的共享材质。
sharedMaterials 该对象的所有共享材质。
sortingLayerID 渲染器排序图层的唯一 ID。
sortingLayerName 渲染器排序图层的名称。
sortingOrder 排序图层中的渲染器顺序。
staticShadowCaster Is this renderer a static shadow caster?
worldToLocalMatrix 将点从世界空间转换到本地空间的矩阵(只读)。
公共函数


BroadcastMessage 调用此游戏对象或其任何子项中的每个 MonoBehaviour 上名为 methodName 的方法。
CompareTag Checks the GameObject’s tag against the defined tag.
GetComponent Returns the component of type if the GameObject has one attached.
GetComponentInChildren Returns the Component of type in the GameObject or any of its children using depth first search.
GetComponentInParent Returns the Component of type in the GameObject or any of its parents.
GetComponents 返回 GameObject 中类型为 type 的所有组件。
GetComponentsInChildren Returns all components of Type type in the GameObject or any of its children using depth first search. Works recursively.
GetComponentsInParent 返回 GameObject 或其任何父项中类型为 type 的所有组件。
SendMessage 调用此游戏对象中的每个 MonoBehaviour 上名为 methodName 的方法。
SendMessageUpwards 调用此游戏对象中的每个 MonoBehaviour 上或此行为的每个父级上名为 methodName 的方法。
TryGetComponent 获取指定类型的组件(如果存在)。
GetInstanceID Gets the instance ID of the object.
ToString 返回对象的名称。
GetClosestReflectionProbes 返回一个数组,其中包含带有权重的最近反射探针。权重显示探针对渲染器的影响程度,当反射探针之间发生混合时,也会用到该值。
GetMaterials 返回该对象的所有实例化材质。
GetPropertyBlock 获取每渲染器或每材质的属性块。
GetSharedMaterials 返回该对象的所有共享材质。
HasPropertyBlock 如果渲染器具有通过 SetPropertyBlock 附加的材质属性块,则返回 true。
ResetBounds Reset custom world space bounds.
ResetLocalBounds Reset custom local space bounds.
SetPropertyBlock 允许您设置或清除每渲染器或每材质参数重写。
静态函数


Destroy 移除 GameObject、组件或资源。
DestroyImmediate 立即销毁对象 /obj/。强烈建议您改用 Destroy。
DontDestroyOnLoad 在加载新的 Scene 时,请勿销毁 Object。
FindObjectOfType 返回第一个类型为 type 的已加载的激活对象。
FindObjectsOfType Gets a list of all loaded objects of Type type.
Instantiate 克隆 original 对象并返回克隆对象。
运算符


bool 该对象是否存在?
operator != 比较两个对象是否引用不同的对象。
operator == 比较两个对象引用,判断它们是否引用同一个对象。
消息


OnBecameInvisible OnBecameInvisible 在对象对任何摄像机都不可见时调用。
OnBecameVisible OnBecameVisible 在对象变为对任意摄像机可见时调用。

你可能感兴趣的:(#,Unity学习笔记,unity,学习,笔记)