c#使用Unity粒子实现炮塔发射系统
作者:极客范儿 发布时间:2023-11-04 19:05:19
一、进行粒子效果生成练习
1、生成一个空项目
Assets->Import Package->Custom Package->SceneShot.unitypackage
2、创建一个粒子系统
GameObject->Effects->Particle System
在场景中创建一个粒子系统,并将其移动到场景中的Turret炮塔对象的发射管前
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
4、Emission属性更改参数
Rate over Time
:0Rate over Distance:0
Brusts
:
Time | Count | Cycles | Interval | Probability |
---|---|---|---|---|
0 | 1482 | infinite | 0.01 | 1 |
5、Shape属性更改参数
Shape:Sphere
Radius:3.52
Radius Thickness:0
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,
7、发射管粒子对象
(1)Hierarchy-〉Particle System-〉Edit-〉Duplicate,复制另一个粒子对象,并拖到另一个发射管前
(2)运行,察看粒子运行效果
(3)再次单击Play按钮,结束游戏。
(4)按Ctrl+S,保存场景
(5)将另一个发射管前的粒子参数做一个更改,观察二者的区别。如修改shape->shape,将值由Cone改为Sprte。
二、粒子系统参数总结
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(不透明)的材质可以接受阴影。
来源:https://blog.csdn.net/Prototype___/article/details/124073803


猜你喜欢
- 前言Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观
- 前言:发送邮件,肯定是每个公司都会有的基本业务。很多公司都会选择把发送邮件作为一个基础服务,对外提供接口。直接调用就可发邮件了。但是我们都知
- 本文实例为大家分享了Springboot整合pagehelper分页展示的具体代码,供大家参考,具体内容如下一、添加依赖查找maven中pa
- 本文实例讲述了Android编程之分辨率处理相关代码段。分享给大家供大家参考,具体如下:1. 通常我们所说的屏幕分辨率如800x480、96
- 背景在实际开发过程中,会遇到需要编写各类打印模板模板的需求,当然这些在WPF开发中更为常见,但是使用XAML写编辑的打印模板又不能直接发送给
- 这篇文章主要介绍了Java并发CopyOnWrite容器原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- WPF中有一个DrawingContext类,该类提供了很多画法方法,例如DrawLine,DrawText,DrawRectangle等。
- 前言前段时间因为工作的需要用到Spring事件,翻翻文档将功能实现了,但是存在少许理解不畅的地方,今天有空来梳理梳理。需求背景叶子同学在新入
- 对接前端后效果展示如图:1、CPU相关信息实体类/** * CPU相关信息 * * @author csp */public class
- 第一种方法:一、测试如下,直接设置小圆点不是图标二、准备工作1.在drawable创建dot.xml,设置小圆点,比较方便<?xml
- anroid 5.0 Design v7 包中引用了TabLayout 简单快速的写出属于自己的Tab切换效果 如图所示:但是正
- 本文实例为大家分享了C#实现简单的聊天窗体的具体代码,供大家参考,具体内容如下一、要使用(学习)到的知识点1、textBox控件(1)功能:
- 本文实例讲述了C#基于XNA生成随机颜色的方法。分享给大家供大家参考。具体分析如下:确保您使用的是Microsoft.Xna.Framewo
- HTTP 头处理HTTP 头是 HTTP 请求和响应中的重要组成部分。在创建 HTTP 请求时需要设置一些 HTTP 头。在得到 HTTP
- 图的实际应用在现实生活中,有许多应用场景会包含很多点以及点点之间的连接,而这些应用场景我们都可以用即将要学习的图这种数据结构去解决。地图:我
- 本文实例为大家分享了C++实现哈夫曼树的编码解码,供大家参考,具体内容如下代码:#pragma once#include<iostre
- 主要思想:将一个view设计成多层:背景层,含中奖信息等;遮盖层,用于刮奖,使用关联一个Bitmap的Canvas在该Bitmap上,使用它
- 实现比较两个List之间的差异,包括获取两List的差集,交集,并集(不去重&去重)的API解法和优化解法的解决方案。求差集/**
- protobuf对象不能直接使用jsonlib去转,因为protobuf生成的对象的get方法返回的类型有byte[],而只有String类
- preHandle: 预先处理,在目标的controller方法执行之前,进行处理postHandle: 在目标的con