我和小伙伴们一起学Unity3D(六)碰撞与触发器
在上一节我们介绍了刚体,但刚体只能使物体可以在力的作用下运动,小球之所以能撞到地面而不是穿过地面,是因为在创建物体时,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");
- }
- }
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(六)碰撞与触发器相关推荐
- 和小伙伴们一起学Unity3D(六)碰撞与触发器
在上一节我们介绍了刚体,但刚体只能使物体可以在力的作用下运动,小球之所以能撞到地面而不是穿过地面,是因为在创建物体时,U3D自动为每个物体附加了碰撞器,有了碰撞器,才会使物体正常的碰撞,而不是穿过. ...
- 我和我的小伙伴们一起学Unity3D(三)GUISkin 界面皮肤
调试完上节的GUI控件,那有些爱美的小朋友可能会在心里怒喊,我擦!老子裤子都脱了就给我看这么难看的控件,坑爹呢 ,那好,为了不被小朋友拿西瓜刀砍死,今天就教大家如何制作游戏开始界面.废话不多说,先上本 ...
- 视频教程-unity3D 六周带你开发《王者荣耀》-Unity3D
unity3D 六周带你开发<王者荣耀> 7年从业经验,精通ios.安卓.linux等技术,曾主导开发苏宁易购项目.苏宁电子书项目.百阅阅读器项目.杭州葫芦网项目.苏宁云信项目.苏宁易付宝 ...
- 【跟我一起学Unity3D】做一个2D的90坦克大战之AI系统
对于AI,我的初始想法非常easy,首先他要能动,而且是在地图里面动. 懂得撞墙后转弯,然后懂得射击,其它的没有了,基于这个想法,我首先创建了一个MyTank类,用于管理玩家的坦克的活动,然后创建AI ...
- 扎心!“我学了六个月 Python,怎么还是会找不到工作”
Python 在编程界,Python是一种神奇的存在.有人认为,只有用Python才能优雅写代码,提高代码效率:但另一部分人恨不能把Python喷成筛子.那么,Python到底有没有用,为什么用Pyt ...
- 【跟我一起学Unity3D】做一个2D的90坦克大战之地图编辑器
从10月20号到现在,Unity3D也学了10天了,对于Unity3D也有了一个大致的了解,有必要做一个小游戏来检测一下自己的学习成果了.经过两天的努力,终于总算是做出来了一个可以玩的坦克大战了.首先 ...
- 2019该怎么学unity3D游戏开发?
Unity 3D本来是由德国的一些苹果粉丝开发的一款游戏引擎,一直只能用于Mac平台,所以一直不被业外人士所知晓.但是后来也推出了2.5版,同时发布了PC版本,并将其发布方向拓展到手持移动设备.怎么学 ...
- 扎心“我学了六个月 Python,怎么还是会找不到工作”
在编程界,Python是一种神奇的存在.有人认为,只有用Python才能优雅写代码,提高代码效率:但另一部分人恨不能把Python喷成筛子.那么,Python到底有没有用,为什么用Python找不到工 ...
- Unity3D教程:简单触发器实现自动开关门
首先确保你已经对门进行了动画的设置. 选择Window->Animation打开动画窗口,选中需要添加动画的门之后点击红色按钮创建新动画. 选中一个需要添加动画的要素之后(比如Postion.x ...
最新文章
- 李飞飞团队最新研究 :「四步」AI方案助老人抵抗新冠肺炎,联合学习降低个人隐私风险
- Acwing291. 蒙德里安的梦想:状态压缩dp
- Ansible-Playbook-template算数运算以及流程控制
- update关联其他表批量更新数据
- 视频 | 为何我对小鹏NGP“半信半疑”
- python二分法代码_Python的算法之二分法
- 勒索软件好多都使用恶意LNK链接文件欺骗用户 来看趋势科技分析新型LNK-PowerShell攻击...
- 【转载】如何制作python安装模块(setup.py)
- OpenCV实现图像翻转
- python中seth是啥意思_python中的seth是什么意思
- 杰控组态自定义串口通讯的经验
- android webview 跳转到浏览器,Android WebView或手机浏览器打开连接问题解决办法总结...
- Struts的增删改查
- 极化电磁波matlab,基于Matlab的电磁波极化仿真.pdf
- Springsecurity+cas整合后无法单点登出
- 听说你想进大厂?当心这13个MySQL送命题!
- 直播源代码图片验证码
- Android 面试必备之 JVM 相关口水话,flutterpageview动画
- 信号完整性基础05:特殊的串扰-差分信号(2)
- 大型电商平台设计实例:电商平台项目工程、数据库选型、代码库
热门文章
- 完全禁止WIN10自动更新的方法
- 客户端远程连接MySQL出现2003-Cant connect to MySQL server on xxx
- ESLint-[转自 花裤衩 的掘金]
- 计算机应用能力考试和软考哪个有用,软考中级哪个最容易过 哪个含金量最高...
- AI领域真正最稀缺的人才是会庖丁解牛的那个人
- 【golang】Go语言学习-time包
- 情人节程序员用HTML网页表白【粒子动画】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
- 日期或时间在tableau中的显示及access中时间格式的变换
- 错误NDK is missing a platforms directory.
- 沪深股票历史财报数据查询系统网络共享版