你知道如何实现游戏中的透视效果吗?

在这里插入图片描述

引言

游戏中的透视效果可以合理运用CtrlCV实现。

不知道大家有没有这样一段经历:在做Cocos项目时需要一些特定的Shader去做一些特定的效果,例如透视、高光、滤镜等等,想自己写吧,不怎么会啊,网上又找不到,找到了却又发现是Unity的Shader。。。

本文将通过一个将简单的UnityShader改成CocosShader来实现游戏中的x光透视效果

本文源码和源工程在文末获取,小伙伴们自行前往。

1.什么是X光透视效果?

在这里插入图片描述

在游戏开发中,X光透视效果通常指的是一种视觉效果,让玩家或者观众能够穿过物体表面看到其内部结构,就像X光或透视图一样。

游戏中的X光透视效果通常用于展示隐藏的物品、地图的结构、或者在某些情况下用于增加游戏的战术性,比如让玩家看到墙后面的敌人位置。

实现这种效果的方法可以是使用特殊的着色器和渲染技术,通过调整渲染层级或者使用特定的材质,使得物体的内部结构能够透过外部表面显示出来。

话不多说,一起来看下如何在把UnityShader转成CocosShader实现x光透视效果

2.一起来实现实现x光透视效果

我们根据以下的步骤一步一步来把UnityShader转成CocosShader实现x光透视效果:

1.环境

引擎版本:Cocos Creator 3.8.1

编程语言:TypeScript

2.资源准备

首先在我们在网上找一段关于X光透视效果的UnityShader片段。

本次教程CtrlCV的对象

3.CtrlCV前的分析

在写CocosShader之前我们先简单分析一下这个Shader片段。

首先定义了Shader的名字Custom/XRayTrans和它的几个属性主纹理_MainTex、边缘颜色_RimColor和边缘强度_RimPower。可以控制边缘的颜色以及强度

学会定义

然后是通道的一些简单设置。包括

  • 设置混合模式Blend SrcAlpha One
  • 关闭深度写入ZWrite off
  • 关闭光照Lighting off
  • 设置深度测试方法ztest greater

简单的设置

定义一下输入和输出的结构。包括输入定点位置、纹理坐标、颜色和法线。输出像素位置和颜色

有进有出

顶点着色器。主要是实现通过视图方向和法线去计算变量边缘强度,并设置颜色。

关键1,顶点着色器

片元着色器。无特殊操作,直接返回顶点像素颜色。

关键2,片元着色器

4.开始CtrlCV

首先打开工程创建一个Shader(Effect)。命名为XRayTrans.effect

有鼠标就行

搜索built找到builtin-unlit效果,双击打开并且复制内容到我们的自定义Shader上。

有手就行

我们添加一个通道编写自己所需要的效果。其中vert_ray对应的自定义的顶点着色器,frag_ray对应的自定义的片元着色器。

有路就行

属性和前面分析的一样添加边缘颜色_RimColor和边缘强度_RimPower两个属性。

不能说一模一样

还是和前面分析的一样设置一下混合模式、关闭深度写入以及设置深度测试方式

简直就是

顶点着色器vert_ray我们简单拷贝一下vert,去掉一些不必要的内容,加入我们需要的视图方向的计算,边缘强度的计算以及像素颜色的设置。为什么这么写可以了解下边缘光或者x光效果。

是不是好像

片元着色器frag_ray也是很简单,直接把顶点着色器传进来的内容设置就好。

是真的好像

最后把模型的Shader更换成我们的自定义shaders/XRayTrans。注意设置一下贴图。

最后的最后

当然了,上述的一些效果,可以直接面板去编辑设置。包括边缘颜色、边缘强度、混合模式、关闭深度写入以及设置深度测试方式

可视化的好处

效果演示

动图不太清晰,先来个高清大图,透过石头可以清楚看到小鸡的轮廓。

哪都能看到你

还是要上个动图的,虽然不方便摸鱼,但是这会好看点。小鸡自身有点透视效果,知道怎么解决的可以私信我。
在这里插入图片描述

结语

在哪里可以看到如此清晰的思路,快跟上我的节奏!关注我,和我一起了解游戏行业最新动态,学习游戏开发技巧。

我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。

AD:笔者线上的小游戏《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》大家可以自行点击搜索体验。

实不相瞒,想要个在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!

推荐专栏:

你知道王者荣耀是怎么实现技能范围指示器的吗?

8年主程手把手打造Cocos独立游戏开发框架

和8年游戏主程一起学习设计模式

从零开始开发贪吃蛇小游戏到上线系列

本文源码和源工程可通过发送私信ModShader获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/165642.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

27 - 如何使用设计模式优化并发编程?

在我们使用多线程编程时,很多时候需要根据业务场景设计一套业务功能。其实,在多线程编程中,本身就存在很多成熟的功能设计模式,学好它们,用好它们,那就是如虎添翼了。今天我就带你了解几种并发编程中常用的…

redis-cluster集群(目的:高可用)

1、特点 集群由多个node节点组成,redis数据分布在这些节点中,在集群中分为主节点和从节点,一个主对应一个从,所有组的主从形成一个集群,每组的数据是独立的,并且集群自带哨兵模式 2、工作原理 集群模式中…

【ZedBoard学习实例1】 VGA显示彩条

ZedBoard学习实例1 VGA显示彩条 ZedBoard学习实例1 VGA显示彩条参考文章改进 ZedBoard学习实例1 VGA显示彩条 参考文章 彩条控制verilog代码 主体参考了该文章的代码,文中还介绍了相关的电路图,还有ZedBoard的手册内容。19201080分辨率显示器的参数 针…

重生之我是一名程序员 37 ——C语言中的栈溢出问题

哈喽啊大家晚上好! 今天呢给大家带来一个烧脑的知识——C语言中的栈溢出问题。那什么是栈溢出呢?栈溢出指的是当程序在执行函数调用时,为了保护函数的局部变量和返回地址,将这些数据存储在栈中。如果函数在函数调用时使用了过多的…

Sentinel核心类解读:Entry

默认情况下,Sentinel会将controller中的方法作为被保护资源,Sentinel中的资源用Entry来表示。 Sentinel中Entry可以理解为每次进入资源的一个凭证,如果调用SphO.entry()或者SphU.entry()能获取Entry对象,代表获取了凭证&#xff…

安卓手机便签APP用哪个,手机上好用的便签APP是什么

在日常生活及工作方面,总是有许多做不完的事情需要大家来处理,当多项任务堆叠交叉在一起时,很容易漏掉一些项目,这时候大家会借助经常携带的手机来记录容易忘记的事情,如手机上的闹钟、定时提醒软件都可以用来记录待办…

2023亚太杯数学建模A题思路分析 - 采果机器人的图像识别技术

1 赛题 问题A 采果机器人的图像识别技术 中国是世界上最大的苹果生产国,年产量约为3500万吨。与此同时,中国也是世 界上最大的苹果出口国,全球每两个苹果中就有一个,全球超过六分之一的苹果出口 自中国。中国提出了一带一路倡议…

JDK11新特性

目录 一、JShell 二、Dynamic Class-File Constants类文件新添的一种结构 三、局部变量类型推断(var ”关键字”) 四、新加的一些实用API 1. 新的本机不可修改集合API 2. Stream 加强 3. String 加强 4. Optional 加强 5. 改进的文件API 五、移…

canvas

Canvas 是 Android 中用于绘制图形的重要类,它提供了许多用于绘制的常用方法。以下是一些常用的 Canvas 方法: 绘制颜色和背景: drawColor(int color): 用指定颜色填充整个画布。drawRGB(int r, int g, int b): 用 RGB 值指定颜色填充整个画布…

进程池,线程池与跨进程数据共享爬取某岸网图片

看教程的时候看到一个,生产者跟消费者的概念比较有意思,但是给的代码有问题无法正常运行,于是我就捣鼓了一下。 基本概念就是: 生产者: 一个进程获取网页没页的图片连接(主进程…

Django框架之中间件

目录 一、引入 二、Django中间件介绍 【1】什么是Django中间件 【2】Django中间件的作用 【3】示例 三、Django请求生命周期流程图 四、Django中间件是Django的门户 五、Django中间件详解 六、中间件必须要掌握的两个方法 (1) process_request (2) process_respon…

Redis集群环境各节点无法互相发现与Hash槽分配异常 CLUSTERDOWN Hash slot not served的解决方式

原创/朱季谦 在搭建Redis5.x版本的集群环境曾出现各节点无法互相发现与Hash槽分配异常 CLUSTERDOWN Hash slot not served的情况,故而把解决方式记录下来。 在以下三台虚拟机机器搭建Redis集群—— 192.168.200.160192.168.200.161192.168.200.162启动三台Redis集…

芯知识 | MP3语音芯片IC的优势特征及其在现代科技应用中的价值

随着科技的飞速发展,MP3语音芯片作为一种高度集成的音频处理解决方案,在现代电子产品中发挥着越来越重要的作用。本文将分析MP3语音芯片的优势特征,并探讨其在各个领域的应用价值。 一、MP3语音芯片的优势特征 MP3语音芯片具有多种显著的优…

CC++输入输出流介绍

介绍 C中的输入输出流主要包括标准输入输出流、文件输入输出流和内存数据流。 标准输入输出流可以通过使用cin和cout进行数据的读取和输出文件输入输出流可以通过使用ifstream和ofstream对文件进行读写操作内存数据流可以通过使用stringstream对字符串进行读写操作 应用举例…

服务器租用收费标准是什么?

服务器在企业转型中或者是互联网企业中起着举足轻重的作用,服务器有强大的存储能力和计算能力,能够帮助企业存储大量信息,完成日常工作,服务器租用就是通过正规的IDC服务器商家那里获取服务器资源,根据企业自身需求选择…

Python爬虫-获取汽车之家新车优惠价

前言 本文是该专栏的第10篇,后面会持续分享python爬虫案例干货,记得关注。 本文以汽车之家新车优惠价为例,获取各车型的优惠价,示例图如下: 地址:aHR0cHM6Ly9idXkuYXV0b2hvbWUuY29tLmNuLzAvMC8wLzQyMDAwMC80MjAxMDAvMC0wLTAtMS5odG1sI3B2YXJlYWlkPTIxMTMxOTU= 需求:获…

OpenStack云计算平台

目录 一、OpenStack 1、简介 2、硬件需求 3、网络 二、环境搭建 1、安全 2、主机网络 3、网络时间协议(NTP) 4、OpenStack包 5、SQL数据库 6、消息队列 7、Memcached 一、OpenStack 1、简介 官网:https://docs.openstack.org/2023.2/ OpenStack系统由…

Zynq-7000系列FPGA使用 Video Processing Subsystem 实现图像缩放,提供工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA图像缩放方案自己写的HLS图像缩放方案 3、设计思路详解Video Processing Subsystem 介绍 4、工程代码详解PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程移植说明vivado版本不一致处理FPGA型号不一致处理其他注意事项…

给sprite上增加刷光动效

游戏引擎 —— cocos creator 3.52 此动效给动态修改尺寸的图片增加一层刷光的效果,直接贴代码 CCEffect %{techniques:- passes:- vert: sprite-vs:vertfrag: sprite-fs:fragdepthStencilState:depthTest: falsedepthWrite: falseblendState:targets:- blend: tr…

Charles 网络抓包工具详解与实战指南

文章目录 导读软件版本Charles基本原理核心功能下载及安装界面介绍网络包展示 常用场景介绍PC 端网络抓包移动端网络抓包PC 端配置手机端配置 开启 SSL 代理PC 端和移动端 CA 证书安装Charles 直接安装Charles 下载 CA 文件手动安装 常用操作请求重发请求改写、动态改写断点&am…