unity 3D 自学笔记

2023-11-06

刚开始

创建一个正方体

在这里插入图片描述窗口布局
在这里插入图片描述
恢复默认窗口
在这里插入图片描述
在这里插入图片描述

场景

默认场景中只有一个主摄像机和平行光源

3D物体

  • Duplicate 复制
  • Delete 删除

3D视图

  • 导航器 Gizmo,表示世界坐标的方向
  • 栅格 Grid,表示XZ坐标平面
  • 天空盒 Skybox , 表示游戏世界的背景

在这里插入图片描述

视角中心

出生点:添加一个新物体,物体位于视图中心
想绕着一个物体旋转,按下F键

透视与正交

正交视图,又称为等距视图,物体显示与距离无关
在这里插入图片描述
对齐用的
有些角度看球体就像椭圆一样,这种现象叫透视畸变,改变相机广角可以减少
在这里插入图片描述

3D物体

  • Cube 正方体
  • Sphere 球体
  • Capsule 胶囊体
  • Cylinder 圆柱体
  • Plane 平面

Unity尺寸单位 约定是1米
在这里插入图片描述
按下ctrl旋转的时候,一个增量是15°
在这里插入图片描述
快捷键w、E、R切换

操作

ctrl + D 复制物体
激活或禁用物体
在这里插入图片描述

AF小插件

AF扩展插件,AfSimpleExtension.cs

网格

网格Mesh 储存了模型的形状
在这里插入图片描述

材质

  • 颜色
  • 金属、非金属
  • 光滑、粗糙
  • 透明、半透明、不透明
  • 凹陷、凸起

创建材质
右键->create->Material

在这里插入图片描述

纹理

在这里插入图片描述
在这里插入图片描述
所有平面都是正面可见背面透明的

FBX使用

  • Mesh网格,定义物品形状
  • Material材质,定义表面的光学特性
  • Texture贴图,定义表面的像素颜色

在这里插入图片描述
** 跳转到模型文件**

贴图文件

  • 有的模型需要贴图文件
  • 贴图文件的路径是约定好的
  • 与fbx相同目录,或者同级Textures目录

材质

  • 有的模型定义了多个材质
  • 在Materials属性中定义了一个数组
    在这里插入图片描述
    重映射
    在这里插入图片描述
    材质替换

资源文件

常见类型

  • 模型文件 Model(*.fbx)
  • 图片文件Texture(*.jpg/png/psd/tif)
  • 音频文件AudioClip(*.mp3/wav/aiff)
  • 脚本文件Script(*.cs)
  • 材质文件*.map,场景文件*.unity …
  • 描述文件 *.meta

在文件夹窗口查看 Show in Explorer
复制资源ctrl + D

场景

一个场景代表一个关卡,可以创建多个场景
包含

  • 场景全局设置
  • 节点
  • 节点下的组件
  • 每个组件的参数

资源包

资源包Unity Package,即对Assets下的资源打包
演示:

  • 选择一个资源文件,或者一个目录
  • 右键,Export Package…
  • 生成*.unitypackage资源包

unity资源商店

父子节点

空节点

Global 与 Local

  1. Global 即世界坐标系
  2. Local,即本地坐标系
    y轴成为up,z轴称为forward,x轴称为right

Pivot 与 Center

pivot 轴心模式
Center几何中心点

组件

组件Component,代表一个功能
例如:

  • Light,光源
  • Mesh Filter,网格过滤器
  • Mesh Renderer,网格渲染器

AudioSource组件

AudioSource组件,用于播放音乐、音效

  1. 添加一个音乐文件,*.mp3/wav/aiff
  2. 创建一个物体
  3. ADD Component,Audio|Audio Source
  4. 将音乐文件拖到AudioSource.AudioClip属性
  5. 在3D窗口上方,选Toggle Audio On

相机

摄像机 Camera负责拍摄游戏画面

  1. 调整窗口布局,Scence/Game并排显示
  2. 选中摄像机,观察镜头范围
  3. 摄像机Z轴指向,即为拍摄方向
  4. 拍到的画面,呈现在Game窗口中

将摄像机到观察者视角 Align with View

脚本

脚本 Script,用于驱动游戏逻辑
在SimpleLogic.cs中获取当前物体

  1. this , 当前物体
  2. this.gameObject , 当前物体
  3. this.gameObject.name,当前物体名字
  4. this.gameObject.transform,当前物体下的Transform组件,为了简化书写,也可以写作this.transfrom 。

获取坐标脚本

 void Start()
    {
        
        GameObject obj = this.gameObject;
        string objname=obj.name;
        Debug.Log(objname+"名字");
        
        Transform tr=this.gameObject.transform;
        Vector3 pos=this.gameObject.transform.position;
        Debug.Log("坐标"+pos.ToString("F3"));
    }

物体坐标

  • transform.position,世界坐标
  • transform.localPosition,本地坐标
    为了简化写法 this.transform.position
    设置物体坐标
this.transform.localPosition=new Vector3(1.5f,0,2.0f);

其中f是float型的数值,书写以f结尾

播放模式

  • Edit Mode编辑模式
  • Play Mode,播放/运行/ 模式

帧更新

Frame,一个游戏帧
FrameRate,帧率
FPS

帧率观察

  • Time.time,游戏时间
  • Time.deltaTime,据上次更新的时间差

设置一个近似帧率
Application.targetFrameRate=60;
尽量设置一个60帧运行

移动

   void Update()
    {
        Vector3 vector3=this.transform.localPosition;
        vector3.x+=0.01f;
        this.transform.localPosition=vector3;
    }

匀速运动
deltaTime,让物体匀速运动

float speed=3;
        float distance= speed*Time.deltaTime;
        Vector3 vector3=this.transform.localPosition;
        vector3.x+=distance;
        this.transform.localPosition=vector3;

相对移动

  • transform.Translate(),可以实现物体的运动
  • transform.Translate(dx,dy,dz,space)

其中第四个参数:

  • Space.World相对于世界坐标系
  • Space.Self相对于自身坐标系

1获取目标物体
GameObject flag=GameObject.Find(“红旗”);
2转向目标
this.transform.LookAt(flag.transform);
3向前运动
this.transform.Translate(0,0,dz,Space.Self)

粒子效果

粒子的颜色、大小、旋转、速度、受力、噪音、拖尾、碰撞、灯光等
粒子系统 Particle System
添加一个粒子效果 Effects|Particle System
去掉黄色小框演示
在这里插入图片描述
22个字模块,默认启动Emission/Shape/Render三个模块(发射频率,粒子发生器的形状,粒子显示)
在这里插入图片描述
以后可能用到的size over lifetime(启用更多粒子)

  • start color,粒子初始颜色
  • start speed,粒子初始速度
  • start size,粒子初始大小

广告牌

广告牌 Billboard
修改材质,过滤黑色为透明材质
在这里插入图片描述
在这里插入图片描述黑底图片这样去边框
在这里插入图片描述
随机区间

  • 固定值Constant
  • 区间随机值 Random between two constans

周期与时长

  • Duration,周期,粒子系统的工作时长
  • Looping,循环
  • Prewarm,预热,粒子系统是否先内部预热一周
  • Start Lifetime,粒子的生命时长(存在时间),默认5秒
    在这里插入图片描述

模拟空间

  • local,本地
  • world,世界

在这里插入图片描述

匀速发射

**Emission 发射模块 **
匀速发射

  • Rate over Time
  • Rate over Distance
    爆发式发射
  • Bursts

匀速发射有两种方式:
1.Rate over Time
每1秒发射N个
2.Rate over Distance
每前进1米发射N个。针对运动的物体

爆发式发射

在这里插入图片描述

粒子发射器的形状

Shape模块

颜色渐变模块

Shaper

1.基本结构

Shader "Custom/study"
{

    Properties{
        //属性
        const float e = 2.7182818284590452353602874713527;
    }

    //SubShader可以写多个
    SubShader{

    }

    //后备方案
    Falback"VertexLit"


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

unity 3D 自学笔记 的相关文章

  • 将球体上的 3d 点转换为 UV 坐标

    我在球体上有一个 3d 点 想要将其转换为球体纹理上的 UV 点 有人可以指出正确的方向吗 我可以采用纯数学解决方案 Edit 我目前有这个 它不会返回正确的 UV 坐标 p 是球体上的 3d 点 mesh position 是球体的位置
  • Python 中的标量场可视化

    我需要在 Python 中可视化几个重叠的标量场 我发现mayavi图书馆做这种情节 问题是我不明白如何为标量字段自定义颜色图 我的想法是为每个字段设置一种颜色的阴影 我尝试采用一个例子 http docs enthought com ma
  • 如何在 OpenCV 中绘制图像的 3D 直方图

    更新 我找到更多例子 我现在可以做到 我可以在 3d 中绘制多个直方图吗 https stackoverflow com questions 35210337 can i plot several histograms in 3d 我知道这
  • 如何在SceneKit中实现逼真的景深效果?

    我正在尝试渲染具有真实景深效果的帧 我已经尝试过景深属性camera节点 但它不会产生可用的结果 是否可以切换到景深效果的最大渲染质量 性能不是一个因素 我只需要渲染一帧 用户可以等待它 SceneKit 中逼真的景深效果 在SceneKi
  • 一次性渲染阴影

    考虑到阴影投射的成本 我想知道对于动态定位的静态对象 例如 程序城市 是否有一个功能或可能 实验性的方法可以在 Three js 中仅渲染一次阴影贴图 甚至在 webgl 中 因此 结果可以在静态对象的下一帧中免费使用 仅当物体移动时才会进
  • 使用 ThreeJS 获取球体纹理上的点击位置

    目前 我有一个带有纹理的球体 它绕 y 轴旋转 我还有在 3D 空间中单击的位置 以及球体上的旋转位置 我认为 目标 获取纹理上的位置 例如 我想获取我点击的图像的哪个方块 参见示例球体和下图 在实践中 我不会使用此图像 但我觉得这将是一个
  • OpenGL z轴指向哪里?

    我正在尝试了解 OpenGL 坐标系 我到处都看到它被描述为右撇子 但这与我的经验不符 我尝试绘制一些形状和 3 d 对象 我发现 z 轴显然指向 屏幕 而 x 指向右侧 y 指向上方 这是左手坐标系的描述 我缺少什么 编辑 例如 http
  • 简单的线框格式?

    我正在寻找一种用于线框模型的简单文件格式 我知道 VRML u3D 等 但这些对于我的需求来说似乎很重要 我的标准是 必须有明确的规格 要么是开放的 要么是非常完善 记录的 我只需要 想要 简单的模型 顶点和边 我不想处理面孔或物体 如果格
  • 如何在 GTX 560 及更高版本上使用 OpenGL 进行立体 3D?

    我正在使用在 Windows 7 上运行的开源触觉和 3D 图形库 Chai3D 我重写了该库以使用 Nvidia nvision 执行立体 3D 我将 OpenGL 与 GLUT 一起使用 并使用 glutInitDisplayMode
  • IE9-11 检测变换样式:preserve-3d

    我为一个项目制作了一个 3d 类型的菜单 自然 IE 会引起问题 因为 IE10 即使 3d 变换工作 也不支持变换样式 preserve 3d 我尝试了解决方法 通过对 3d 菜单容器的每个子元素应用变换 但至少可以说 动画看起来很糟糕
  • 在球体边缘绘制点

    因此 来自 Flash 背景的我对一些简单的 2D 三角函数有很好的理解 在带有 I 圆的二维中 我知道使用给定角度和半径将项目放置在边缘上的数学 x cos a r y sin a r 现在 如果我在 3d 空间中有一个点 我知道球体的半
  • 如何在 React Native 中渲染自定义 3D 对象

    我已经成功使用 Three js expo Three 和 expo gl 在 React Native 中配置了红色立方体的 3D 渲染 但我想让用户渲染他们自己可能拥有的自定义 3D 对象 obj 或 mtl 扩展名 但我不确定如何让他
  • 不明确的 OpenGL 默认相机位置

    在我的Opengl程序中 在我应用透视投影矩阵之前 每当我绘制一些对象时 我都会在世界坐标系的原点处绘制它 但是几乎所有Opengl教程都指出相机 我的投影视图 位于原点朝向正 z 轴 这取决于您稍后如何处理投影矩阵中的 z 值 但是如果这
  • 为什么 OpenGL 有远裁剪平面,以及使用什么惯用法来处理这个问题?

    我一直在学习 OpenGL 持续困扰我的一个话题是远裁剪平面 虽然我可以理解近剪裁平面和侧剪裁平面 它们永远不会产生任何实际效果 因为它们之外的对象无论如何都不会被渲染 背后的推理 但远剪裁平面似乎只是一个烦恼 由于 OpenGL 背后的人
  • 3D 空间中两个盒子之间的交集

    我想为我的图形引擎实现一个碰撞检测系统 我不知道这是否是常见的方法 但我的想法是将任何实体对象 如网格或相机 绑定在 3D 盒子内 这会给我比球体更准确的结果 这个盒子由八个顶点定义 x0 min vertices x off parsin
  • 在 iOS 上的 SceneKit 中导入 3d 模型

    从 URL 导入 obj 文件并将其转换为 SCNNode 时遇到问题 这是代码 swift3 let url URL init string https cloud box com shared static ock9d81kakj91d
  • 如何计算正切和副法线?

    谈谈OpenGL着色语言 GLSL 中的凹凸贴图 镜面高光之类的东西 I have 顶点数组 例如 0 2 0 5 0 1 0 2 0 4 0 5 法线数组 例如 0 0 0 0 1 0 0 0 1 0 0 0 世界空间中点光源的位置 例如
  • 使用纽厄尔方法在 Python 中计算表面法线

    我正在尝试实现 Newell 方法来计算 Python 中的表面法向量 基于以下伪代码here https www opengl org wiki Calculating a Surface Normal Begin Function Ca
  • 现代 GPU 上的纹理更改(和其他状态更改)成本

    我正在编写一个基于场景图的图形引擎用于建模目的 我正在使用 XNA 4 在我读过的许多地方 渲染期间应该最小化纹理变化 和其他状态变化 因此我必须按材质等对图元进行排序 我在 XNA 4 中创建了一个小型测试应用程序 它使用单个纹理渲染数百
  • 加速球之间的碰撞检测

    我正在编写一个物理引擎 模拟器 其中包含 3D 太空飞行 行星 恒星引力 船舶推力和相对论效应 到目前为止 一切进展顺利 但是 我需要帮助的一件事是碰撞检测算法的数学 我使用的运动迭代模拟基本上如下 注意 3D 矢量全部大写 For eac

随机推荐

  • 设计模式梳理——访问者模式

    一 概述 访问者模式 Visitor 表示一个作用于某对象结构中的各元素的操作 它使你可以在不改变个元素的类的前提下作用于这些元素的新操作 二 UML图示 三 代码实现 我们都知道财务都是有账本的 这个账本就可以作为一个对象结构 而它其中的
  • springsecurity 提示:There is no PasswordEncoder mapped for the id "null"

    用户角色权限系统 springboot springsecurity mysql 提示如下错误信息 java lang IllegalArgumentException There is no PasswordEncoder mapped
  • 虚函数的原理

    引用 windows程序员面试指南 虚函数 虚函数通过虚函数表管理 特点 1 虚函数表属于类 类的所有对象共享这个类的虚函数表 2 虚函数指针属于对象 在每个对象内部的开头 指向同一虚函数表 继承特点 只继承一个父类无覆盖时 父类虚函数在子
  • 在64位电脑上 使用anaconda虚拟环境将Python程序打包成32位

    之前写啦一些打包博文 见链接 anaconda虚拟环境教程大全 使用pipenv建立虚拟环境解决python打包exe文件过大的问题 附打包带图标 多个py文件打包exe cmd执行python程序 文件夹直接进入cmd程序 python将
  • VirtualBox网络之桥接网卡

    如下图所示 VirtualBox支持的网络模式有多种 桥接网卡不同与其它的几种 首先体现在名字上 其它模式都带有 网络 字眼 说明当前的网卡需要接入一个由用户创建的网络 而桥接网卡则只是网卡 这种模式不需要创建网络 从效果上看 这种网卡与宿
  • Linux 下使用命令行查看PDF

    使用 evince命令查看 evince frames pdf
  • 低通、高通、带通、阻通滤波器

    目录 低通 高通 带通 阻通滤波器 低通 高通 带通 带阻滤波器的区别 通俗理解 1 低通滤波器 2 高通滤波器 3 带通滤波器 4 带阻滤波器 5 全通滤波器 低通 高通 带通 阻通滤波器 低通 高通 带通 带阻滤波器的区别 低通滤波器
  • STM32系列(HAL库)——F103C8T6通过NRF24L01(2.4G)无线模块进行双机通信

    本文参考 STM32L051C8T6 HAL库 nRF24L01 收发案例 硬件SPI通讯 1 软件准备 1 编程平台 Keil5 2 CubeMX 3 XCOM 串口调试助手 2 硬件准备 2套 1 F1的板子 本例使用经典F103C8T
  • ROS开发日记(1)——ROS基础知识

    ROS 即开源机器人操作系统 1 官方定义 ROS是面向机器人的开源的元操作系统 meta operating system 1 它能够提供类似传统操作系统的诸多功能 如硬件抽象 底层设备控制 常用功能实现 进程间消息传递和程序包管理等 此
  • java实现信息的增删改查功能的网页设计(1)

    仅供参考 不可转载 如遇其他情况概不负责 后果自负 切记 该项目运用的技术 spring springMVC ibatis 本网页只有一个页面 包过信息的增 删 改 查功能 只有部分代码 仅供参考 因该项目比较大 所以仅提供了一个页面内的增
  • 命名时取代基优先顺序_有机物命名:常见官能团的优先次序表

    一 官能团的优先次序 常见官能团的优先次序表类别序号官能团词头名称词尾名称 酸1 COOH羧基羧酸 2 SO3H磺基磺酸 羧 酸 衍 生 物3 COOR酯基羧酸酯 4 COX卤羰基酰卤 5 CONH2氨甲 酰基酰胺 腈6 CN氰基腈 醛7
  • MySQL——JDBC

    文章目录 1 数据库驱动 2 JDBC 3 第一个JDBC程序 4 步骤总结 5 JDBC对象解释 6 写工具类 7 JDBC操作事务 7 1 创建表 7 2 事务 7 3 总结 8 数据库连接池 8 1 DBCP 8 2 c3p0 1 数
  • 从游戏脚本语言说起,剖析Mono所搭建的脚本基础

    从游戏脚本语言说起 剖析Mono所搭建的脚本基础 0x00 前言 在日常的工作中 我偶尔能遇到这样的问题 为何游戏脚本在现在的游戏开发中变得不可或缺 那么这周我就写篇文章从游戏脚本聊起 分析一下游戏脚本因何出现 而mono又能提供怎样的脚本
  • 系统开发(上)-软件设计(三十二)

    信息系统安全 对称加密 软件设计 三十一 https blog csdn net ke1ying article details 129678350 瀑布模型SDLC 是结构化的开发 步奏 软件计划 gt 需求分析 gt 软件设计 gt 程
  • 【信号去噪】基于变分贝叶斯卡尔曼滤波器实现信号去噪附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统 信号
  • Java使用get请求接收List集合数据(json)并导出报表

    Java使用get请求接收List集合数据 json 并导出报表 文章目录 Java使用get请求接收List集合数据 json 并导出报表 前言 一 实现分析 二 Maven依赖 基于EasyExcel实现 三 后台代码 四 使用Post
  • 深度学习(4):基于深层卷积网络实现车牌识别

    目的 基于深层卷积神经网络结合CTC损失函数对车牌进行识别 通过对车牌数据集进行训练获得识别模型 并验证模型性能和将模型进行应用 一 原理 了解深层卷积神经网络构建方法和基本原理 熟悉目标识别相关算法的常规训练流程 掌握CTC损失函数的基本
  • 【工具分享】配置淘宝镜像

    配置淘宝镜像 淘宝镜像地址 https registry npmmirror com 命令行配置 npm config set registry https registry npmmirror com 使用 nrm 配置 使用 npm 全
  • java 断言 assert 详解:断言开启、断言使用

    java中的断言Assert的使用 一 背景 二 如何判断是否开启了断言 三 开启断言 四 断言的使用 方法一 assert
  • unity 3D 自学笔记

    刚开始 创建一个正方体 窗口布局 恢复默认窗口 场景 默认场景中只有一个主摄像机和平行光源 3D物体 Duplicate 复制 Delete 删除 3D视图 导航器 Gizmo 表示世界坐标的方向 栅格 Grid 表示XZ坐标平面 天空盒