在上一节我们介绍了刚体,但刚体只能使物体可以在力的作用下运动,小球之所以能撞到地面而不是穿过地面,是因为在创建物体时,U3D自动为每个物体附加了碰撞器,有了碰撞器,才会使物体正常的碰撞,而不是穿过。

接着上节的项目,选中Shere,点掉物体的材质渲染Mesh Renderer选项,在Scene视图里的绿线就是碰撞器

在碰撞器的属性中我们可以看到,U3D允许我们手动调节碰撞器的位置和大小(这里告诉大家一个小技巧,鼠标放在X,Y,Z,Radius,当鼠标变成两个左右对立的小箭头时,上下移动鼠标可以调节编辑框里的数值)

对于简单的几何物体,碰撞器相对简单,而当物体的模型是一个个鲜活的人物,球形碰撞器或者方盒碰撞器显然无法正常模拟物体的碰撞范围,这时就需要用到网状碰撞器。选中小球,在菜单栏选择Component——>Physics——>Mesh Collider在弹出是否替换碰撞器的对话框中选择替换,这样我们就为物体添加了网格碰撞器,在Scene视图,我们可以看到,网格碰撞器是按照物体的形状精密的排布,这样,不论物体是什么形状,我们都可以为它添加碰撞器了,但值得注意的是:两个网格碰撞器是不发生碰撞的

触发器:

在游戏中我们常常遇到这样的场景,走近一片特定区域,人物就会被传送或者遇到怪物,这就是我接下来要介绍的触发器(概念太过学术,不喜欢,就不说了),在上图中选中Is Trigger,碰撞器便成了触发器,需要注意的是,触发器是可以被穿越的,不然我们怎么进入这边区域呢,对吧

和碰撞器一样,触发器也有相应的行为函数:

OnTriggerEnter:当物体进入触发器的一瞬间触发

OnTriggerStay:当物体进入触发器后离开触发器前触发

OnTriggerExit:当物体离开触发器的一瞬间触发

为了让大家理解触发器,我们接着上节的项目,做一个小测试

选中Cube,将它作为触发器,将下面的脚本拖到Cube上

[csharp] view plaincopyprint?
  1. using UnityEngine;
  2. using System.Collections;
  3. public class TriggerTest : MonoBehaviour {
  4. // Use this for initialization
  5. void Start () {
  6. }
  7. // Update is called once per frame
  8. void Update () {
  9. }
  10. void OnTriggerEnter(Collider other)
  11. {
  12. print(other.gameObject.name + "Enter");
  13. }
  14. void OnTriggerStay(Collider other)
  15. {
  16. print(other.gameObject.name + "Stay");
  17. }
  18. void OnTriggerExit(Collider other)
  19. {
  20. print(other.gameObject.name + "Exit");
  21. }
  22. }
using UnityEngine;
using System.Collections;
public class TriggerTest : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter(Collider other)
{
print(other.gameObject.name + "Enter");
}
void OnTriggerStay(Collider other)
{
print(other.gameObject.name + "Stay");
}
void OnTriggerExit(Collider other)
{
print(other.gameObject.name + "Exit");
}
}

运行结果:

我和小伙伴们一起学Unity3D(六)碰撞与触发器相关推荐

  1. 和小伙伴们一起学Unity3D(六)碰撞与触发器

    在上一节我们介绍了刚体,但刚体只能使物体可以在力的作用下运动,小球之所以能撞到地面而不是穿过地面,是因为在创建物体时,U3D自动为每个物体附加了碰撞器,有了碰撞器,才会使物体正常的碰撞,而不是穿过. ...

  2. 我和我的小伙伴们一起学Unity3D(三)GUISkin 界面皮肤

    调试完上节的GUI控件,那有些爱美的小朋友可能会在心里怒喊,我擦!老子裤子都脱了就给我看这么难看的控件,坑爹呢 ,那好,为了不被小朋友拿西瓜刀砍死,今天就教大家如何制作游戏开始界面.废话不多说,先上本 ...

  3. 视频教程-unity3D 六周带你开发《王者荣耀》-Unity3D

    unity3D 六周带你开发<王者荣耀> 7年从业经验,精通ios.安卓.linux等技术,曾主导开发苏宁易购项目.苏宁电子书项目.百阅阅读器项目.杭州葫芦网项目.苏宁云信项目.苏宁易付宝 ...

  4. 【跟我一起学Unity3D】做一个2D的90坦克大战之AI系统

    对于AI,我的初始想法非常easy,首先他要能动,而且是在地图里面动. 懂得撞墙后转弯,然后懂得射击,其它的没有了,基于这个想法,我首先创建了一个MyTank类,用于管理玩家的坦克的活动,然后创建AI ...

  5. 扎心!“我学了六个月 Python,怎么还是会找不到工作”

    Python 在编程界,Python是一种神奇的存在.有人认为,只有用Python才能优雅写代码,提高代码效率:但另一部分人恨不能把Python喷成筛子.那么,Python到底有没有用,为什么用Pyt ...

  6. 【跟我一起学Unity3D】做一个2D的90坦克大战之地图编辑器

    从10月20号到现在,Unity3D也学了10天了,对于Unity3D也有了一个大致的了解,有必要做一个小游戏来检测一下自己的学习成果了.经过两天的努力,终于总算是做出来了一个可以玩的坦克大战了.首先 ...

  7. 2019该怎么学unity3D游戏开发?

    Unity 3D本来是由德国的一些苹果粉丝开发的一款游戏引擎,一直只能用于Mac平台,所以一直不被业外人士所知晓.但是后来也推出了2.5版,同时发布了PC版本,并将其发布方向拓展到手持移动设备.怎么学 ...

  8. 扎心“我学了六个月 Python,怎么还是会找不到工作”

    在编程界,Python是一种神奇的存在.有人认为,只有用Python才能优雅写代码,提高代码效率:但另一部分人恨不能把Python喷成筛子.那么,Python到底有没有用,为什么用Python找不到工 ...

  9. Unity3D教程:简单触发器实现自动开关门

    首先确保你已经对门进行了动画的设置. 选择Window->Animation打开动画窗口,选中需要添加动画的门之后点击红色按钮创建新动画. 选中一个需要添加动画的要素之后(比如Postion.x ...

最新文章

  1. 李飞飞团队最新研究 :「四步」AI方案助老人抵抗新冠肺炎,联合学习降低个人隐私风险
  2. Acwing291. 蒙德里安的梦想:状态压缩dp
  3. Ansible-Playbook-template算数运算以及流程控制
  4. update关联其他表批量更新数据
  5. 视频 | 为何我对小鹏NGP“半信半疑”
  6. python二分法代码_Python的算法之二分法
  7. 勒索软件好多都使用恶意LNK链接文件欺骗用户 来看趋势科技分析新型LNK-PowerShell攻击...
  8. 【转载】如何制作python安装模块(setup.py)
  9. OpenCV实现图像翻转
  10. python中seth是啥意思_python中的seth是什么意思
  11. 杰控组态自定义串口通讯的经验
  12. android webview 跳转到浏览器,Android WebView或手机浏览器打开连接问题解决办法总结...
  13. Struts的增删改查
  14. 极化电磁波matlab,基于Matlab的电磁波极化仿真.pdf
  15. Springsecurity+cas整合后无法单点登出
  16. 听说你想进大厂?当心这13个MySQL送命题!
  17. 直播源代码图片验证码
  18. Android 面试必备之 JVM 相关口水话,flutterpageview动画
  19. 信号完整性基础05:特殊的串扰-差分信号(2)
  20. 大型电商平台设计实例:电商平台项目工程、数据库选型、代码库

热门文章

  1. 完全禁止WIN10自动更新的方法
  2. 客户端远程连接MySQL出现2003-Cant connect to MySQL server on xxx
  3. ESLint-[转自 花裤衩 的掘金]
  4. 计算机应用能力考试和软考哪个有用,软考中级哪个最容易过 哪个含金量最高...
  5. AI领域真正最稀缺的人才是会庖丁解牛的那个人
  6. 【golang】Go语言学习-time包
  7. 情人节程序员用HTML网页表白【粒子动画】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  8. 日期或时间在tableau中的显示及access中时间格式的变换
  9. 错误NDK is missing a platforms directory.
  10. 沪深股票历史财报数据查询系统网络共享版