78028人加入学习
(316人评价)
【旧版】零基础入门Unity - 古迹探险(Unity2017)

更新于2017-11-18

价格 免费

collision.conllider 获取碰撞对象信息

发生碰撞——至少有一个物体有刚体属性

[展开全文]
新野 · 2018-11-28 · 该任务已被删除 0

OnCollisionEnter 开始碰撞

OnCollisionExit 结束碰撞

OnCollisionStay 碰撞中

[展开全文]
新野 · 2018-11-28 · 该任务已被删除 0

1.prefab:预制体,在Assets下创建该文件夹,将                  物体拖拽至该文件夹

2.reset:回到了默认状态,不会回到预制体状                    态,可以把原来的删除,直接重新拖一个              预制体即可

3.当把Main Camera设置成预制体又删掉预制体,上面面板Main Canera会出现表示,取消标识:Break prefab instance,与预制体脱离关系

[展开全文]
烟消云散彡 · 2018-11-27 · 该任务已被删除 0

Enemy 敌人

prefab 

[展开全文]
扛刀走针尖2369 · 2018-11-25 · 该任务已被删除 0

1.在Animation文件夹中建立一个动画状态机——在文件夹中右击点击Animation Controller,命名heroController;并把动画状态机赋值给角色当中的animator中的Contorller;

2.编辑动画状态机

选择相应的角色,在window下面有一个animator,可以将animator编辑窗口放到视窗的下面。

3.添加动画

首先添加默认动画,在Project中Animations文件夹中,将默认动画拖入场景中,动画的标志时有点像播放的按钮。

4.状态切换

将Walk动画和Run动画都拖入编辑动画状态机中,然后在Animator左侧面板中,点击parameter一栏,点击加号的图标,添加一个float的变量。回到动画窗口中,按一定逻辑关系一次链接动画,并点击连线出添加条件。

5.在程序中实时更新float speed的值

public animator anim ;

void Update();

anim.SetFloat(“Speed”,agent.Velocity.Magnitude);

 

 

 

 

[展开全文]
瞴眳 · 2018-11-21 · 该任务已被删除 0

1.移动摄像机,与角色保持一定距离,设置好视角。

2.创建一个脚本,命名为FollowTarget。

3.编辑代码

添加变量:

Public Transform hero;

Private Vector3 offset;

在void Start()

offset=transform.position - hero.position;   //offset 是角色和摄像机的差距。

在void Update()

Transform.position = offset+Hero.position;

 

 

 

[展开全文]
瞴眳 · 2018-11-21 · 该任务已被删除 0

通过Nav Mesh Agent 组件,控制角色的移动,通过鼠标点击移动,

1.建立脚本,并赋值给角色。

2.射线检测

判断鼠标是否按下(在Update函数中)

If(Input》GetMouseButtonDown(0)) //其中0代表鼠标左键的按下。

Using UnityEngine.AI

Public NavMeshAgent agent;//在hero的inspector面板中,将Nav Mesh Agent 组件 添加Script的agent当中(通过拖拉),注意在vs中NavMeshAgent在Unity Engine.Ai的命名空间中。

{  Ray ray = Camera.main.ScreenPointToRay(Input.MousePosition);

RayCastHit Hit;

If(Physics.RayCast(ray,out hit))

   {

       agent.SetDestination(hit.point); 

   }

}

3.发现角色在移动转角时,速度比较慢,可以在inspector中的Nav Mesh Agent 中有一个Angular Speed可以设置大一点。

[展开全文]
瞴眳 · 2018-11-21 · 该任务已被删除 0

火光闪烁=Window-Animation 动画效果

[展开全文]
周杰偷 · 2018-11-20 · 该任务已被删除 0

1.导航网格烘培

在Window菜单栏下,选择导航系统。在Inspector面板下,确定Env(包括里面的树、石头、火堆,是为了后面电脑计算角色,避开各种障碍,以最优方式达到目的地)下的所有物体的Static中的NavigationStatic是勾选上的,一般Static勾选上后,里面的NavigationStatic也是勾选上的。

2.生成导航网格在Navigation面板下的Bake(烘培),在面板中,点击Bake按钮进行烘培。

3.烘培后,蓝色部分为可行走的区域,但是问题是,非行走区域面积计算不准确,比障碍面积要大很多。这时可以更改AgentRadius改小一点。这样可以增加可行走区域。

4.怎么可以让场景中的草可以穿过去,把草所在区域变为可行走区域,(选择场景中的草,在Inspector面板中,选择Static的下拉按钮,选择取消勾选NavigationStatic,回到Navigation面板中,重新烘培),即可不把草当成阻碍物。

5.在石头上方也有可行区域

取消石头上方的可行走区域,选中石头(一定是石头的静态网格),在Navigation面板下,Object一栏中,有一个NavigationArea的选项,设置为NotWalkable即可,重新烘培。

6.添加导航网格(让角色在导航网格上行走),

选择角色,在Inspector面板中AddComponent——选择Nav Mesh Agent(代理人),添加后会生成一个圆柱体的线框,保证圆柱体大小高度与角色保持一致——设置Radius和Height参数。

[展开全文]
瞴眳 · 2018-11-20 · 该任务已被删除 0

1.为灯光添加动画

在SampleScene面板中,选择要添加动画的灯光,在菜单栏中的window下,有个animation,点击弹出一个对话框,点击create,选择保存的位置,保存在asset面的animation中,取名为flicker,创建好后,在animation的文件夹中会出现flicker的动画和Pointlight的状态机。(注意如果动画的窗口关闭后,要从新打开这个动画编辑器窗口,这时需要选中这个游戏物体,比如刚才在灯光下添加动画,选中的时灯光这个游戏物体,然后在window中点击animation,即可打开这个动画)

2AddProperty(添加属性)

Intensity(强度),在不同的帧数前,设置不同的灯光强度大小。

3.在播放下下面有个Samples,数值越大,播放的速度越慢,相当于播放率(Play Rate)。

 

 

 

[展开全文]
瞴眳 · 2018-11-19 · 该任务已被删除 0

地形工具 

[展开全文]
周杰偷 · 2018-11-18 · 该任务已被删除 0

1.火堆上的灯光不对,调节灯光即可,但其他灯光并没有改变,所以在调节好灯光的位置时,这时需要在灯光的inspector面板中,点击apply(应用),其他灯光即可统一位置。

灯光图标大小调节:在Scene窗口中Gizmos下拉按钮,在弹出来的列表中,第一个3DIcons(3d图标),可以调节图标大小。

注意:在调节好灯光后,并且Apply后,其他灯光也发生改变,但从顶视图上看时,会发现,在应用后,在Top视角看,其他灯光的位置偏离原位置,这是一种视觉的效果,他的位置还是位于火盆的正上方。

2.创建粒子效果

在火盆下创建一个粒子效果,右击选择Effect,在弹出的界面中选择ParticleSystem。

3.调节参数:

形状:Shape(修改大小Radias)

高度:点击shape后,在场景中,粒子系统周围出现一些点和线,可以通过那些点来改变粒子系统的高度形状大小等。

速度:使用随机速度——在粒子效果速度设置一栏,下拉按钮,设置为范围类随机速度。

生命:

粒子的样子:选择粒子动画,FX

创建粒子材质:在粒子动画下,创建一个粒子动画材质,在Inspector面板,材质的shader设置为particles下的Additive。Texture中,把粒子动画贴图拖入Testure的框中,颜色使用白色。

把材质指定给粒子系统:在粒子系统中有个render,把材质拖入粒子系统下的render下的Material一栏中;这是在Scene窗口中看到的粒子效果并没有播放动画,这时需要粒子系统中有一栏TextureSheetAnimation,把这一项勾选上,下拉,在Tiles(瓷砖)下,设置动画的模式时4*4,即表示是,四行四列的动画。

Tiles:瓷砖数,相当于3dsmax,中的瓷砖数。

播放动画:

动画图样大小:

粒子效果大小:StartSize

粒子数量:Emission中更改为随机大小。

粒子在慢慢变小:SizeOverLifetime

 

 

 

 

 

[展开全文]
瞴眳 · 2018-11-19 · 该任务已被删除 0

1、灯光参数设置

Inspector面板中,ShadowType(影子类型):可以说设置为HardShadow——阴影比较硬,SoftShowdown——阴影比较柔和。(不然没有效果)

2.整体灯光太亮

把环境灯光范围改小一点,即Range 和intensit(强度)改小一点。

3.注意在右侧面板中Light Setting面板,有一项DebugSetting,下面有两个选项,一个是AutoGenerate(每一次,只要改动灯光参数,或者移动灯光,就会自动进行灯光烘培),GenerateLighting(相当于手动构建灯光);

[展开全文]
瞴眳 · 2018-11-17 · 该任务已被删除 0

LightMapping(光照贴图)

光照贴图的烘培

1.window下有个Rendering,弹出的列表中选择LightSetting,并入细节面板,与inspector同排。

2.先选中场景中所有物体,在inspector面板中,勾选右上角的Static,在弹出来的窗口中,选择yes,Charge Children,(改变子对象)。

3.选中要烘培的灯光,在inspector中,Mode选择Baked(烘培,只在烘培时进行计算——realtime  实时进行计算);火光是动态的,所以其灯光使用Mixed烘培。

4.烘培贴图

5、光的3种Mode

realtime:实时计算,

Baked:烘培时计算;

Mixed:实时与烘培时都计算;

 

 

[展开全文]
瞴眳 · 2018-11-16 · 该任务已被删除 0

1.场景灯光调节

场景灯光不需要太亮,调节太阳的角度和光的强度;

2.添加PointLight,颜色偏紫色。

3.添加火堆——石头,火盆,灯光,粒子效果(后面添加),制作成Prefab.

 

 

[展开全文]
瞴眳 · 2018-11-16 · 该任务已被删除 0

光源

直射光:直射光的位置对对关照没有影响,但光照的方向会对场景中的物体的阴影产生影响,同样会对天空盒子上的太阳光斑有影响。

2.重置光源

选择太阳光源的角度,可以发现天空盒子上的太阳在慢慢的升起,这是场景里面光线在慢慢变亮,相当于模拟太阳慢慢重水平线升起的感觉。

四种光源:Directional Light(太阳光)      Point Light(灯泡光源)   Spotlight(手电筒的光)     Area Light (在烘培中使用)

 

 

[展开全文]
瞴眳 · 2018-11-16 · 该任务已被删除 0
  •  
[展开全文]
农夫山泉有点甜 · 2018-11-16 · 该任务已被删除 0

1、如何获取碰撞的信息(和那个物体发生碰撞)

      print("collision.collider");

collider——获取游戏物体相关的信息(包括下面两个信息);

collider:碰撞器,collider.name——游戏物体的名字;

collider.tag——获取游戏物体的标签;

发生碰撞的条件:1、两个物体必须都有碰撞器()且碰撞器没有被禁止;

                            2、其中一个物体必须有正常的刚体(即inspector中rigid body中Kinematic(运动)没有被勾选上,勾选上,禁止物体运动);

 

[展开全文]
瞴眳 · 2018-11-16 · 该任务已被删除 0

1.在project一栏中,建立一个文件夹,命名scripts(脚本),在文件夹下创建一个脚本,script,命名为sphere,把script拖到sphere对象的inspector中addcomponent按钮下面空白处就,即可为对象添加script,点击sphere中添加的脚本,在脚本名称处右击,点击script editor,打开vs编辑器;

2.输出日志:在视窗的左下角,点击一下即可打开;

3.程序:

OnCollisionEnter:开始碰撞;

OnCollisionExit;碰撞接触;

OnCollisionStay :撞击在碰撞过程中执行,但不是开始碰撞执行程序,而是开始碰撞后,第二帧执行,知道结束,这个过程中,每一帧都会执行。

Print();输出文本;

 

[展开全文]
瞴眳 · 2018-11-16 · 该任务已被删除 0

1.触发器:选择collider类型,在其中inspector面板中将trigger勾选上。

2.触发函数:OnTriggerEnter——开始触发。

                    OnTiggerExit——结束触发。

                    OnTriggerStay——过程触发。

3.获取碰撞信息:

print(“OnCollision”+Other.name);

print("OnCollision"+Other.tag);\

其中other代表其他物体,other.name——获取其他物体的名字。

[展开全文]
瞴眳 · 2018-11-16 · 该任务已被删除 0

授课教师

SiKi学院老师

课程特色

图文(1)
下载资料(1)
视频(32)

学员动态