c#使用Unity粒子实现炮塔发射系统

 更新时间:2022年04月26日 12:05:09   作者:极客范儿  
Unity自带粒子发射器、动画器、渲染器各两种,利用Unity的粒子系统制作一个炮塔发射系统,了解粒子系统,必须先了解每一个属性都代表了什么,之后才能根据这些原理来调整出自己满意的效果

一、进行粒子效果生成练习

1、生成一个空项目

Assets->Import Package->Custom Package->SceneShot.unitypackage

Particle-001

Particle-002

2、创建一个粒子系统

GameObject->Effects->Particle System

在场景中创建一个粒子系统,并将其移动到场景中的Turret炮塔对象的发射管前

Particle-003

3、更改粒子系统参数

Duration:3.32
Start Delay:1
Start Lifetime:1 - 10
Start Speed:Curve
Start Size:0.87
Start Rotation:180
Start Color:Gradent(#2EFE2E - #FFFFFF)
Simulation Space:Custom
Custom Simulation Space:Cube(Transform)
Max Particles:500

Particle-004

4、Emission属性更改参数

Rate over Time:0Rate over Distance:0

Brusts

TimeCountCyclesIntervalProbability
01482infinite0.011

Particle-005

5、Shape属性更改参数

Shape:Sphere

Radius:3.52

Radius Thickness:0

Particle-006

6、发射管相关参数

Inspector->Position: 通过鼠标移到两个发射管之一
Inspector->Ratation: x=0, y=0, z=0
Inspector->Particle System->Start Lifetime:0.5,
Max Particles:100
Inspector->Particle System->Emission->Rate:500
Inspector->Particle System->Shape:Cone, Angle:0.5
Inspector->Particle System->Velocity over Lifetime->打勾,Z: 10
Inspector->Particle System->Color over Lifetime->打勾,选红色
Inspector->Particle System->Renderer->打勾,
Render Mode:Stretched Billboard, Length Scale: 0.5,

Particle-007

7、发射管粒子对象

(1)Hierarchy-〉Particle System-〉Edit-〉Duplicate,复制另一个粒子对象,并拖到另一个发射管前

(2)运行,察看粒子运行效果

(3)再次单击Play按钮,结束游戏。

(4)按Ctrl+S,保存场景

(5)将另一个发射管前的粒子参数做一个更改,观察二者的区别。如修改shape->shape,将值由Cone改为Sprte。

Particle-008

二、粒子系统参数总结

1、主面板Particle System

Duration:粒子发射周期,意思就是在发射3.32秒以后进入下一个粒子发射周期。如果没有勾选looping的话,3.32秒之后粒子会停止发射。

Looping:粒子按照周期循环发射。

Prewarm:预热系统,比如说我有一个空间大小的粒子系统,但是粒子发射速度有限,我想在最开始的时候让粒子充满空间,此时就应该勾选Prewarm。

StartDelay:粒子延时发射,勾选后,延长一段时间才开始发射。

StartLifeTime:粒子从发生到消失的时间长短。

 

StartSpeed:粒子初始发生时候的速度。

3DStartSize:这个属性是当你需要把粒子在某一个方向上扩大的时候使用。

StartSize:粒子初始的大小。

3DStartRotation:需要在一个方向旋转了子的时候可以使用。

StartRotation:粒子初始旋转。

RandomizeRotation:随机旋转粒子方向,感觉在3D粒子的情况下,尤其是圆形的没什么用。

StartColor:粒子初始颜色,可以调整加上渐变色。

GravityModifier:重力修正。

SimulationSpace:a.Local,此时粒子会跟随父级物体移动。b.World,此时粒子不会跟随父级移动。c.Custom,粒子会跟着指定的物体移动。

 

 

SimulationSpeed:根据Update模拟的速度。

DeltaTime:一版的DeltaTime都是1,如果需要用到Sacled是在游戏需要暂停的时候,根据TimeManager来定。如果选择UnScale的话,就会忽略时间的影响。

ScalingMode:Local:粒子系统的缩放和自己Transform的一样会忽略父级的缩放。Hierarchy:粒子缩放跟随父级。Shape:将粒子系统跟随初始位置,但是不会影响粒子系统的大小。

MaxParticles:粒子系统可以同时存在的最大粒子数量。如果粒子书数量超过最大值粒子系统会销毁一部分粒子。

AutonRandomSeed:随机种子,如果勾选会生成完全不同不重复的粒子效果,如果勾选即为可重复。

2、Emission模块

RateOverTime:随单位时间生成粒子的数量。

RateOverDistance:随着移动距离产生的粒子数量。只有当粒子系统移动时,才发射粒子。

  • Bursts:

Time:从第几秒开始。

Min:最小粒子数量。

Max:最大的粒子数量,粒子的数量会在Min和Max之间随机。

Cycles:在一个周期中循环的次数。

Interval:两次两次Cycles的间隔时间。

3、Renderer模块

(1)RenderMode

  • Billboard:粒子总是面对相机。
  • StretchedBillboard:伸展板,可以根据相机、速度、长度来调节粒子的缩放。
  • HorizontalBillboard:粒子平面平行于Floor平面。
  • VerticalBillboard:粒子平面平行于世界坐标的Y轴,但是面向相机。
  • Mesh:将粒子渲染到网格上去。

(2)TrailMaterial:需要使用拖尾效果的时候,才附材质。

(3)Material:用于渲染粒子的材质。

(4)SortMode

  • ByDistance:根据粒子离相机的距离渲染。
  • OldestInFront:先渲染出来的在最上层。
  • YoungestInFront:后渲染出来的在最上层。

(5)SortingFudge:排序容差,仅影响整个系统在场景中出现的位置。Sorting值越小,就越容易粒子系统在其它透明的

(6)GameObjects上绘制的机会。

(7)Pivot:修改粒子渲染的轴点。

(8)VisualizePivot:可视化轴点。

Masking:

  • CustomVertexStreams:在材质的顶点着色器中配置哪些粒子属性可用
  • CastShadows:使用阴影。

ReceiveShadows:规定阴影是否可以投射到粒子上,只有Opaque(不透明)的材质可以接受阴影。

以上就是c#使用Unity粒子实现炮塔发射系统的详细内容,更多关于Unity粒子系统炮塔发射的资料请关注脚本之家其它相关文章!

相关文章

  • 详解如何通过C#/VB.NET调整PDF文档页边距

    详解如何通过C#/VB.NET调整PDF文档页边距

    PDF边距是页面主要内容区域和页面边缘之间的距离。与Word页边距不同,PDF文档的页边距很难更改。本文将介绍如何在不更改页面大小的情况下使用C#/VB.NET 代码调整PDF文档的页边距,需要的可以参考一下
    2023-04-04
  • 基于C#实现Ping工具类

    基于C#实现Ping工具类

    Ping是一种常用的测试网络连接的工具,可以测试网络延迟和连接状况,以及判断网络是否可用,本文将通过框架类库中的Ping类来实现Ping功能,感兴趣的小伙伴可以了解下
    2023-11-11
  • C#中String.PadRight方法的具体使用

    C#中String.PadRight方法的具体使用

    本文主要介绍了C#中String.PadRight方法的具体使用, 返回一个指定长度的新字符串,其中在当前字符串的结尾填充空格或指定的Unicode字符,下面就来详细的了解一下
    2024-01-01
  • C#多线程之Semaphore用法详解

    C#多线程之Semaphore用法详解

    这篇文章主要为大家详细介绍了C#多线程之Semaphore用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • WPF+ASP.NET SignalR实现简易在线聊天功能的示例代码

    WPF+ASP.NET SignalR实现简易在线聊天功能的示例代码

    这篇文章将以一个简单的聊天示例,简述如何通过WPF+ASP.NET SignalR实现消息后台通知,仅供学习分享使用,如有不足之处,还请指正
    2022-09-09
  • Unity代码实现序列帧动画播放器

    Unity代码实现序列帧动画播放器

    这篇文章主要为大家详细介绍了Unity代码实现序列帧动画播放器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • c#中XML解析文件出错解决方法

    c#中XML解析文件出错解决方法

    在解析xml时,经常因为文件中含特殊字符而解析失败。原因有两个:一是内容中含有XML预定义好的实体,二是内容中含有低位非打印字符
    2014-08-08
  • C#词法分析器之词法分析的使用详解

    C#词法分析器之词法分析的使用详解

    本篇文章介绍了,C#词法分析器之词法分析的使用详解。需要的朋友参考下
    2013-05-05
  • 基于c# 类、接口、结构的联系与区别详解

    基于c# 类、接口、结构的联系与区别详解

    本篇文章是对c#中类与接口以及结构的联系与区别进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • C#中ftp检测目录是否存在和创建文件夹的实现

    C#中ftp检测目录是否存在和创建文件夹的实现

    本文主要介绍了C#中ftp检测目录是否存在和创建文件夹的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07

最新评论