当前位置: 首页 > news >正文

unity学习笔记

一、射线检测

如何让鼠标点击某个位置,游戏角色就能移动到该位置?

实现的原理分析:我们能看见游戏的东西就是摄像机拍摄到的东西,所以摄像机的镜平面就是当前能看到的了。

那接下来我们可以让摄像机发射一条射线,鼠标点击哪个位置就打在哪个位置,这样就可以通过射线来获取点击的位置。

创建射线的方式
Ray ray = new Ray(Vector3.zero, Vector3.up);

第一个参数:origin(起始点): 射线的起始点,即射线从哪个点开始。在这个例子中,Vector3.zero 表示射线的起始点是三维空间中的原点 (0, 0, 0)

第二个参数:direction(方向): 射线的方向,即射线沿着哪个方向延伸。在这个例子中,Vector3.up 表示射线向上延伸。
Ray  ray = Camera.main.ScreenPointToRay(Input.mousePosition);

参数表示:Input.mousePosition 表示当前鼠标的屏幕坐标,ScreenPointToRay 将这个屏幕坐标转换为一条从摄像机位置发射的射线。

现在来实现获取到鼠标点击的坐标
void Update()
    {
        //方式2
        if (UnityEngine.Input.GetMouseButtonDown(0))
        {
            //按下鼠标左键发射射线
            Ray ray = Camera.main.ScreenPointToRay(UnityEngine.Input.mousePosition);
            // 声明一个碰撞信息类,被点击的游戏物体上必须有碰撞器存在。
            RaycastHit hit;
            //碰撞检测
            bool res = Physics.Raycast(ray, out hit);
            //如果碰撞到的情况下,hit就有内容了
            if (res == true)
            {
                Debug.Log(hit.point);
                transform.position = hit.point;
            }

        }
    }

这样就实现了鼠标点击哪个位置就移动到哪个位置。

二、粒子系统

Unity中的粒子系统是一种强大的工具,用于模拟和渲染大量的小粒子,如火花、烟雾、雨滴等效果。

创建方式:右键→新建→效果→粒子系统。

1.粒子系统的基本组成部分:
Emitter(发射器)︰定义了粒子的发射方式,包括发射速度、方向、形状等。一个粒子系统可以有多个发射器。
Particle(粒子)︰粒子是粒子系统中的基本元素,它们在场景中移动和改变外观。每个粒子都有自己的寿命、颜色、大小等属性。
Module(模块)︰模块是粒子系统的可配置部分,用于定义粒子的各种属性和行为

2.Unity粒子系统的常用模块:

发射器模块(Emitter Module):控制粒子的发射方式,包括发射速度、方向、形状等。

主模块(Main Module) :定义了整个粒子系统的主要属性,如开始速度、开始颜色、生命周期等。

颜色过渡模块(Color over Lifetime Module) :控制粒子的颜色随时间变化。

大小过渡模块(Size over Lifetime Module) :控制粒子的大小随时间变化。

速度过渡模块(Velocity over Lifetime Module) :控制粒子的速度随时间变化。

旋转过渡模块((Rotation over Lifetime Module) :控制粒子的旋转随时间变化。

外部力模块(External Forces Module) :允许外部力对粒子系统产生影响,如风力重力等。

示例:做一个火焰效果。

将渲染器的材质改为火焰

将起始生命周期改为1.

将随单位时间产生的粒子数改为50

将形状中的角度修改为0,半径改为0.1。

将生命周期内大小改为从大到小。

        

将生命周期内颜色改为最开始改为红色末尾改为黄色。

最后效果:

http://www.lryc.cn/news/250318.html

相关文章:

  • 使用SpringBoot和ZXing实现二维码生成与解析
  • C++模板—函数模板、类模板
  • Monkey
  • SQL中left join、right join、inner join等的区别
  • 算法学习—排序
  • 在Pycharm中创建项目新环境,安装Pytorch
  • linux里source、sh、bash、./有什么区别
  • IDEA编译器技巧-提示词忽略大小写
  • 【MySQL】MySQL安装 环境初始化
  • C# IList 与List区别二叉树的层序遍历
  • 助力android面试2024【面试题合集】
  • 【动态规划】LeetCode-62.不同路径
  • 对 Vision Transformers 及其基于 CNN-Transformer 的变体的综述
  • MongoDB简介
  • 尚硅谷hadoop3.x课程部分资料文件下载,jdk,hadoopjar包
  • vue el-radio-group多选封装及使用
  • Kaggle-水果图像分类银奖项目 pytorch Densenet GoogleNet ResNet101 VGG19
  • TPLink-Wr702N 通过OpenWrt系统打造打印服务器实现无线打印
  • [UGUI]实现从一个道具栏拖拽一个UI道具到另一个道具栏
  • 微服务--08--Seata XA模式 AT模式
  • Doris 数据导入一:Broker Load 方式
  • docker踩坑记录:docker容器创建doris容器间无法通讯问题
  • springboot+java校园自助洗衣机预约系统的分析与设计ssm+jsp
  • TCP简介及特性
  • ElasticSearch 排障常用方法
  • 【SA8295P 源码分析 (四)】136 - QNX 如何抓取系统 log 方法 之 网络部分日志抓取方法
  • 传统算法:使用Pygame实现SVM(支持向量机)算法
  • cookie wzws_sess** 逆向
  • JIRA 基本使用
  • 什么是JVM的内存模型?详细阐述Java中局部变量、常量、类名等信息在JVM中的存储位置