![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
shader的编写
文章平均质量分 80
CZandQZ
这个作者很懒,什么都没留下…
展开
-
网格擦除效果——类似宝剑大师
最近找工作有时间可以把之前工作中遇到的一些问题及解决办法写出来,当然这份代码并不是公司的那份代码,这份代码是在源项目上解决思路写出来的,所以做出来可能有点乱。首先思路跟2D的思路差不多的,因为我们只是在做3D表现而已。首先在擦除的时候他的原理跟2D的一样,但是他的网格渲染方式可能跟2D就不一样了,还是一样我们需要首先生成一个3D的网格。3D网格生成的核心代码如下:private GameObject GeneratorBody(string bodyName, Polygon points)..原创 2022-03-14 20:22:23 · 711 阅读 · 2 评论 -
网格变形效果——黏液效果
做的效果图如上,效果制作分为3个部分,一部分是挤压,一部分是拖拽,一部分是复原。1 先说挤压吧,首先挤压有一个挤压区域,首先我们需要获取模型上所有的顶点并且模型的碰撞器会随着模型的变化而发生变化因为只有这样碰撞才会实时的发生反馈。定义挤压区域,判断所有的顶点是否在以鼠标位置为中心圆的挤压半径,如果在圆内那么它的y坐标向0插值。反之不会发生任何变化。2 再说拖拽,拖拽也是需要判断拖拽区域,判断所有顶点是否在以鼠标位置为中心圆的拖拽半径,如果在园内的话,拖拽方向也是鼠标的当前坐标-鼠标上次坐标。...原创 2022-02-15 23:05:01 · 673 阅读 · 0 评论 -
Unity 草的制作
如果把草当成一个一个的模型的话,我们在一个平面上铺满10000个草并且让他和一些物体进行交互的,如果用传统的做法,我们把每一个草上面挂载一个脚本的话,运行的时候你就会发现,这样帧率其实并不高的,在一个update里面每帧访问一个数组长度为10000的数组他的帧率其实都不会很高的,更何况我们还需要草动起来且还需要有一定的交互能力,如果纯粹用cpu来模拟的话可能会比较吃力,所以这里打算用GPU来模拟大量粒子运动和交互。unity提供了一种compute shader来处理大量计算。GPU在大量运算时候它的效率是原创 2021-09-17 18:34:10 · 2404 阅读 · 0 评论 -
彩球2048贴片实现
好久没有更新blog,趁着工作不是很忙来写一篇blog,之前玩游戏的时候玩到一款球球2048,遇到一个问题是如何在一个球上贴一个数字 并且这个数字还会变化 并不是固定的一些数字比如2,4,8,16等 后面会很大,如果做到2的32次幂那么美术需要出32张图片,如果后面越玩越后面的话可以说这个数字应该是比较大的,至于多大的话 美术是无法满足需求的,但是美术可以做一些基础的数字,比如0到9这样的数字 如果数字太大的可以用K,M,Q这样的字母加数字代替更大的数字。所以这里就需要动态的生成一些图片,同时需要一个可以接原创 2020-08-18 11:17:46 · 423 阅读 · 0 评论 -
untiy 第二个逗比又无聊的跑酷demo
逗比刘真是菜啊,天天就知道写这种无聊的东西,写了也不一定有人看的。看了也不一定有人喜欢。喜欢也没有什么卵用啊。先分享一波图吧。大家第一眼看见是个什么?(逗比刘第一眼说 是精子小蝌蚪啊,逗比刘好邪恶啊)做一个这样的demo可以说基本用不到很多素材,最重要的素材就是那个圆圈,这个圆圈对于一个程序员来说画起来应该蛮简单的吧。前天我们讲到如果绘制一个2D的圆环,今天我们就绘制一个3D的圆环,如果我原创 2016-07-18 00:00:30 · 2564 阅读 · 0 评论 -
untiy 网格的应用—骰子的制作和技能冷却效果
这节讲一个比较简单的网格的应用,其实网格的作用其实很大的,网格直接关联的渲染的问题,我们知道做一个ui需要网格,在unity显示一张图片同样需要网格。我们知道当我们拖一张sprite把它放进我scence视图的时候,这张sprite的网格其实并不像我们想象的那么简单,它的网格并不是一个长方形,而是由很多三角形组成不规则的网格的,当然这很显然是不够优化的,因为它让我们多绘制了一些三角形,我们明明可以原创 2016-07-20 23:37:23 · 2391 阅读 · 1 评论 -
unity 一个拼图demo(七巧板)和一个切割demo
好久没更新博客了,那么今天就来装一下b吧。还是先上一波图,看看我们到底要做什么。前面2张是切割的的demo,后面的这个是拼图,但是我们看到材质,这里的解释一下2个demo用的都是一个网格构建代码,所以才会出现这种情况,正确的做法应该是把添加uv的代码做个判断一下,把这个变量放到这个方法参数列表中,同时把它变成一个对外的方法。这里顺便给大家提一下封装的思想,厉害的程序员他们其实大部分的时原创 2016-08-02 23:25:09 · 6777 阅读 · 1 评论 -
untiy 简单的shader应用
今天和大家分享一下一个shader的效果。先分享一波图看看我们这个效果该怎么写。这个效果就是我们今天要做的一个shader效果,其实他是个水波效果,当我们在池塘旁边,往池塘旁边扔进去一个石头,我们看池塘底的东西的时候,我们发现池底的东西是发生了弯曲的,所以我们这个效果就是来模仿现实生活中的这种简单的物理现象。我以前在gamejam上看到一款叫做鲤的游戏。当我看见他们做的那个水波的时候原创 2016-08-14 23:49:22 · 1479 阅读 · 0 评论 -
unity 网格切割算法讲解
算法主要的方法为 public static List> GetEndCuttingPolygonVerticles(List originPoints, Vector3 startPos, Vector3 endPos),list数组存的是网格的顶点,第二个参数和第三个参数表示切割线段的起始节点和线段的末节点,首先我们会判断线段两头的点是否在多边形内,下面我就不讲原理了,直接给代码吧,原创 2016-07-03 23:15:05 · 13266 阅读 · 5 评论 -
untiy 一个逗比并且有无聊的游戏制作
先分享一波图,咋们还是看一波图吧。 看完图了之后大家有什么感想,是不是觉得很简单啊,这么简单的游戏还做(感觉逗比刘真的是个逗比了啊,哎 我已经看不下去了)。这个美术很简单,总共就没有几张图。图中的,大家可以先想想一下 如果得到图中的一个圆圈。我们可以从美术哪儿得到啊(这逗比刘 问的啥问题,简直就是个大sb,其实逗比刘也可以画出来啊),大家如果观察仔细的话可以发现大圈和小圈他的那个环的宽度都原创 2016-07-16 19:19:28 · 2610 阅读 · 0 评论 -
untiy 2D 曲面地图动态生成
前面说要做个2D曲面,因为一直在找工作没时间,如果大家有机会可以帮小弟推荐推荐,小弟不胜感激。好言归正传了,开始讲今天的东西了,先截个图看看效果。图如下:第一张是在scence视图下的图,可以很清楚的看到这个地形的分布,第二张则是一个球在场景中的运行图,也就是我们的主角了。如果我们需要制作出一个曲面,毫无疑问的是我们得动态构造网格,然后给我们的网格贴uv。一个曲面是有很多个三角原创 2016-07-15 17:53:07 · 2331 阅读 · 0 评论 -
unity 网格切割
前一节讲到了如何绘制一个多变形网格。还是先给大家看效果图,博客的结尾最后贴出工具类。效果图如下:大家看到的我用三种不同方向的切割方式,得出不同的子图和原图比较。下面具体分析其原理,给出分析图。 先看这样一张图,我们黑色数字标记的是顶点的添加顺序,我前面说了我们统一讲顶点的顺序改成顺时针(如果是添加顺序为逆时针,我们将它数组倒置即可)白色的点为横着的一条线和改图形产生的交点原创 2016-07-03 18:28:20 · 4912 阅读 · 0 评论 -
网格的学习—2
前面基础的讲到了一些网格的学习,现在我们来做一些特别的东西,先绘制一个正方体。 首先我们需要绘制8个点,我们依次添加8个点, Verticles = new Vector3[] { new Vector3(0,0,0),new Vector3(1,0,0),new Vector3(0,1,0),new Vector3(1,1,0),原创 2015-12-14 21:14:29 · 711 阅读 · 0 评论 -
网格的学习—1
这节我将会给大家讲一下unity里面的网格,或许有好多人不知道texture和sprite的区别,这里我们简单的讲一下,texture只是简单的图片,他可以使png格式,也可以是其他格式,而sprite它是有网格信息的,一张图片怎么样才能显示在屏幕上呢,在unity2D环境中,其实首先是给一个空物体添加一个MeshFilter,有了网格并一定就能显示,还要给物体添加一个MeshRenderer,当原创 2015-12-14 20:34:47 · 953 阅读 · 0 评论 -
网格的学习—3
大家可能玩过水果忍者这类的游戏吧,当时看到这个游戏的时候,觉得那个水果怎么分成2半,当时简单的认为是2章图片,现在就觉得当时很幼稚。效果如图下:当我点击鼠标之后,原网格重组,重新生成一个物体,它的网格信息来自原网格信息,然后切割完了之后就开始下落了,using UnityEngine;using System.Collections.Generic;[RequireCo原创 2015-12-14 21:44:42 · 758 阅读 · 0 评论 -
shader的简单应用—2
前面已经写了几个shader还没教大家怎么用,这节就交大家怎么去配合GL和shader使用做场切。场切是一个场景过渡到另外一个场景时的过渡动画,那么它的显示的级别应该是最高的吧,它应该覆盖掉所有的场景中的东西,所以应该在屏幕上绘制,这样层级是最高的,所以unity为我们提供了模板方法—OnPostRender();只要类继承MonoBehaviour就可以了,这里就会出现另外一个问题,现在我已经做原创 2015-12-20 22:06:36 · 563 阅读 · 0 评论 -
shader的简单应用—1
shader编程其实是对GPU编程,我们的shader编程不像untiy脚本对CPU编程那样,它需要简介,简单。接下来做几个很有意思的shader Shader "Custom/CartoonShader" {Properties { _BorderColor("BorderColor",Color)=(0.6,0,0,1)_CenterX("CenterX",flo原创 2015-12-20 11:39:54 · 590 阅读 · 0 评论 -
untiy 2D角色控制器
这节讲讲类似马里奥,盗贼遗产,这些类似的游戏人物基本的控制方式。这里我用Prime31这个公司的插件改了一个比较小的控制脚本,博客结尾会给大家一份源码,先简单的讲一下2D人物控制器的原理,2D控制器可不像untiy 3D控制器那样,untiy官方帮我们封装了。所以这里就只能自己去写了,先贴出一张图。图中的场景时源插件中的场景,我就直接拿来用免得自己去摆了,图中有3中不同的障碍物,方块代表玩家,原创 2016-07-04 23:40:19 · 5983 阅读 · 1 评论 -
网格的学习—4
前面讲到怎么去绘制一个三角形,从而延伸到一个四边形,继而就可以绘制一个6面体。这节我们讲一个麻烦点的,这节我们给出一组顶点,然后绘制出多边形。例如如何绘制一个六边形。绘制不同形状的图形,绘制2D曲面地形。我们知道要绘制一个多边形首先按照顺序添加点,然后给出每个顶点在一个三角形中的绘制顺序即可,其中最重要的就是给出绘制顺序,绘制顺序是每3个一组,即绘制一个三角形对应一组。那么问题来了 怎么得到三角形原创 2016-06-30 01:46:10 · 674 阅读 · 0 评论 -
网格的学习—5
前面我只讲到了整个算法的模拟过程,这节我们就讲到如何实现整个算法。首先第一步我们把添加点的顺序全部调成顺时针的。判断是否为顺时针的办法就是相邻3个点组成的2个向量的叉乘的值为正表示逆时针,为负为顺时针,这只是3个点的情况,但是针对所有点的我们的办法是相邻的2个点相对于坐标(0,0)组成的向量叉乘和的总和为正是表示逆时针,反之则为顺时针。代码如下: public static float A原创 2016-06-30 23:57:05 · 701 阅读 · 0 评论