- 博客(65)
- 收藏
- 关注
原创 Unity 协程
IEnumerator协程是伴随着主线程⼀起运⾏的⼀段程序。 协程与协程之间是并⾏执⾏,与主线程也是并⾏执⾏。必须返回 Yield Return功能1协程用来计时很方便,便于实现达到一定条件时,几秒后执行某个动作2www类(下载类)需要用协程创建下载对象 WWW data = new WWW(下载地址); 等待下载①Yield return data②While(!data.isDone){yield return 0;}...
2021-01-24 17:25:41 242 3
原创 Unity 龙的AI
(没有找到新版动画的怪物素材)过场cg:龙在角斗场飞行一周缓慢降落,走到场地中央(测试场景)(人物技能。。。)过场cg代码using System.Collections;using System.Collections.Generic;using UnityEngine;public class GuoChangMV : MonoBehaviour { private Animation ani; private Vecto...
2021-01-18 21:40:18 483 2
原创 Unity 摄像机跟随人物(第三人称)
Perspective 透视相机将用完全透视的方式来渲染对象。Orthographic 正交 不会随着距离扩大视眼相机将用没有透视感的方式均匀地渲染对象Field of view 视野范围 (滚轮调整扩大视角)相机的视角宽度,以及纵向的角度尺寸。Near 近点开始描绘的相对于相机最近的点。(距离摄像机过近的物体不会被摄像机看见)Far 远点开始描绘的相对于相机最远的点。using System.Collections;using Sys...
2021-01-17 20:27:12 2411 2
原创 Unity 背包移动装备
新建一个命名空间using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using UnityEngine.EventSystems;namespace BagSystem { public class EquipItem : BagItem, IBeginDragHandler, IDragHandler, IEndD.
2021-01-15 20:18:39 363 4
原创 Unity UI 06 小地图
真正的游戏一般使用的是美工绘制的迷你地图,通过计算人物在场景中的位置和朝向来控制小地图在没有条件的情况下,下列方法能凑合用。。。使用UI中的RawImage在project面板中新建一个render Texture新建一个摄像机悬挂在人物头顶,将render Texture拖拽到摄像机的Target Texture属性栏中,这样render texture就会变成摄像机所照到的景象,在人物头顶设置一个图片或者物体,带上箭头图片(红圈中是人物)建好UI,最后得到的.
2021-01-13 21:39:41 206 1
原创 Unity UI 05下方技能栏和功能栏的搭建
搭建技能栏和功能栏需要用到布局组件有三种布局组件:1.HorizontalLayoutGroup(水平布局):横向布局,可以是各个图片按固定距离排列,便于实现右下角的横向功能栏 padding边距 space间距 child Alignment子物体对齐方式 childForceExpend自适应宽高2.VerticalLayoutGroup(垂直布局):纵向布局,右下角的竖着的功能列表...
2021-01-13 21:27:12 531 1
原创 Unity UI 03 UI间父子关系和精灵
UI之间是有父子关系的子对象会显示在父对象之上(父对象会被子对象遮掩)兄弟对象是,后面的兄弟会遮盖前面的兄弟如图,黑色图片会遮盖他的兄弟白色图片精灵Sprite为了制作方便,美工会把许多按钮的图片同时放在一张大图片中,(或者是2d人物动画也会放在一张大图中)可以使用精灵功能进行裁剪,从大图中裁剪出各个按钮的图片如下所示:(用于UI的图片都需要设置为精灵模式)上面的图的裁剪方法:找张合适的图先设置成multiple点击sprite e...
2021-01-12 22:20:57 440 2
原创 Unity UI 02 锚点、轴点
锚点和轴点确定UI的各个部分在他父对象的相对位置 锚点: 图中白色图片左上角的白色标记(这是四个小三角组成) 当四个标记在一起时,子对象不会随窗口改变而放大缩小;(窗口放大时图片大小不变可能会出现问题) 当四个标记左右两边分开的时候,子对象不会随着父对象的高变化而变化,而只会随着宽的大小变化 当四个标记上下两边分开的时候,子对象不会随着父对象的宽变化而变化,而只会随着高的大小变化; ...
2021-01-12 21:35:07 679 1
原创 Unity UI 01 canvas画布
首先得新建一个画布canvas(可以有多个)所有的UI都需要在画布上(右下角是地形)UI的transform组件是比较特殊的,涉及到锚点轴点等。。。有三种渲染模式Render Mode1.Screen Space - Overlay :不需要摄像机,永远显示在屏幕的最上层,通常用在纯2d的UI,如血条、技能等 Sort Order 层编号,涉及到上下层的问题2.Screen Space - Camera : 需要摄像机,可以2d、3d混合,比如背包...
2021-01-11 22:44:10 410 1
原创 Unity 导航系统Navigation 02人物测试
设置一个胶囊提代替人物进行测试添加组件 Nav Mesh Agent添加代码控制using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.AI; //现在导航在unity.AI中public class textNav : MonoBehaviour{ private NavMeshAgent agent; private Ray
2021-01-10 11:28:47 213 3
原创 Unity 导航系统Navigation 01地图的创建
地图的创建首先选中要设置导航的物体(地图、树木、建筑等),设置导航静态windows中找到navigation(Unity 2018把navigation放在window->AI里) (简单搭建的场景)点击Bake烘焙,设置属性:Agent Radius:角色半径Agent Height:角色高度Max Slope:角色可以爬的最大坡度Step Height:角色可以上的台...
2021-01-10 11:03:01 259 4
原创 Unity 灯光系统
灯光主要有三个类型1.平行光:Directional 不受位置影响,放在哪都一样 会受到旋转影响,可以用旋转实现游戏中的昼夜交替2.聚光灯:Spot 做动画(MMD)时 Range 范围:指得是光线的长度 Spot Angle:聚光灯的聚焦程度,越大照出的圆形越大3.点灯光:PointIntensity 光照强度Mode 有RealTime 实时渲染和Baked烘培 和mix 混合...
2021-01-09 21:08:28 507
原创 Unity 声音组件 Audio Source(声源)和Audio Listener(声音接收者)
Audio Source(声音源,发出声音的东西)可以有多个Audio Listener(声音接收者)只能有一个AudioClip 拖入声音片段Output 默认为AudioListener(声音接收者),可选为自制的AudioMixerMute 静音PlayOnAwake 游戏开始时播放声音Loop 循环Priority 优先级(0表示最优先,256代表最不重要,默认128),超出设备允许音源上限时,会替换低优先级音源Volume 音量Pit...
2021-01-09 20:41:34 3750 2
原创 Unity 动画系统 07 动画层和IK动画
动画层:融合不同部位的动画主要有三个部分1.权重weight 该层动画的融合比例2.Mask遮罩 就是之前说的用来实现边跑边攻击的功能图中人是面朝我们的,原点可以点击设置成红色,红色时播放动画这个部位就不会动。(人物模型必须有骨骼)3.IK Pass 支持IK动画的播放IK动画:打开动画所在层的IK PassOnAnimatorIkIK部位有:手、脚、眼镜(LookAt)代码实现方式:animator.SetIKPosition...
2021-01-08 20:26:45 307
原创 Unity 动画系统 06 动画添加代码
在动画状态机中为某个动画添加代码时默认出现下边的代码。默认时被注释掉。OnStateEnter 在进入该动画时执行一次其内代码OnStateUpdate 每帧执行一次OnStateExit 结束时执行一次OnStateMove 执行动作的时候每帧执行一次OnStateIK 执行IK动画时每帧执行一次(IK动画全名是Inverse Kinematics 意思是反向动力学,就是子骨骼节点带动父骨骼节点运动。比如跳街舞的少年用手撑着身体在地上转...
2021-01-07 22:32:36 683
原创 Unity 动画系统 05 曲线和帧事件
这是一个动画的inspector面板start 和end表示这个动画的播放时长,loop控制循环在动画播放时可能会遇见一些问题,如跳跃、蹲伏、倒地死亡时碰撞体的大小会发生改变,这时Curves曲线 功能 可以很好的解决这个问题。在动画执行时设置曲线,设置好参数,通过调整曲线的弧度 来实时改变参数在动画播放时的大小再通过代码获取参数值来改变碰撞体盒子的大小同理可以设置参数来改变角色喊叫时的声音大小等。Events事件如图,点击左上角小图标...
2021-01-07 22:18:06 436
原创 Unity 动画系统 04 融合树(混合树)
融合树允许通过按不同程度组合不同动画的各个部分来平滑混合多个动画可以方便的实现从一个动作过渡到另一个动作,会让动画播更加流畅如一个人物 跑动、左转、右转等动画构建融合树后让人物的移动更加的逼真1D和2D融合1d融合需要1个参数,2d需要两个参数 2d融合时 这里我来融合了我的rpg游戏中法师人物的所有技能动画。通过改变skill_number参数来控制人物释...
2021-01-07 21:53:08 1042
原创 Unity 动画系统 03 动画间的连接问题
这是我做的rpg游戏的法师角色的动画状态机用moveSpeed参数控制人物是否在移动,如下图拖入两个动画后右键单击一个动画,make transition来建立动画间的联系,也就是图中带箭头的白色线。带箭头的蓝色线表示从右边动画切换到左边动画,右侧是设置切换条件的地方。has exit time 表示两个动画切换是否需要等待一小段时间,一般为了流畅我都不选。condition表示切换条件,根据四个参数类型,切换的条件也会有所不同。本图是指速度低于0是自动切换为待机动作。.
2021-01-07 21:52:03 2240
原创 Unity 动画系统02 图层和参数
Animator组件播放动画需要动画控制器,在Project窗口创建一个Animator Controller。layers 图层 Parameters 参数一、图层图层具有遮挡效果,如:要实现跑动中攻击但有没有相应的动画文件时。我们可以创建两个图层,攻击和跑动分别位于两个图层,分别设置权重,这样unity就会播放混合后的动画从而实现跑动中攻击的动作二、参数参数有四类1.float2.int float和int功能类似...
2021-01-07 21:29:50 1134
原创 Unity 动画系统01 Animator与Animation
Animator组件和Animation组件都可以用来播放动画。Animator组件使用animator组件时需要用到动画控制器Controller,在Aseets中找到用到的动画文件拖入,并且建立彼此的联系。Avatar(阿凡达?)指的是模型的骨骼文件。(骨骼文件便于实现模型的动作,建模时会创建)apply root motion这个属性是用来控制物体在播放骨骼动画的时候是否应用骨骼根节点的运动参数。简单来说就是建模师制作动作时(如跑动时),模型的位置会随之改变..
2021-01-07 21:11:32 346
原创 unity 导航系统
很好理解,就是自动寻路功能。。。。导航⽹格(NavMesh):1、设置导航静态物体 (NavigationStatic)2、烘焙⽹格前的设置 a.打开Navigation窗⼝ b.设置⻆⾊Size Agent Radius(⻆⾊半径) Agent Height(⻆⾊⾼度) Max Slope(⻆⾊可...
2020-04-09 21:10:30 422 1
原创 unity www下载
可以在程序运行后,下载图片、文本、视频等并显示在ui上或者存到本地等...也可以在摄像机或者物体上播放视频........///////下载速度可能巨慢,不建议下载视频建一个简单的UI,画布加两个图片.......注意:下载⽅法必须是协程⽅法!!using UnityEngine;using System.Collections;using UnityEng...
2020-04-09 20:56:57 420
原创 unity 协程的用法
概念:伴随着主线程⼀起运⾏的⼀段程序。协程与协程之间是并⾏执⾏,与主线程也是并⾏执⾏。协程可以用来计时,例如lol生产野怪,在怪物死亡时调用计时生成野怪的协程,那么这段程序只会在野怪倒计时的时候执行,生成野怪后协程就会关闭,比起直接写在主进程里节省性能。关键字IEnumerator协程必须返回 yield retrunyield return 【具...
2020-04-09 20:44:17 390
原创 unity项目:坦克大战:最终效果截图
由于笔记本性能有限,不能搭建较好的地图。。。。。。。。。。。敌人发现我们,生成发现信号打中敌人,打印awsl,敌人消失了。。。。老年人手速截不到图被打中打印gameover...
2020-03-29 16:56:46 207
原创 unity项目:坦克大战:炮弹预设体
给炮弹预设体添加刚体和碰撞体组件和一个脚本。炮弹预设体就是个球,生成点在坦克的炮筒上,在炮筒上创建一个空对象来标记生成位置,坦克的前方是炮弹的飞行方向。using UnityEngine;public class Bullet : MonoBehaviour { [Header("一个游戏对象")] public GameObject obj; [Hide...
2020-03-29 16:47:30 493
原创 unity项目:坦克大战:敌人预设体的代码
敌人预设体添加两个脚本。第一个是敌方坦克AIusing System.Collections;using System.Collections.Generic;using UnityEngine;public class emptyIsKill : MonoBehaviour { public float moveSpeed=10; public float rotat...
2020-03-29 16:44:37 289
原创 unity项目:坦克大战:自己的坦克代码
将代码添加到要控制的坦克身上,添加刚体、碰撞体public class TankMove : MonoBehaviour{ [Header("炮弹的预设体")] public GameObject bulletPrefab; [Header("移动速度")] public float moveSpeed = 1; [Header("转身速度...
2020-03-29 16:40:23 1192
原创 unity项目:坦克大战:要求
要求: 主角:移动,开火,摄像机跟随 敌人:随机生成在空地,间隔几秒生成一个敌人,设置敌人最大数量。。。。。。。。 炮弹:主角的:击中敌人敌人销毁 敌人的:击中主角打印死亡(暂时没有UI)敌人AI:随机转身,向前移动,随机开炮 判断距离,主角靠近生成发现信号并转向主角准备开火道具:炮弹变强、几秒无敌...
2020-03-28 10:55:17 254
原创 unity 物理射线Ray
射线组成部分:起点和方向射线是用来检测的,玩家看不到ScreenPointToRay :将屏幕上的点转换成射线发射射线:1.Raycast:返回射线第一个碰撞的物体2.RaycaastAll:返回所有碰撞的物体(射击类游戏)RaycastHit:碰撞到的物体collider:碰撞到的物体的collider组件point:碰到的点...
2020-03-28 10:44:57 314
原创 unity 碰撞体组件,刚体组件,触发事件
碰撞体组件用来检测碰撞:collider有box、sphere、capsule、mesh等。。。表示不同形状流程:将碰撞体组件添加到物体上,调整包围盒的大小,再通过代码检测碰撞。产生碰撞的条件:1.两个物体都有碰撞体组件2.至少一个物体带有刚体组件:RigidBody3.两个物体相对运动导致包围盒碰撞刚体组件: 可以让物体获得重力阻力等 常...
2020-03-27 16:37:36 570
原创 unity 爆更09 预设体创建,用代码销毁。
预设体一般保存在Prefabs文件夹内。比如我们做一个模型,扔到Prefabs文件夹内自动就会成为预设体。用代码实现预设体的创建,按下fire(设置为空格或者你喜欢的按键),instantia函数用来创建预设体。第一个参数是预设体,第二个 位置,第三个 旋转firePoint是游戏对象,可以创建一个空对象用来找到我们的枪口位置。直接把他当成枪的子对象,由于是空对象,所有我们...
2020-03-09 22:06:23 795
原创 unity 爆更08 按键问题。
如何操作我们想要的操作东西。。。点击Edit--project Settings--input看到这大家就可以自行领悟了。。。当然还是需要代码的。。。。。public class InputClass : MonoBehaviour { public float speed = 3f; private void Update...
2020-03-09 21:56:57 111
原创 unity 爆更07 天空盒子
unity自带的天空是非常的丑的,我们可以更改他,就如上一篇,我们的剑阵背景就是天空盒子。导入天空盒的素材包。,。。最上面,windows---light---set light 里面,把材质球拖进去。可以看到材质球下面有6张图片。全选这6张图片。右侧这maxSize 调高可以是天空更加的清晰。。...
2020-03-09 21:49:27 271
原创 unity 爆更06 用代码来实现旋转。
导入模型并创建了一堆剑。。。。以下代码需要挂在所有的子剑身上。剑阵的中心只需自转就可以了。。。接着剑阵整体写个移动的代码。注意,剑阵中心需要添加标记,才能让所有子剑找到他并饶他公转。可以为一些剑添加轨迹来查看他的运动状况。轨迹组件:调整红线可以调整轨迹宽度。太宽会很丑哦。最终的结果图:...
2020-03-09 21:43:17 182
原创 unity 爆更05 unity标签
点击加入标签。输入标签名,这样我们可以比较方便的用代码找到需要的游戏对象。也可以用对象名,但是通过标签寻找性能更好。Start只执行一次,而UpDate一帧执行一次,我们找东西找一次就好了。找到之后用名字存起来,之后就可以直接用了。...
2020-03-09 21:31:59 145
原创 unity 爆更04 代码编辑器默认不是vs的问题。
点击 Edit --Preference我这儿已经调好了。如果不是在vs那点击下拉菜单--Browse找到你vs的图标路径,复制粘贴即可。
2020-03-09 21:26:18 308
原创 unity 爆更03 unity脚本与回调函数
unity之前支持c#和js,但是最近的版本只支持c#。unity的脚本必须作为组件挂在游戏对象身上才能够运行。在创建的cube的Inspector里最下面点击 Add Component,输入你想给代码起的名字,点击新的Script完成创建。其中有Start函数和UpDate函数。unity有9大回调函数。cw tab tab 不再使用unity引擎...
2020-03-09 21:22:29 148
原创 unity 爆更02 transform组件
unity的每个游戏对象都有且唯一的组件。position表示物体所在的位置,rotation是旋转的角度(欧拉角),Scale是物体的大小。一般上第一个创建的物体放在0,0,0位置,之后比较方便。更改 Rotation可以使物体旋转。更改Scale可以缩放物体。...
2020-03-09 21:09:57 189
原创 unity 爆更01 地形
Hierarchy窗口右键,创建3d object -Terrain。右侧Insepector窗口会有transform组件,Terrain组件。Terrain组件下的Brushes可以调节笔刷大小和形状,鼠标单击地图可以升起地图,做出简单的山脉形状。第二个按钮下的Settings栏有个Height,可以直接设置整个地图的高度,地图高度>0时按住shift点击地图可以降低...
2020-03-09 21:03:18 221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人