人机交互小课堂——UNITY学习之碰撞与触发检测

1.首先,打开Untiy创建一个3D的界面,点击New新建一个项目,然后点击Template下拉菜单选择3D,然后点击创建项目即可。

人机交互小课堂——UNITY学习之碰撞与触发检测

 2.打开之后就是如下界面。

人机交互小课堂——UNITY学习之碰撞与触发检测

3.然后在右边的Create面板,选择3D Object下的plane新建一个地面,然后,场景内就会出现一个地面。

人机交互小课堂——UNITY学习之碰撞与触发检测

 人机交互小课堂——UNITY学习之碰撞与触发检测

4.然后点击右边的Inspector面板可以调节plane的参数

人机交互小课堂——UNITY学习之碰撞与触发检测

 5.创建一个plane之后,再次选择之前创建plane的面板,创建一个cube,记得是右键

 人机交互小课堂——UNITY学习之碰撞与触发检测

6.创建方块后,在右边面板上选择方块(左键点击cube),然后点击左上方第二个工具,也就是移动工具(快捷键W),方块上会出现三个坐标轴,将鼠标放到坐标轴上,拖动坐标轴,将方块移动到自己认为合适的一个地方。 

人机交互小课堂——UNITY学习之碰撞与触发检测

 7.点击左上方第五个工具(改变大小,快捷键R),因版本问题可能会出现类似于坐标轴的小箭头或者如下图一样的四个点,小箭头的话用上一条的方法将方块拉长,四个点,就点击点进行拖拽。

人机交互小课堂——UNITY学习之碰撞与触发检测

 8.在右边面板里选中cube,然后按住Ctrl加D可以进行复制,因为我们要做四个围墙,所以再复制三个cube就好。

 人机交互小课堂——UNITY学习之碰撞与触发检测

 9.在右边的面板里,选中你想移动的cube,使用移动工具将它移动到你想要的位置,其余的cube也是如此。

 人机交互小课堂——UNITY学习之碰撞与触发检测

 10.在右边Inspector面板中的Rotation中调节cube的旋转角度

人机交互小课堂——UNITY学习之碰撞与触发检测

 11.使用移动工具将这四个cube,移动到合适的位置

 人机交互小课堂——UNITY学习之碰撞与触发检测

 12.给cube换个色,点击右边Project面板中的Create,会出现一个列表,点击列表中的Material,右边面板中就会出现一个材质球。

人机交互小课堂——UNITY学习之碰撞与触发检测

人机交互小课堂——UNITY学习之碰撞与触发检测

13.在右边Inspector面板中的Albedo中给材质球添加一个颜色

人机交互小课堂——UNITY学习之碰撞与触发检测

 

14.点击Albedo后面的小白块,会出现一个色环,将鼠标移动到你想选择的颜色,进行点击。注意不要忘记移动色环中间的小圈圈进行颜色的调节。

人机交互小课堂——UNITY学习之碰撞与触发检测

15.我们选择一个黄色,材质球也会变成黄色,然后点击材质球,按住鼠标不松手,将材质球拖到你想改变颜色的物体上,物体就会变成相应的颜色,比如说可以把黄色拖到地面上把地面变成黄色,然后再使用同样方法将四个cube变换为红色。

人机交互小课堂——UNITY学习之碰撞与触发检测人机交互小课堂——UNITY学习之碰撞与触发检测人机交互小课堂——UNITY学习之碰撞与触发检测

16.在Create面板中创建一个Folder(空文件夹),选择Folder,鼠标右键rename(重命名)将其改名为Material,,将创建的两个材质球拖进文件夹中。

人机交互小课堂——UNITY学习之碰撞与触发检测人机交互小课堂——UNITY学习之碰撞与触发检测

 人机交互小课堂——UNITY学习之碰撞与触发检测

 17.在Create面板中创建一个球Sphere,在场景中用移动工具将球移动到合适的位置。

人机交互小课堂——UNITY学习之碰撞与触发检测

人机交互小课堂——UNITY学习之碰撞与触发检测

18.在Create面板中选择Create Empty,创建一个GameObject,将它命名为Cubes。将四个cube选中,拖到Cubes层级下。

人机交互小课堂——UNITY学习之碰撞与触发检测

人机交互小课堂——UNITY学习之碰撞与触发检测

19.创建一个cube,移动到合适地位,复制三个,分别移动到合适位置

人机交互小课堂——UNITY学习之碰撞与触发检测

20.点击右边面板上的Main Camera,会出现一个游戏视角,点击场景中的小太阳,用移动工具移动,可以切换视角。

人机交互小课堂——UNITY学习之碰撞与触发检测

21.什么是物理属性?在场景中我们将小球往上拉,点击播放键,小球毫无反应。

人机交互小课堂——UNITY学习之碰撞与触发检测

然后,我们在Inspector面板上选择Add Component,然后在搜索框里输入ri,会出现一个以ri开头的列表,选择Rigidbody(刚体组件),再次运行小球,会发现小球会往下落。为什么会这样呢?因为添加Rigidbody(刚体组件)后物体就能在物理控制下运动,即可以受到重力等外力的影响。点击运行,我们就可以发现方块掉了下来停在了地面之上。

人机交互小课堂——UNITY学习之碰撞与触发检测人机交互小课堂——UNITY学习之碰撞与触发检测

 22.在Inspector面板上选择Add Component,然后在搜索框里输入new,就会出现New script,点击,为它重新命名one(一般用英文命名,实在不行可以用拼音),回车,就出现了一个C-script文件,接着创建一个Floder(空文件夹),命名为Scripts,将one拖进Script文件夹,这样可以方便管理。

 人机交互小课堂——UNITY学习之碰撞与触发检测

 23.双击新建的命名为one的脚本,进入Visual Studio2015,然后输入如下代码。

人机交互小课堂——UNITY学习之碰撞与触发检测

 Ctrl+S进行保存,返回场景,会发现Inspector面板上出现一个刚才代码中出现的speed,改变它的数值就可以改变小球的移动速度。而且还可以通过wasd四个键来操作小球的移动。这样我们的准备工作就算完成了,接下来就是今天的主要内容,碰撞与触发检测。

24.现在我们先讲一下碰撞检测,碰撞检测主要有两种方式分别是命名法(mane)和标签法(tag)。这两种方法都需要通过脚本来实现。在刚才咱们已经新建了一个名为one的脚本,现在需要在脚本中打出如下代码:

人机交互小课堂——UNITY学习之碰撞与触发检测

 这两段代码的意义是分别通过判断是否发生碰撞和被触碰物体的名字和标签来调用函数中的语句使被触发的物体消失。Ctrl+S进行保存,返回场景,点击运行,然后操作小球碰撞名为pickup的小方块cube可以看到小方块cube消失了。

 人机交互小课堂——UNITY学习之碰撞与触发检测

 

人机交互小课堂——UNITY学习之碰撞与触发检测

 这里要说一个要点,如果通过标签法(tag)来进行碰撞检测的话需要改变物体的标签,这就需要在物体的Inspector面板上找到Tag这一栏,就是物体名字下面这一栏,然后在里面选择自己想要的标签类型,如果想要自定标签的话,在Tag这一栏的最下边有一个名为Add Tag..这一栏,点开它,然后在Tags下面点击加号添加自己想要的标签,更改之后就可以选择它来更改标签类型得以实现碰撞检测的标签法(tag)。

人机交互小课堂——UNITY学习之碰撞与触发检测人机交互小课堂——UNITY学习之碰撞与触发检测

25.接下来我们讲一下触发检测,触发检测主要有两种方法分别是命名法和标签法。这两个方法也是需要通过脚本来实现的,还是和刚才一样的方法创建并重命名一个脚本TWO,然后双击脚本进入Visual Studio2015。进行对脚本的编辑,主要代码如下图。

 

人机交互小课堂——UNITY学习之碰撞与触发检测

这两段代码的意义是分别通过判断被触碰物体的名字和标签来调用函数中的语句使被触发的物体消失。这里要注意触发检测所用的函数为OnTriggerEnter要和碰撞检测的OnCollisionEnter区分开来。

之后我们在运行之前一定要记得在被接触的物体的Inspector面板上的BoxCollider(盒子碰撞器)里的Is Trigger这个地方进行勾选。如果不勾选的话是无法进行触发检测的。

人机交互小课堂——UNITY学习之碰撞与触发检测

这样之后我们就可以运行了,我们可以看到被小球Sphere触碰到的物体就这样消失了。

人机交互小课堂——UNITY学习之碰撞与触发检测

我们还可以通过更改颜色来更直观的看到触发检测的效果。代码如下,这段代码的意义为如果触碰到名为“colorchange”的物体就获取该物体的渲染器Renderer,调用material中的color然后让它改为你需要的颜色。

人机交互小课堂——UNITY学习之碰撞与触发检测

脚本更改完成后再点击运行我们就可以看到被小球Sphere触碰到的小方块cube就变为了红色。

人机交互小课堂——UNITY学习之碰撞与触发检测

 

好了,以上就是我们今天为大家讲到的碰撞检测和触发检测的相关小教程,我们下次再见。大家如果有疑问可以私信小编哦!谢谢大家!

 想了解更多关于人机交互的知识,欢迎关注我们哦!

微信公众号:人机交互HCI