Unity3.X 笔记01
来源:互联网 发布:水彩 水粉 油画 知乎 编辑:程序博客网 时间:2024/05/16 14:09
碰撞检测的三种方法:
碰撞器检测
在门和玩家分别设置碰撞器
使用角色控制器碰撞器 函数: OnControllerColliderHit()
这个碰撞检测函数包含角色控制器组件,它的唯一参数hit是一个ControllerColliderHit类型变量,通过使用hit包含的信息,来获知玩家和哪一个物体发生了碰撞。
步骤:
1.给门添加box_collider, 设置门的tag为 playerDoor
2.角色控制器上增加脚本,在脚本中添加变量
private bool doorIsOpen;private float doorTimer=0.0f;public float door openTime = 3.0f;public AudioClip doorOpenSound, doorShutSound;
3.检测hit里的碰撞信息 和 门的开关状态, 执行方法OpenDoor()
void OnControllerColliderHit(ControllerColliderHit hit){ if(hit.gameObject.tag == "playerDoor" && doorIsOpen == false) { currentDoor = hit.gameObject; OpenDoor(currentDoor); }}
4.定义OpenDoor方法: 更改门的状态,播放开门动画,播放开门声音
void OpenDoor(GameObject door){ doorIsOpen = true; door.GetComponent<AudioSource>().PlayOneShot(doorOpenSound); door.transform.parent.GetComponent<Animation>().Play("doorOpen");}
5.在update方法中设置门自动关闭
void Update(){ if(doorIsOpen) { doorTimer += Time.deltaTime; if(doorTimer > doorOpenTime) { ShutDoor(currentDoor); } }}
6.定义ShutDoor方法
void ShutDoor(GameObject door){ doorIsOpen = false; door.GetComponent<AudioSource>().PlayOneShot(doorShutSound); door.transform.parent.GetComponent<Animation>().Play("doorShut");}
*Audio Source组件的引用
4个函数:Play() Stop() Pause() PlayOneShot()
音频文件的类: AudioClip
AudioClip doorOpenSound;door.GetComponent<AudioSource>().PlayOneShot(doorOpenSound);
音频文件的赋值:将音频文件拖动到公有变量DoorOpenSound上*
光线投射
将门的动画管理,声音管理脚本放在门上 DoorManager
将光线投射检测脚本放在角色上 PlayerCollisions
一旦角色检测到约定范围内的光线碰撞,通过SendMessage函数直接调用门脚本中的doorcheck函数
Physics.Raycast()函数
void Update(){ RaycastHit hit; if(Physics.Raycast(transform.postion, transform.forward, out hit, 3)) { if(hit.collider.gameObject.tag == "playerDoor") { currentDoor = hit.collider.gameObject; currentDoor.SendMessage("DoorCheck"); } }}
触发器
在门的父物体上添加碰撞器,设置成trigger(触发模式)检测玩家是否进入触发区域。TriggerZone脚本设置在door的父物体上。
void OnTriggerEnter(Collider col){ if(col.gameObject.tag== "Player") { transform.FindChild("door").SendMessage("DoorCheck"); }}
0 0
- Unity3.X 笔记01
- unity3的第三天01
- Unity3.4发布
- unity3的优化
- cocos2d-x:学习笔记-01
- Unity3 碰撞之间的关系
- 【笔记】Python3.X笔记
- cocos2d-x初学笔记01:HelloWorld浅析
- Vert.x 3学习笔记---01
- Unity3.5正式版发布!(中文版更新说明)
- 关于unity3的中的碰撞检测
- Unity3 游戏优化 - 缓存(重复利用)物体
- Unity3--打印金字塔、克隆、查找对象
- Unity3: DoTween插件的简单使用
- [学习笔记]X Window
- 802.1x工程笔记
- X Window研究笔记
- struts1.x小笔记
- Android多线程-----同步锁
- ffmpeg 保存avcodec_decode_audio4之后的pcm数据
- android singleinstance
- Dynamics CRM Entity Relationship Many to Many (N:N)
- IIS http/Json compression
- Unity3.X 笔记01
- leetcode House Robber III
- Sublime Text 2的Emmet插件使用简介
- 服务器端校验(更重要)和客户端校验
- poj2081 Recaman's Sequence
- Android实现微信支付功能
- rabbitMq使用(mac平台)
- ACYCLIC VISITOR模式解决Shape排序问题
- 【第六章】 AOP 之 6.2 AOP的HelloWorld ——跟我学spring3