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

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

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

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

触发器:

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

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

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

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

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

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

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

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】做一个2D的90坦克大战之AI系统

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

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

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

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

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

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

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

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

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

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

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

  9. 【Unity3D】碰撞体组件Collider

    1 前言 Unity3D 中碰撞体(Collider)组件用于检测运动的物体之间是否发生碰撞,也可以作为触发器使用.产生碰撞的条件是: 2 个游戏对象都有 Collider 至少有一个游戏对象有 Ri ...

最新文章

  1. 装饰器方式的添加路由
  2. Python使用tpot获取最优模型并抽取最优模型模型参数
  3. python获取图片像素矩阵_用python处理图片实现图像中的像素访问
  4. 098~100:ORM迁移
  5. C/C++程序内存分配详解
  6. python线性回归实例_python 线性回归示例
  7. openresty开发系列13--lua基础语法2常用数据类型介绍
  8. 基于模块度的社团检测算法
  9. Genymotion设置代理至BurpSuite和Charles
  10. Zabbix3.2安装
  11. 大电流dcdc降压芯片20a_5V转1.8V稳压芯片,3.7V转1.8V稳压芯片
  12. 用html代码写出城东早春,网页设计基础 从零开始构建HTML 页面 第2章 从零开始构建HTML页面_补充案例.doc...
  13. 大数据“下田”,未来农业将成为世界上最重要的产业之一
  14. 小数乘分数怎么算过程_教资分数怎么算?多少分合格?
  15. 邮箱地址是什么?企业邮箱的密码安全
  16. TI DSP各种库文件
  17. 【STUDY】工程数学
  18. python画柱形图显示数值_Matplotlib画条形图和柱形图并添加数据标注
  19. [转载]CAE工程师:铁匠还是厨子,这是个问题
  20. 深圳腾讯计算机打鱼的游戏,腾讯欢乐捕鱼

热门文章

  1. h5+app打开pdf,图片,excel,world(亲测可用)
  2. dpkg -L zabbix-server-mysql
  3. xp系统没有服务器时间,XP系统里时区没有北京时区
  4. Java 用户评价可信度计算
  5. 2022电商行业重磅年度报告:八大年度关键词盘点
  6. 乔布斯走后的日子:苹果盛世暗藏危机
  7. 爬虫软件 八爪鱼 使用经验
  8. uniapp生成 NFC 卡片 例子
  9. DP1332E NFC刷卡芯片内置mcu
  10. 【SSM+ElementUI】综合练习-Axios Mock EasyMock nodejs npm webpack vuecli restful 请求