u3d山峰高度u3d怎么导入模型调整

Unity2D多分辨率屏幕适配方案 - 疯狂的兔子鸡
- 博客频道 - CSDN.NET
转自:/flyFreeZn/p/4073655.html
此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏,即没有使用第三方2D插件,如Uni2D,2D toolkit等开发的游戏,NGUI插件不受这个方案影响,可以完美和此方案配合使用。
---------------------------------------正式开始的分割线-----------------------------------------
先说明一些基本的概念:
1.屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕高度
2.Unity2D中摄像机镜头的尺寸决定了我们实际看到游戏内容的多少,在编辑器中我们可以通过调整摄像机Camera的orthographicSize属性值来调整摄像机的大小。如下图所示,当摄像机orthographicSize属性值等于当前屏幕高度单位的一半时,摄像机大小正好与屏幕大小相等。注意这里提到的是屏幕单位高度的一半,这个数值是经过像素到单位比即Pixels To Units换算的,Unity2D中这个比例的默认值是100,即100像素等于1单位。如果我们的游戏屏幕有640像素高,那么实际换算成单位高度则是6.4个单位,当我们摄像机的orthographicSize值是3.2时,摄像机大小刚好与屏幕大小相等。
(可以通过此选项调整每张图片的像素单位比)
看到这里你可能会发出疑问,Unity编辑器中只能直接调整摄像机的高度,那摄像机的宽度是如何确定的呢?答案就是我们最前面提到的屏幕宽高比。Unity会根据当前屏幕实际的宽高比和摄像机的orthographicSize值来计算出摄像机的宽度值,即:
摄像机实际宽度 = 摄像机orthographicSize&* 2 * 屏幕宽高比
摄像机实际宽度 = 摄像机高度 * 屏幕宽高比
我举个例子说明一下,iPhone4的屏幕像素为640*960,宽高比为2:3,假设Pixels To Units值为100,那么如果设摄像机高度size值为4.8,那么摄像机实际宽度按照公式算出6.4,刚好就是屏幕的单位宽度。
---------------------------------------渐入佳境的分割线------------------------------------------
好了,讲了以上的东西我们就知道为何我们的游戏会在不同的屏幕分辨率的设备上有不同的显示了。
不同的屏幕分辨率,相同的摄像机orthographicSize值会产生不同的摄像机尺寸,不同的摄像机尺寸导致实际显示的游戏内容的不同。
接下来我再提出两个概念,为了方便后文的说明:
1.游戏有效内容,指游戏中一定需要完整显示在屏幕上的内容;
2.游戏实际内容,指全部的游戏内容,包括有效内容和主要是为了适配多分辨率的或其他不重要的目的而增加的内容。
我们的开发一般都会选择在一个固定的设计分辨率上进行,比如常用的iOS竖屏游戏设计分辨率640*960,我们就以这个设计分辨率为例。通常情况下,设计分辨率尺寸就是我们游戏有效内容的尺寸。
采用这个分辨率,我们将摄像机的orthographicSize值设为4.8。假设我们不做任何多分辨率的适配处理,使我们游戏的有效内容区域和实际内容区域尺寸相同,都为6.4*9.6(已经做过像素到单位的换算,下同),让这个游戏运行在一款iPhone5设备上(即屏幕是640*1136)时,我们来看看会发生什么情况。
为了更好的说明,我们先设变量:
游戏有效内容尺寸为gameValidContentSize游戏实际内容尺寸为gameContentSize
摄像机尺寸为cameraSize
实际屏幕尺寸为screenSize
屏幕宽高比为aspectRatio
接着开始计算:
orthographicSize = 4.8
aspectRatio = 640/1136 = 9/16
cameraSize.height = 摄像机orthographicSize * 2 = 4.8 * 2 = 9.6
cameraSize.width = cameraSize.height * aspectRatio = 9.6 * 9 /16 = 5.4
根据计算,我们得到实际摄像机的宽度为5.4,而游戏有效内容宽度是6.4,摄像机宽度小于游戏有效内容宽度,即cameraSize.width & gameValidContentSize.width = gameContentSize.width,这时游戏内容被摄像机裁减!
以下以我做的一个小游戏为例子,我们可以更清楚的看到这个问题:
第一张是在640*960的设备上运行时的效果,一切正常。第二张是在640*1136的设备上运行的效果,可以看到游戏内容被剪得很明显,右上角的按钮都快没有了。
如何解决这个问题呢?最直接的想法是,如果我们的游戏在640*1136屏幕的设备上,摄像机宽度依然保持是6.4,那肯定就不会剪切了。为了做到这一点,我们必须在运行时来调整camera的orthographicSize值。方法很简单,还是套用上面讲到的公式:
aspectRatio = 9/16
为了使cameraSize.width = 6.4,我们计算
cameraSize.height = cameraSize.width/aspectRatio = 6.4 * 16 / 9 (因为除不尽,后面就不继续写了)
camera的orthographicSize = cameraSize.height / 2 约=5.69
我们再一次运行游戏,动态修改camera的orthographicSize值为5.69,可以看到:
宽的方面是完全显示出来了,可是上下都出现了的“黑边”(这里是蓝边,呵呵)。这是因为摄像机的高度已经大于了游戏内容的高度,所以自然会出现没有内容的区域,即“黑边”。为了解决这个问题,我们就需要给游戏增加上下边,直接上和黑边同尺寸的图是一种方法,但是还有一种更简易的办法,直接将游戏背景放大一些,以盖住黑边!这个游戏比较简单,我们就用这个简易的方法,我们将游戏背景放大到1.3倍,如下图:
OK!现在我们的游戏看起来已经很正常了,已经完成了iPhone5的适配。
注意到这个时候我们游戏的有效内容区域已经不等于实际内容区域了,我们放大了背景图片,实际上等于为游戏增加了一层外边缘。如图,在白框内部的就是有效内容区域,在白框外部的就是无效内容区域。整体实际游戏内容区域已经大于了有效内容区域。
-----------------------------------------最终结论的分割线------------------------------------------
根据以上解决分辨率问题的过程,我们可以得出,实际的分辨率适配问题与三个尺寸相关,他们分别是:摄像机尺寸,游戏内容尺寸(包括有效内容尺寸和无效内容尺寸)和实际屏幕尺寸。为了能够显示我们需要的有效内容,并且不显示黑边,我们必须要保证:
摄像机的尺寸既必须要小于或等于游戏实际内容尺寸,又必须要大于或等于游戏有效内容尺寸。如下图,蓝色的线框表示摄像机的尺寸,我们即只要保证蓝色框在白框外,在图内就能保证游戏内容的显示正确。
只要能够确保以上这一点,那么我们的游戏就能够应对几乎所有的屏幕分辨率。
按照这种方案,说到底,解决屏幕分辨率适配的问题,其实就是解决如何让游戏摄像机尺寸限定在给定范围的问题。
总结起来,步骤就是:首先,需要确定游戏的有效内容区域和实际内容区域;然后,游戏启动时,根据实际的屏幕宽高比将你的摄像机尺寸调整到合适你游戏的大小即可。
-----------------------------------------最后的分割线------------------------------------------
最近写了很多小游戏,用这个方案一劳永逸地解决了多分辨率适配特别是Android设备适配的问题。这种方法的好处一方面是只要理解了,操作起来很简单,另外一方面不同于缩放游戏内容的方案,这种方法保证了游戏内容的原汁原味。当然,缺点可能也是有的,暂时能想到的可能是对于一些需要依赖摄像机做效果或者操作的游戏,改变摄像机的大小可能会造成一些影响。目前这方面经验还比较少,希望以后可以不断地完善这个方案。
最后上一下自己写的一段简单的调整orthographicSize值的脚本,用于保证camera的width值不会小于游戏有效内容宽度,有效内容尺寸为6.4*9.6。这个脚本只要附加在游戏的Camera上就可以生效。
1 using UnityE
2 using System.C
4 public class GameCamera : MonoBehaviour {
float devHeight = 9.6f;
float devWidth = 6.4f;
// Use this for initialization
void Start () {
float screenHeight = Screen.
Debug.Log (&screenHeight = & + screenHeight);
//this.GetComponent&Camera&().orthographicSize = screenHeight / 200.0f;
float orthographicSize = this.GetComponent&Camera&().orthographicS
float aspectRatio = Screen.width * 1.0f / Screen.
float cameraWidth = orthographicSize * 2 * aspectR
Debug.Log (&cameraWidth = & + cameraWidth);
if (cameraWidth & devWidth)
orthographicSize = devWidth / (2 * aspectRatio);
Debug.Log (&new orthographicSize = & + orthographicSize);
this.GetComponent&Camera&().orthographicSize = orthographicS
// Update is called once per frame
void Update () {
好了,就先写这么多吧,有问题的朋友可以留言或者发短信给我。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:26133次
排名:千里之外
原创:12篇
转载:18篇
(2)(7)(1)(2)(1)(1)(3)(3)(5)(2)(3)当前位置:&&
页游版高达? 横版U3D《星之战记》特色首曝
GAMEBAR相信大家都很熟悉吧,旗下《》、《古剑奇谭》、《聚仙》等游戏都取得了不错的口碑。此次265G为大家曝光的一款全新U3D页游《星之战记》,是一款“光极源”工作室斥研发的全时3D竞技、APRG类网络游戏。以宏大的太空为背景,高度融合硬科幻元素,力图给玩家展现一个自由的虚拟宇宙世界。(高达有木有!)游戏的设计理念是给玩家绝对自由的游戏空间,也正因如此,星之战记成为一个极其强调玩家互动的科幻世界。游戏围绕着闯关、格斗、竞技为核心玩法,同时也可以一个人控制着上千人规模的军团野心勃勃纵横捭阖的宇宙霸主。(职业很有中国风,古月华夏···)《星之战记》以机甲科幻为主题,配合技能、装备、任务、职业、副官、考古、探索等大家熟知的系统,将一个充满竞技、格斗、机甲风的游戏世界展现给大家。(介个是在月球上么~~~)#p#副标题#e#下面小曝光一下《星之战记》的特色系统:副官系统:副官是一个在远征战役中的一个附属雇佣兵的角色,它们可以提供玩家强大的战场帮助和战斗力提升。不仅如此他还可以进行雇佣、传承、拥有技能及亲密度等功能,副官也会拥有一些属于自己的机甲,玩家需要对副官的机甲进行购买和配置,并养成副官角色,这套系统更偏向于玩家自己指挥官机甲的成长。装备系统作为一款科幻机甲游戏,装备必须够帅才能勾起玩家的幻想。游戏内包括机甲、装备、枪炮、护盾、机翼等超过300多种,并且可以根据玩家自身需要进行:零件合成、打星、分解、升级、洗练、镶嵌、移星等,机甲也可以DIY有木有!(难道这货的前身是大黄蜂?)BOSS系统《星之战记》BOSS分别为两种: 日常BOSS:分成7个层级,不同级别、不同难度、每天有4个时段提供玩家进行挑战,玩家因此可以获得大量的装备道具及稀有材料。 召唤BOSS:其他都和日常滴一样,唯一不同的是需要消耗召唤水晶才可以进行战斗。(仰望星空~~~偶沉醉哒~~~)擂台挑战挑战:玩家可以在挑战系统里面挑战各路英雄,争夺更高的挑战排名与奖励!(此处为擂台,有请两台机甲出场!!!)更多精彩曝光敬请继续关注265G。
找网页游戏,就上265G ! 责任编辑:265G编辑
标签:星之战记ARPG横版游戏
11200010雷囧强赞软文悲剧愤怒搞笑无聊期待
265G推荐游戏官方学习交流QQ群:&&&&站长QQ:
提供主流cms教程
提供数据库教程和设计
提供各种常见网页js代码
提供常用的JS特效代码及在线演示
提供jQuery插件教程及插件下载
提供服务器常见问题及教程
提供站长技术、站长资讯等内容
提供常用开发手册和开发工具
您现在的位置:& >
SINOBANJO---看我一步一步U3D初见三之水下的模糊效果
导读:为地形添加水源、各种水流以及水下的模糊效果书接上文:第一步:打开 Unity3D 软件并导入上一次的firstUnity项目文件。由于我在上一次的...
为地形添加水源、各种水流以及水下的模糊效果
书接上文:
第一步:打开 Unity3D 软件并导入上一次的&firstUnity&项目文件。
由于我在上一次的地形创作中就已经在山峰之间制作了一块洼地,它可以作为一个承载湖水的地方。在场景面板中点击 Y 方向的绿色箭头切换到顶视图,这样可以便于我们很快的找到洼地的所在地方。然后用鼠标滚轮迅速的推进观测距离。接着再到 Project【项目文件栏】找到&Standard Assets &文件夹下的&Water(Pro Only )&【仅限专业版使用,如果是非专业版请转到&Water(Basic)&】文件夹中,拖拽一个 Daylight Water【白天光照效果的水模型】到洼地的中央,并利用场景调整工具中的缩放工具,将水模型调整到合适的大小。紧接着我们再点击场景面板中右上角的白色小方块,将水模型调整到合适的大小。紧接着我们再点击场景面板中右上角的白色小方块,将视角切换到透视图。然后利用场景调整工具中的位移工具,将水模型调整到合适的高度。这时您只需在播放时,将摄像机移动到洼地这个地方就可以看见湖水的效果了。
第二步:但这样的效果略显单调了一些,既然是山中泉水我们还得有一些瀑布和溅起的浪花。为了节约时间,我们直接在 Project【项目文件栏】上方的搜索框输入字符&water f &,就可以查出如图所示的材质和模型。在这里面中,&Water Fountain &是一个喷泉模型,&Water Surface Splash&是一个水面的飞溅模型,&WaterFall&是一个瀑布模型。我们先拖入一个&WaterFall&到洼地,然后利用场景调整工具来调整它的位置和角度。这时的瀑布略显小了一些,我们可以先选中它,然后到它的属性面板去调整成您想要的效果。再接着我们在瀑布下的水面上方放置一个水面飞溅模型&Water Surface Splas h&。由于它的高度一定要和水面高度一致,所以我们先点选水平面看看它 Y 轴的数字,然后在点选&Water Surface Splash &到它的属性面板中输入同样的 Y 轴数字,以确保它浮在水面上。紧接着到它的属性面板中调整它的属性,让改模型变成您想要得到的效果。
第三步:我运行一下游戏,然后将镜头移动到泉水的水面下。大家会发现,水下的视觉和在平地上的视觉效果是完全一样的。这和我们平时的生活现状是不相符的,所以我们还得做一下相应的调整。首先点击&GameObject&&&& &Create Other &&&& &Cube&创建一个立方体,并运用场景调整工具将它调整到整个水洼的实体部分。接着,确保您创建的这个 Cube 是被选中状态,到它的属性面板中,将&Box Collider&卷展栏中的&Is T rigger&复选框打上勾(如果这里不打勾,这个立方体将作为一个实物,当摄像机撞上它时,就像撞上一堵墙,无法通过)。然后再将&Mesh Renderer&卷展栏下的所有复选框全部点掉,使这个立方体只作为一个形 体 存 在 , 而 不 让 它 在 场 景 中 作 出 任 何 的 显 示 渲 染。接着在属性面板的最上方将它的名字由&Cube&更改为&WaterColler&,再选中&Tag&的下拉框&&&&Add Tag&&新添加一个&WaterColler&的标签分类。然将这个&WaterColler&水洼碰撞体的 Tag 也改成&WaterColler&。
第四步:在菜单栏中选中&Assets&&&&&Create& &&&&JavaScript&新添加一个 JS 脚本。到 Project【项目文件栏】找到刚才新建的JS 脚本,按下 F2 键更改它的名字为&UnderWaterEffect&,并双击编辑它,输入如下代码:
private var defaultFog = RenderSettings.
private var defaultFogColor = RenderSettings.f ogC
private var defaultFogDensity = RenderSettings.fogD
private var defaultSkyb ox = RenderSettings.
var noSkybox : M
function OnT riggerStay (hit : Collider) { if (hit.gameObject.tag==&WaterColler&){ RenderSettings.fog =
RenderSettings.fogColor = Color (0, 0.4, 0.7, 0.6);
RenderSettings.fogDensity = 0.04; RenderSettings.skybox = noS } }
function OnT riggerExit (hit : Collider) { if (hit.gameObject.tag==&WaterColler&){ RenderSettings.fog = defaultF RenderSettings.fogColor = defaultFogC RenderSettings.fogDensity = defaultF ogD RenderSettings.skybox = defaultS } }
输入完毕,按 Ctrl+S 保存代码并关闭退出,然后将代码拖拽给摄像机使用。重新运行一下游戏,将摄像机移动到水下,就可以看到一片模糊的景象了。
转载请注明(B5教程网)原文链接:/content-74-619-1.html
网友评论:}

我要回帖

更多关于 word表格高度怎么调整 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信