3D游戏第八次作业

2023-10-29

3D游戏第八次作业

一、简单粒子制作

  • 按参考资源要求,制作一个粒子系统,参考资源
  • 使用 3.3 节介绍,用代码控制使之在不同场景下效果不一样

1. 模拟烟花发射

效果展示:

实现:

给空对象挂载一个名为moveup的粒子系统模拟烟花发射

Emission控制粒子上升

设置Size over Lifetime上升过程中闪光

2. 模拟爆炸

效果展示 :

实现:

在一个对象上挂载一个粒子系统名为explosion,将形状设置为Sphere,然后设置Radius设置为0.01,Radius Thickness设置为0

设置Size over Lifetime模拟爆炸后效果,开始显示颜色后颜色逐渐变浅直至消失

3. 粒子光环

效果展示:

实现:

添加粒子系统

 public ParticleSystem particleSystem; 	//粒子系统对象
    public int particleNumber = 5000;       //最大粒子数
    public float pingPong = 0.05f;
    public float size = 0.05f;             //大小
    public float maxRadius = 10f;          //旋转半径
    public float minRadius = 4.0f;
    public float speed = 0.05f;             //运动速度
    private float[] particleAngle;
    private float[] particleRadius;
 
    private float time = 0;
    private ParticleSystem.Particle[] particlesArray;
 
    private Color[] changeColor = { new Color(255, 255, 255), new Color(255, 0, 0), new Color(255, 255, 0), new Color(0, 255, 0), new Color(0, 0, 255) };
    private float colorTimeOut = 0;

对粒子系统进行初始化位置:

void Start()
    {
        particleSystem = GetComponent<ParticleSystem>();
 
        particlesArray = new ParticleSystem.Particle[particleNumber];
        particleSystem.maxParticles = particleNumber;
        particleAngle = new float[particleNumber];
        particleRadius = new float[particleNumber];
 
        particleSystem.Emit(particleNumber);
        particleSystem.GetParticles(particlesArray);
 
        init();
 
        particleSystem.SetParticles(particlesArray, particlesArray.Length);
    }
 
void init()
    {
 
        for (int i = 0; i < particleNumber; i++)
        {
         
            float angle = Random.Range(0.0f, 360.0f);
        
            float rad = angle / 180 * Mathf.PI;
           
            float midRadius = (maxRadius + minRadius) / 2;
            float rate1 = Random.Range(1.0f, midRadius / minRadius);
            float rate2 = Random.Range(midRadius / maxRadius, 1.0f);
            float r = Random.Range(minRadius * rate1, maxRadius * rate2);
      
            particlesArray[i].size = size;
 
            particleAngle[i] = angle;
            particleRadius[i] = r;
      
            particlesArray[i].position = new Vector3(r * Mathf.Cos(rad), r * Mathf.Sin(rad), 0.0f);
        }
    }

控制粒子运动:

每一次Update的 colorTimeOut中都定义了一个循环。首先粒子会不断扩大,当粒子扩大到设置的相应的阈值后就会缩小,并且缩小的速度会大于放大的速度

void Update()
    {
        //每一个colorTimeOut实现一次缩放
        colorTimeOut += Time.deltaTime;
        for (int i = 0; i < particleNumber; i++)
        {
            time += Time.deltaTime;
            particlesArray[i].color = changeColor[(int)(colorTimeOut % 5)];
            particleRadius[i] += (Mathf.PingPong(time / minRadius / maxRadius, pingPong) - pingPong / 2.0f);
            if (i % 2 == 0)//放大
            {
                particleAngle[i] += speed * (i % 10 + 1);
            }
            else//缩小
            {
                particleAngle[i] -= speed * (i % 10 + 1);
            }
            particleAngle[i] = (particleAngle[i] + 360) % 360;
            float rad = particleAngle[i] / 180 * Mathf.PI;
 
            particlesArray[i].position = new Vector3(particleRadius[i] * Mathf.Cos(rad), particleRadius[i] * Mathf.Sin(rad), 0f);
        }
        particleSystem.SetParticles(particlesArray, particleNumber);
    }

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3D游戏第八次作业 的相关文章

  • 在sublime text中用终端来编译运行java

    在sublime text中用终端来编译运行java sublime text是一款非常优秀的轻量编辑器 今天就来给大家演示下如何用sublime来编译运行java 安装Terminus 首先需要在sublime中安装terminus这个终
  • JAVA学习之——计算机网络(背诵版)

    1 简述OSI七层协议 物理层 主要解决两台物理机之间的通信 通过二进制比特流的传输来实现 二进制数据表现为电流电压上的强弱 到达目的地再转化为二进制机器码 网卡 集线器工作在这一层 在局部局域网上传送数据帧 它负责管理计算机通信设备和网络
  • 【转】C语言的学习路线

    http topic csdn net u 20110922 08 391f0557 6bbc 490d 8394 b7dede44fa0e html seed 1927482974 r 75671683 r 75671683 UNIX下C
  • Java中判断两个类是否相等

    Java中判断两个类是否相等 当有参数的类生成对象时 当两个对象给的参数相同时 会将第二个对象指向第一个对象的地址 如实例中展示 会输出true public class test1 public static void main Stri
  • GLSL 程序与使用

    核心模式OpenGL GLSL程序 GLSL程序简介和在QT中向GLSL程序变量传递数据 数据类型 包含基本数据类型 int float double uint bool 两种容器类型 向量 Vector 标识符 含义 vecn n个flo
  • 宏任务与微任务

    首先执行顺序 同步任务 gt 异步任务 异步任务又分为 宏任务与微任务 所以整个顺序为 同步任务 gt 微观任务 gt 宏观任务 微观任务大概有Promise then Object observe MutationObserver pro
  • shinelon笔记本进bios设置u盘启动_系统重装U盘启动进BIOS按键查询

    点击蓝字 关注我们 总的来讲 设置电脑从U盘启动一共有两种方法 第一种是开机时候按快捷键然后选择U盘启动 第二种进Bios然后设置U盘 PART ONE 一 U盘启动 组装机主板 品牌笔记本 品牌台式机 主板品牌 启动按键 笔记本品牌 启动
  • WIN32_FIND_DATA、FILETIME、FindFirstFile对文件的操作

    WIN32 FIND DATA FILETIME对文件的操作 include stdafx h include
  • 解决Agora声网音视频在后台没有声音的问题

    前言 本文会介绍 Android 与 iOS 两个平台的处理方式 一 Android高版本在应用退到后台时 系统为了省电会限制应用的后台活动 因此我们需要开启一个前台服务 在前台服务中发送常驻任务栏通知 以此来保证App 退到后台时不会被限
  • 一篇文章看懂Oracle开窗函数

    聚合类开窗函数 聚合类开窗函数类似分组函数group by中的sum avg count max min 等等 但是开窗函数不会像分组聚合函数一样按照分组返回结果 而是有多少行记录就返回多少个结果 结果输出的形式是单独一列进行输出 举个例子
  • mqtt安卓客户端

    1 MQTT 消息队列遥测传输协议 是一种基于 发布 订阅 publish subscribe 模式的 轻量级 通讯协议 该协议构建于TCP IP协议上 MQTT最大优点在于 可以以极少的代码和有限的带宽 为连接远程设备提供实时可靠的消息服
  • 在职场中比能力更重要是什么?

    一个人能力很重要 但是比能力更重要的是一个人的人品 如果一个人的人品有问题 那么很难给予重任 如果只有能力 没有人品 人就会残缺不全 人品决定态度 态度决定行为 行为决定着最后的结果 没有一个公司会愿意重用一个人品欠缺的人 那么比能力更重要
  • 针对Java文档的搜索引擎

    针对Java文档的搜索引擎 项目介绍 项目模块划分及分析 1 索引模块 Parser 类核心业务 Index 核心业务 多线程制作索引 2 搜索模块 分词 生成描述 停用词 3 Web模块 展示 项目介绍 本项目是一个基于SpringBoo
  • CTFshow-菜狗杯-misc(1-6)

    杂项签到 flag直接放入16进制文件 用winhex工具打开直接搜ctfshow就可以了 ctrl F调出搜索框 注意选择ASCII编码 不是unicode 损坏的压缩包 更改文件类型 使用winhex打开 发现是png的格式特征 将文件
  • TASK9 Boosting

    Boosting PAC学习 概率近似正确学习 PAC总结理论 同等条件下 模型越复杂泛化误差越大 同一模型在样本满足一定条件的情况下 其数量越大 模型泛化误差越小 因此还可以说模型越复杂越吃样本 某个训练样本对正确目标的映射 而称为 概念
  • Microsoft Dynamics CRM 2013 试用之系统篇 正式安装 Microsoft Dynamics CRM Server 2013

    想学习Microsoft Dynamics CRM 建议从本人博客CRM中从早到晚日期 完整看一遍 然后再安装 安装需要的文件直接到微软官方下载 1 下载 Microsoft Dynamics CRM Server 2013 2 运行 Se
  • 深度学习语音降噪总结

    实时语音通信发展到今天 用户对通话语音质量提出了越来越高的要求 由于终端设备的多样性以及使用场景的差异 声音问题依然存在 传统的音频处理技术从声音信号本身出发 挖掘其时频特性 作出假设 建立物理模型 很多参数都需要人工进行精细化微调 比较费
  • can only concatenate list (not "str") to list 解决

    我的代码 info item title n item content n 写python代码出现这个提示的时候 can only concatenate list not str to list 该提示字面意思是 只能将list类型和li
  • ubuntu 相关命令记录

    检查ssh 是否可用 ssh 安装curl apt install curl 进入root 进入root 账号 sudo i 修改密码 sodo passwd 开启root 可远程连接 修改SSH配置文件 可以通过SSH配置文件更改包括端口
  • git clone出错问题解决

    一 git clone 报错 错误截图如下 原因分析 可能是数据太大了 http协议不支持 二 改用ssh方式检出代码 第一步 Git Bash工具生成ssh key ssh keygen o t rsa C your email exam

随机推荐

  • 江河湖库水系连通及水美乡村监测系统解决方案

    一 方案背景 随着我国城市规模化的扩张 城市水系统面积萎缩 水生态系统衰退 水环境质量恶化 河道淤塞甚至被侵占为建筑用地等问题日益凸显 河湖水系连通在城市河道治理中占据举足轻重的位置 水系连通及水美乡村建设项目 是水利部 财政部为解决农村水
  • JavaScript 算法系列---动态规划

    很久之前接触过这样一道题目 总共有十层阶梯 从1层开始往上爬 每次可以上1层或者2层 问到10层总共有多少种方法 思路 这个问题就是动态规划的一个经典例子 所谓动态规划 就是把复杂的问题进行拆解 拆解成一个个子问题 而这类问题最后非常适合使
  • C++ 学习之内建函数对象 - 算术仿函数(加减乘除、取反、取余)

    算数仿函数原型 template
  • 自定义图标iconfont

    阿里iconfont的使用 ui切好图上传到蓝狐 我们下载svg格式的图片 登陆iconfont官网 然后将自己取的iconfont的昵称也就是用户名给你们负责人说 叫他把你拉入图标管理库 这样才能共同开发 全部人各自定义自己的图标 不冲突
  • MySQL实操(四)——使用Haproxy+keeplived实现Mycat高可用

    MySQL实操系列 MySQL实操 一 CentOS7安装MySQL5 7及基础配置 DreamEhome的博客 CSDN博客 centos7 中安装mysql5 7配置表名忽略大小写 MySQL实操 二 MySQL主从同步实战 Dream
  • Labview操作串口-----------通过VISA驱动

    本篇文章将会详细介绍如何通过labview的VISA驱动模块来操作PC的串口 基于LABVIEW2012 VISA530full exe 1 首先需要安装LABVIEW 接下里安装VISA530驱动模块 否则编译本代码时会出现缺少VISA驱
  • STM32 四轴无人机设计——PPM控制无人机动作

    1 前言 前面两次我们成功的将PPM信号的读取 储存和油门处理完成了 这次我们要开始真正的控制无人机 首先我们要了解无人机前后 左右 旋转 升降的原理 2 动作原理 引用 https blog csdn net weixin 3570379
  • flutter get 命令行工具

    mac终端执行 flutter pub global activate get cli 这个安装完以后会提示英文提示你要把一个 目录添加到mac环境变量中 下面的目录是你安装完以后提示你放到环境变量里的目录 export PATH PATH
  • [MacOs]用外置硬盘制作MacOs系统盘

    文章目录 背景 设备 步骤 下载指定系统 制作启动盘 安装系统 背景 最近我的mac air出了点问题 经检查应该是硬盘问题 由于最近得待在老家没办法维修又需要用 只能用外置的硬盘做个系统盘来将就一下使用 设备 需要两个存储设备 不小于32
  • 马上:头疼:安卓黑屏,白屏,网卡,sdcard挂载等问题深入分析解决

    白屏 设备一段时间使用后 白屏 需要重启 经线上日志和以下相关代码初步分析是AMS 窗口显示问题 检查相关业务代码 发现Activity有可能被finish多次 导致失败 还有多次startActivity if isFinishing r
  • MySQL数据库误删回滚

    某次一不小心 用了delete from xxx 删除了几条重要数据 在网上找了很多方法 但都比较零散 打算记录本次数据找回的过程 大致分为以下几步 1 查看binlog是否开启 log bin是ON 就说明打开了 OFF就是关闭状态 以下
  • linux查看nginx安装路径

    linux查看nginx安装路径 有几种方法可以查看nginx的安装路径 使用which命令 which nginx 这个命令会返回nginx的二进制文件路径 一般也是安装路径 查看nginx的进程 得到安装路径 ps aux grep n
  • python爬虫高级教程,JS逆向之百度翻译

    环境 python版本号 系统 游览器 python 3 7 2 win7 google chrome 关于本文 本文将会通过爬虫的方式实现简单的百度翻译 本文中的代码只供学习 不允许作为于商务作用 商务作用请前往api fanyi bai
  • 浅谈控制反转(IoC)

    Inversion of Control 什么是控制反转 程序的流程控制权相对于传统的面向过程编程而言发生了反转 下面是维基百科的描述 In software engineering inversion of control IoC is
  • jest测试ajax,搭建Jest前端测试框架总结

    先说一下我要使用Jest的原因 由于开发提测了一个js的公共组件 需要测试人员对此组件的功能进行测试 因为提测的直接就是js文件 所以我们也就只能对其中的方法进行类白盒测试 知道了为什么测 那接下来就是怎么测 很容易的想到了需要一个测试框架
  • 60-200-040-使用-命令-MySQL查看引擎的命令

    文章目录 1 查看存储引擎 2 MySAM 和 InnoDB对比 1 查看存储引擎 mysql gt show ENGINES Engine Support
  • 调制与解调(1)——初认识

    在深入项目前 还需要对调制解调做深入学习 1 基本概念 调制 调制就是使一个信号 如光 高频电磁振荡等 的某些参数 如振幅 频率等 按照另一个欲传输的信号 如声音 图像等 的特点变化的过程 调制是通过改变高频载波的幅度 相位或者频率 使其随
  • 基于VS2019配置opencv4.0

    文章目录 1 前言 2 不说废话 直接上图干净利落 2 1 创建新空白项目 2 2 添加一个主文件 2 3 配置opencv环境 2 4 链接器配置 2 5 将opencv添加到计算机环境中 2 6 文件复制 3 运行测试环境 1 前言 不
  • 安信可SX1278LORA通讯试验

    LoRa 的名字是远距离无线电 Long Range Radio 作为一种线性调频扩频的调制技术 最早由法 国几位年轻人创立的一家创业公司 Cycleo 推出 2012 年 Semtech 收购了这家公司 并将这一调制技术 封装到芯片中 基
  • 3D游戏第八次作业

    3D游戏第八次作业 一 简单粒子制作 按参考资源要求 制作一个粒子系统 参考资源 使用 3 3 节介绍 用代码控制使之在不同场景下效果不一样 1 模拟烟花发射 效果展示 实现 给空对象挂载一个名为moveup的粒子系统模拟烟花发射 Emis