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

保姆式教学-实现天空盒旋转

目录

一、天空盒材质设置

1)在菜单栏window->Rendering->lighting

2)设置天空盒子材质,替换默认材质

3)认识Rotation变量

二、代码实现让天空盒转起来


 

在一个小Unity项目中,需要将天空盒旋转,以便云朵能够简单移动效果,项目是URP项目,现做下记录,unity 编辑器是2020.1.0f1版本。早期的版本天空盒可以通过Camera.main的对象获得。

现在URP项目统一使用RenderSettings 设置直接获得


一、天空盒材质设置

1)在菜单栏window->Rendering->lighting

 

我们看到天空盒子的材质,没错,修改的就是它,当然我是修改好了。下面讲解如何替换天空盒材质。

2)设置天空盒子材质,替换默认材质

创建一个带SkyBox/Panoramic shader的材质,该材质要求天空盒是一张球面的天空图

 该材质天空贴图是一张图

 

如果是六边形贴图,那么创建的材质选择SkyBox/6 sided这个shader

 

当然如果你制作了一个cubemap图,那么你创建的材质的shader 选择为skybox/Cubmap

3)认识Rotation变量

但是不管我们选择那个我们发现这三个材质都有propery 面板中都有Rotation选项,在编辑的代码中我们到该面板变量是_Rotation变量

操作步骤如下:打开shader面板,看到我们定义的变量

 

 我们通过代码控制就是_Rotation变量,当天空盒材质创建好了,你应该改在lignting面板中去替换它


二、代码实现让天空盒转起来

材质创建完成后,接下就是代码了,对于_Rotation变量因为是浮点数,所以我们需要SetFloat()函数和来修改其值,天空盒的材质信息通过RenderSettings获得,它是全局的。具体代码如下:

public class USkyRotate : MonoBehaviour
    {
        private float rot = 0;
        //旋转速率
        public float rate = 0.7f;

        public void Start()
        {
            rot = RenderSettings.skybox.GetFloat("_Rotation");
        }

        public void Update()
        {

            if (RenderSettings.skybox == null)
                return;


            rot += rate * Time.deltaTime;
            rot %= 360;
            RenderSettings.skybox.SetFloat("_Rotation", rot);
        }
    }


http://www.kler.cn/a/6713.html

相关文章:

  • 除了电商平台,还有哪些网站适合进行数据爬取?
  • MySQL超详细安装配置教程(亲测有效)
  • 高防服务器实现防御的方式,高防服务器的优势
  • MySQL8 安装教程
  • 【概率统计通俗版】极大似然估计
  • 第8章 硬件维护-8.6 产品变更管理(PCN)
  • ShellBrowser .NET Components released
  • 【数据结构】七种常见的排序
  • 【Redis学习】Redis管道
  • Leetcode.112 路径总和
  • 什么是编码和解码
  • GC 日志
  • 【面试】MySQL面试题
  • 分布式事务·入门与解决·壹
  • 【UML建模】用例图(Use Case Diagram)
  • CUDA编程(二):核函数与线程层级
  • 【AUTOSAR】【Lin通信】LinIf
  • 【OpenCV-Python】cvui 之 复选框
  • 浪潮信息:2025年,实现数据中心风冷、液冷同价
  • vue中 使用假的进度条数字插件:fake-progress
  • QT完善登录界面Ⅱ
  • 构建一个简单的网站,包括用户注册、登录功能
  • 转行大数据未来发展怎么样?可行么
  • OSPF的选路原则,重发布与RIP
  • 动态权限申请三方库
  • ethers不同版本返回余额的整数值类型,以及对大整数值的处理差异性的比较