自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

原创 unity游戏开发之原神主界面操作实现

本文使用的开发工具为unity2018,完整项目下载地址:一、最终效果二、实现过程1、罗盘的实现原理:通过触摸点的屏幕坐标与罗盘中心点的屏幕坐标相减,得到方向向量,通过这个向量与向量(0,1)获得两向量夹角,这个夹角就是罗盘的旋转值,同时也是相机朝向在水平方向投影的偏移值,由此就可以的得到角色位移的方向,代码片段如下://得到相对坐标 Vector2 relativePos = new Vector2(curPos.x - m_uiPosInScreen.x, curPos.y

2021-11-01 17:12:57 2114

原创 二段构建在unity游戏开发中运用

二段构建在unity游戏开发中运用第一次接触到二段构建这样的设计模式是博主第一次从事手机游戏开发的时候,当时使用的游戏引擎是cocos2dx,后来就沿用到了unity游戏开发中,这里就是一个小demo介绍效果实现过程public class Model : MonoBehaviour{ public static Model Create(string resPath) { GameObject obj = new GameObject("Model");

2021-10-26 15:26:37 152

原创 cocos2dx-lua官方demo构建流程代码解析

很久没弄cocos2dx了,其实相比unity我个人真心比较喜欢cocos,可能是我比较喜欢能直接接触代码吧,毕竟没有什么比代码更可靠的。 我们看看c++调用lua的地方吧,打开cocos的c++工程,打开AppDelegate文件,可以看到engine->executeScriptFile("main.lua")这一句就是对lua的调用,接下来就可以开始看lu...

2019-05-09 16:29:32 737

原创 unity模型任意无限切割插件

前面几篇文章都是关于3d模型切割的原理,经过两天奋战,完成了整个流程的制作,包括了滑动屏幕,切割模型的整个过程,不过这并不是完美版本,因为这个版本目前并没有将切割之后的切口缝合上,不过已经亲测了无限切割(只要你的机器跟得上),本文理解难度其实挺大的,能理解的可以将他运用到其他平台上,比如虚幻之类的,不能理解就只能直接在unity上使用了,没有缝合切口的版本如果运用于2d面片的切割是可以在实际项目中

2017-08-09 16:21:31 21570 13

原创 根据屏幕上的触摸生成平面方程

其实看过我前面两篇文章的朋友应该知道这篇文章的意义,就是为切割模型做准备的,其实我是想有空就慢慢把切割模型整个工程写一下的(要是某天懒惰战胜了勤奋就没办法了),原理虽然已经了然,写出来完整版也不是个简单的事。这篇文章相对来说简单点,就是一些数学运算/* * @authors: liangjian * @desc: */using UnityEngine;using System.Co

2017-08-04 11:27:10 727

原创 关于3d模型任意切割的思路

3d模型的任意切割一直是游戏开发里的一个很大的问题,其实博主也没有根本解决,主要的问题是在切面上,然而如果是切面片则并不存在切面的问题,所以是可以在项目中实用的,总之本文权当研究吧。先看看博主切出来的效果下面先看看切出平整切痕的原理吧,本文需要图形学的基础扎实。如上图所示,当切割模型时,对于切面上的三角面,无非是如图中3种情况(正好切在三角形的某个顶点上几乎不可能,不过也可以考虑在内,这里

2017-06-02 16:45:49 14777 8

原创 unity关于clearFlags的一个可能为bug

最近项目中加入一个屏幕特效时候偶然发现这样一个奇怪现象,做屏幕特效时候需要在照相机上附加脚本,重写OnRenderImage方法,可是如果clearFlags设置为depthOnly或者DontClear,电脑端是没有问题的,但是移动端运行效果的话帧数甚至会掉到两三帧。博主找了很多博客都没有人能直接解决的。可能是unity的一个bug吧,不知道这一步引擎里做了什么事情。

2016-12-26 10:06:51 904

原创 shader.find在手机上失败

这个是应该算是unity的一个bug,因为shader.find在pc端是正常的,但是在手机上就不行了,这种跨平台pc正常,移动端错误的问题很难找到错误。其实是需要告诉unity,你的shader所在的路径。设置shader的路径方法为edit->project setting->graphics,在这里将你的shader拖进去,手机就能像pc一样找到shader了。

2016-12-19 10:56:00 1690

原创 3d游戏中人物被遮挡后以其它颜色显示的方法

好久没有更新博客,最近忙于其他事情了。今天玩了一下九阴真经,偶然发现里边有一个效果,如图显示:我们一步步来解释这个效果的原理,涉及的方面其实还挺多的。首先我们必须清楚地知道,在角色被遮挡的时候,已经暴露出来模型其实是分两次渲染,也就是该模型的着色器必然是存在两个通道的。第一个通道便是遮挡后显示出来的蓝色,第二个通道就是普通情况下显示出来的模型。第一步:前面的屋子没有能够遮挡住角

2016-09-19 11:20:08 1968

原创 unity源码解析Texture2D

游戏中图形的表现大多来自于纹理,纹理使用最多的是Texture2D,Texture2D继承自Texture,Texture里面大多是对纹理的一些参数的设置,那些设置对于2d3d纹理是通用的,本篇就来看看texture2D具体是如何工作的。using System;using System.Runtime.CompilerServices;using UnityEngine.Internal

2016-05-07 23:06:06 10664 2

原创 unity源码解析Texture

Texture类继承自Object是作为一个Texture2D与Texture3D的基类存在的,一般也并不直接使用它,且其本身也并没有对纹理数据的存储using System;using System.Runtime.CompilerServices;namespace UnityEngine{    public class Texture : Object

2016-05-07 22:00:34 3266 1

原创 unity源码解析Material

Material这个需要结合shader来讲,计算机图形学里本身就没有Material这个东西,引擎加入这个其实是在shader和主程序之间搭建了一座桥梁,可以说Material是一个着色器管理器,所以很多接口都是对shader的控制。using System;using System.Runtime.CompilerServices;using UnityEngine.Interna

2016-04-08 20:30:32 3943

原创 unity源码解析Transform

Transform这个类继承自Component, IEnumerable。我们在开发的过程中之所以可以对Transform进行foreach,就是因为它实现了IEnumerable抽象方法GetEnumerator,该方法返回一个IEnumerator,而通过重写了IEnumerator中的Current,可以依次获得子对象。废话不多说了using System;using System

2016-04-06 15:27:42 5225

原创 unity源码解析Component

Component 这个没有声明好说的,因为他的方法实现基本都在GameObject中,就是上一篇中的额内容,就单单贴出源码好了using System;using System.Collections.Generic;using System.Runtime.CompilerServices;using UnityEngine.Internal;using UnityEngineIn

2016-04-06 11:32:36 3156

原创 unity源码解析GameObject

using System;using System.Collections.Generic;using System.Runtime.CompilerServices;using UnityEngine.Internal;using UnityEngineInternal;namespace UnityEngine{    public sealed class

2016-04-06 11:21:36 2582

原创 unity文本自发光效果

项目要求一个文本自发光的效果,网上搜索了一下法线并没有找到有关代码,于是只能自己动手写了一个,先上效果吧这里其实只用到了简单的模糊效果,本来想用的高斯模糊,但是发现效果还不如简单的模糊效果。下面是片元着色器的代码float getTransparent(sampler2D MainTex, float2  uv) { fixed4 result = tex2D(_Main

2016-03-16 14:49:07 16357 7

原创 unity选择关卡的跑马灯效果

最近项目中需要做一个类似乱斗西游的选择关卡的效果,如下所示涉及到的知识点也就四元数在旋转中的应用。四元数公式:    q.w=cos(a/2)     q.x=RAix.x*sin(a/2)    q.y=RAix.y*sin(a/2)    q.z=RAix.z*sin(a/2)首先,需要需要假定一个旋转的半径,然后在该空间

2016-03-09 16:14:31 3959 4

原创 模拟实时光照下的阴影

在3d游戏中,实时光照是一个特别大的消耗,不仅是因为对于颜色的计算,还有消耗在绘制实时阴影,对于手机游戏无疑是一个很大的开销,但是吧,没有实时光照的影子,就显得很呆板,这里就说明一下3d游戏中绘制阴影的原理。太阳光可以看做是一个平行光,平行光经过物体,投影到某个平面中,于是在该平面形成了阴影。现在,我们假设需要投影到一个平面上,该平面的方程为ax+by+cz+d=0,其中(a,b,c)

2016-02-24 17:56:29 2794 2

原创 blend关于透明度的弊端和其alphatest的取舍

首先需要说明的是,计算机在渲染一个模型的时候,并不是根据距离照相机的远近来渲染,而是根据本模型的三角形排序来渲染,这个会对我们开发游戏的过程带来一个麻烦。比如:如果一个模型有两层,后面一层排序是处于优先渲染的,那么前面一层最终渲染出来就会遮挡了后面一层,各位看官可能会觉得挡住就挡住啊,反正看不见,可是当前面一层是带透明度的时候呢,怎么办,这时候计算机会将前面一层模型的像素在缓冲区里取代后面一层模型

2016-02-03 12:44:36 1984

原创 u3d游戏中显示模型的网格

在网上找了一下,貌似这个实现的并不多,比较多的是一个付费的插件,本id最初的设想是单纯使用着色器就实现的,折腾了一段时间,还是妥协了,用了c#,嗯,先上效果图:先解释一下原理吧,后面补全代码。unity开放了opengl的图形接口给我们,这给了我们在游戏中绘制自定义图形的机会。首先,我们先要获得目标对象的顶点信息:Mesh mesh = this.gameObject.Ge

2016-01-18 17:28:22 4446 2

原创 谈一下unity3d的光照

其实学习shader的话,搞unity开发,就是《unity 3d shaderLab开发实战详解》。unity在opengl的基础上又封装了了一个表面着色器,本id其实并不怎么喜欢写表面着色器,因为以前学习opengl的时候都没有听说过这个东西,其实表面着色器最终是要编译成顶点和片元着色器的。今天本id突然想说起这个,是因为昨天下午被自己坑了一把,就导致了在unity编辑器上运行正常,手机上

2015-12-09 11:27:58 510

原创 shader中绘制一个心

很早以前做cocos2dx的时候就看到官方着色器代码中已经有了一个现成的心型代码,故而网上也是有很多基于这个代码的,不过我觉得那个例子并不方便理解,所以就动手写一个容易理解的心型,核心数学公式是利用了笛卡尔的心型公式r=a(1-sinθ)。首先是最终结果示意图下面是完整的着色器代码:Shader "Custom/Heart" { Properties { _MainTex

2015-12-02 15:47:03 556

原创 3d游戏中剧情开启扭转镜头的实现

很多3d游戏中在玩家与npc发生对话时候会有一个扭转镜头的动画,其实实现起来并不是很难,只是略微涉及向量的点积和叉积,先上代码吧,这是在unity中运行的using UnityEngine;using System.Collections;public class CameraAction : MonoBehaviour { public GameObject m_npc; //npc

2015-11-25 19:23:48 569

原创 关于斜视椎体的矩阵上解释

今天在查找斜视椎体是怎么回事的时候,看了一下unity圣典的官方介绍,链接是:http://game.ceeger.com/Manual/ObliqueFrustum.html我发现这里解释的不是很清楚,核心代码为function SetObliqueness(horizObl: float, vertObl: float;) { var mat: Matrix4x4 = camer

2015-10-27 11:20:14 634

原创 unity的图像边缘检测以及简单的模糊效果

首先,看下边缘检测的效果(其实这个边缘检测我是从cocos2dx的官方着色器里面拿过来加以修改的)给image添加一个材质,而材质上的shader是这样的Shader "Custom/Edge" { Properties { _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}//主相机的纹理 } SubShader {

2015-10-22 17:05:40 11883

原创 unity3d创建一个跟随人物的血条

在游戏的战斗中经常需要使用到一个能够跟随人物位置变化而变化的血条,由于项目用到,就动手写了一个,作为巩固一下里面需要用到的坐标变换的知识。我们项目中ui层使用的照相机跟场景中的照相机是独立的,所以这个例子中需要两个照相机,一个用来显示血条,另外一个用来显示角色,当然,需要保证角色的屏幕坐标跟血条的屏幕坐标要保持一致。惯例先来上最终效果图:上面三幅图中,不管球体怎么移动,血条在屏

2015-10-12 15:55:55 8289

原创 unity3d的斜边分屏实现

昨天看到蛮牛上有个练手的文章,要求是实现unity斜边分屏,就是将屏幕分成两个三角形,分别显示两个照相机显示的内容,有些端游也出现过,而且网上也好像没有这样的例子,觉得有趣,就写了一个早上,实现了它,先上效果图:上面的例子中,两个照相机对准的是同一个立方体,触摸右下角的区域则旋转立方体,触摸左上角则移动立方体,达到了简单的分屏控制效果。简单说一下步骤:1,创建两个照相机

2015-10-08 16:41:11 1977

原创 unity中的万向节锁具体体现

之前写过一篇关于万向节锁的文章(http://blog.csdn.net/lj820348789/article/details/48264049),当然,那都是理论上的,下面来看看在实战中遇到的万向节锁问题,代码如下:public class Rotation : MonoBehaviour { // Use this for initialization void Start () {

2015-10-05 15:41:29 2000

原创 unity3d后期效果的重影

后期效果对于unity来说还是挺耗性能的,因为是对整屏幕逐像素计算,c#代码:

2015-09-25 10:26:40 3293 3

原创 unity3d制作弧形血条,魔条

第一步,我们需要先准备好一张弧形素材图片资源:第二步,把该资源在unity中按照如下设置:第三步,在unity中创建一个image,并且把资源拖给该image,就变为如下所示需要注意点击一下set native size,图片才会显示真实大小第四步,给该图片添加一个材质,并给该材质添加一个带透明通道的着色器,为此我们需要动手写一个着色器附上shaoder:第

2015-09-17 10:33:38 2549 2

原创 万向节锁的理解

今天看了一下万向节锁,觉得挺有意思,假设旋转使用欧拉角,那么当绕着y轴旋转90度的时候,会出现z轴与原来的x轴重合,那么(x, 90, z)则可以表示为(x-z, 90, 0),如此,丧失了一个维度,所以就出现了四元数来表示角度

2015-09-07 12:38:04 1509

原创 3d地图的a*寻路

对于2d地图的a星算法其实很多。原理都是一样的,我做这个的3d的寻路其实只是在2d地图数据中加入了一个高度的数据,而在权重中由原来的两个坐标的勾股定理变为三维坐标系的勾股定理,以前我做cocos2dx开发时曾写过一个lua版的a星,就用这个作为说明吧(涉及a星的原理就不必再说明了,很多博客都会有):其中的mapInfo可以更改为如下self.MapInfo =     { 

2015-09-07 10:53:01 4915

转载 反射矩阵的推导

对于反射矩阵,有许多相关的文摘,博主相当于是做个读书笔记,自己试着推导一下

2015-09-05 13:11:45 2086

原创 使用cocos2dx做强制新手引导的触摸区域误差的个人解决方案

前几天有个朋友问我之前我的项目中新手引导是怎么做成的触摸很准确,而之前开发这个功能时候我是突发奇想,不知有没有人也是使用了这个思路。由于本人目前已经不接触cocos开发,便只简单叙述一下思路。首先设计一个覆盖层,新手引导的框框全部显示在这一层上,也就是按钮区域会有高亮效果,并且高亮处的触摸会直接穿透该层,从而触发下面层的按钮事件,使得引导得以进行,说到这里,应该很容易理解,但是问题来了,由于穿

2015-09-02 16:16:24 1004

原创 Angry Bots水面反射效果剖析

这两天研究了一些unity官方的例子Angry Bots,发现其中的水面反射挺有趣,就算是作为读书笔记写下来吧。图中显示了地面的水相当于一块模糊的镜子一样。就先来说说其中的原理吧,生活中你站在一块镜子面前,看到的东西都是面向镜子的那一面,就相当于镜子中有一个你(虚像)正朝着外面看一样,高中物理可以解释。为此,我们必须准备一台辅助的camera来充当镜子中的你(虚像),于是得到一个相

2015-08-31 21:53:00 2096

原创 unity3d边缘发光效果

这是本人在学习unity的shader的一些理解,效果图如下核心代码为void surf (Input IN, inout SurfaceOutput o) {fixed4 t = tex2D (_MainTex, IN.uv_MainTex);o.Albedo = t.rgb;o.Alpha = t.a;  half rim = 1.0 - saturate(do

2015-07-21 17:48:37 6277

原创 关于cocos2dx开发中的图片资源的一些小技巧

有一定工作经验的游戏开发者都知道游戏运行中内存占用最大的莫过于图片资源,所以关于图片资源的管理需要有一定的把握,一般开发中使用的格式为png格式,因为这种格式是全彩色,然而jpg是不支持透明度的,而且png的压缩率比较高,这样有一个好处就是,程序在读取图片资源的时候开辟的临时存储空间会较小。我们来看一下cocos2d-x中支持的像素格式:enumclass PixelFormat

2015-07-16 05:54:39 1144

原创 unity3d中的addChild

很多从cocos2d-x转unity3d的朋友会面对unity3d中的父子关系不知所措,所以就稍微提下,unity3d中的父子关系是由transform中的parent决定的,c#中可写成如下所示GameObject obj = GameObject.FindGameObjectWithTag ("MainCanvas");//取得画布        GameObject newNod

2015-07-10 20:01:55 3651

原创 关于dll注入的hook

LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam){OutputDebugString(L"---------------------------事件");return CallNextHookEx(hookResult, nCode, wParam, lParam);};BOOL APIE

2015-01-12 15:39:42 770

原创 cocos2dx3.0系统文本描边的shader实现方式

上面这个是系统文本的实现方式,所以我们只需要对_textSprite进一步处理就可以得到想要的效果,但是_textSprite这个成员是protected,个人比较懒散,就直接让他public了,于是出现了下面这个步骤:接着可以对它进行任何想要的操作,我自己实现的glsl描边代码如下:varying vec4 v_fragmentColor; varying vec2 v_te

2014-12-23 22:12:27 868

unity游戏开发之高仿原神主界面操作

资源详细情况:https://blog.csdn.net/lj820348789/article/details/121049215 在Unity 2018.4.36f1 (64-bit)上开发,建议在2018及以上版本的unity上运行

2021-10-30

二段构建在unity游戏开发中运用示例

博主在Unity 2018.4.36f1 (64-bit)和Unity 2020.3.21f1c1 (64-bit)正常运行,详细介绍前往https://blog.csdn.net/lj820348789/article/details/120973123

2021-10-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除