【Unity】当人物主角被障碍物遮挡后,将障碍物半透明化
来源:互联网 发布:linux执行perl脚本 编辑:程序博客网 时间:2024/04/30 23:16
using UnityEngine; using System.Collections; using System.Collections.Generic; /// <summary> /// 脚本功能:当人物主角被障碍物遮挡的时候(从摄像机视角看去),使障碍物半透明化,当主角可见时,恢复障碍物透明度 /// 脚本位置:MainCamera 或者任意一个可以始终存在的游戏对象身上即可 /// 创建时间:2015年12月29日 /// 障碍物Shader使用的是Unity内置的Standard /// Rendering Mode选择Transparent模式 /// </summary> public class Obstacle2transparente : MonoBehaviour { // 所有障碍物的Renderer数组 private List<Renderer> _ObstacleCollider; // 人物主角(之后通过名字识别?还是tag?目前手动拖过来) public GameObject _target; // 临时接收,用于存储 private Renderer _tempRenderer; void Start() { _ObstacleCollider = new List<Renderer>(); } void Update() { // 调试使用:红色射线,仅Scene场景可见 #if UNITY_EDITOR Debug.DrawLine(_target.transform.position, transform.position, Color.red); #endif RaycastHit[] hit; hit = Physics.RaycastAll(_target.transform.position, transform.position); // 如果碰撞信息数量大于0条 if (hit.Length > 0) { // 设置障碍物透明度为0.5 for (int i = 0; i < hit.Length; i++) { _tempRenderer = hit[i].collider.gameObject.GetComponent<Renderer>(); _ObstacleCollider.Add(_tempRenderer); SetMaterialsAlpha(_tempRenderer, 0.5f); Debug.Log(hit[i].collider.name); } }// 恢复障碍物透明度为1 else { for (int i = 0; i < _ObstacleCollider.Count; i++) { _tempRenderer = _ObstacleCollider[i]; SetMaterialsAlpha(_tempRenderer, 1f); } } } // 修改障碍物的透明度 private void SetMaterialsAlpha(Renderer _renderer, float Transpa) { // 一个游戏物体的某个部分都可以有多个材质球 int materialsCount = _renderer.materials.Length; for (int i = 0; i < materialsCount; i++) { // 获取当前材质球颜色 Color color = _renderer.materials[i].color; // 设置透明度(0--1) color.a = Transpa; // 设置当前材质球颜色(游戏物体上右键SelectShader可以看见属性名字为_Color) _renderer.materials[i].SetColor("_Color", color); } } }
0 0
- 【Unity】当人物主角被障碍物遮挡后,将障碍物半透明化
- 【Unity】当人物主角被障碍物遮挡后,将障碍物半透明化
- 【Unity】当人物主角被障碍物遮挡后,将障碍物半透明化
- Unity移动障碍物设置
- Unity实时烘焙障碍物
- unity3d_角色与障碍物遮挡
- Unity 墙遮挡人物时变为半透明
- Unity 初级AI躲避障碍物
- Unity3D使用溶解技术解决障碍物遮挡
- unity-Navigation寻路-添加障碍物Obstacle
- Unity 遮挡半透明
- 避开障碍物转向
- 机器人智能躲开障碍物
- 【OpenCV】障碍物提取
- Unity20--动态的障碍物
- 动态障碍物操作详细解析
- 寻路系统:动态障碍物
- Unity3D-移动障碍物之吊桥
- 【Shader】人物选中高亮状态
- Android RecycleView上拉加载BaseAdapter(二)
- Effective-Java学习笔记 遇到多个构造器参数时要考虑用构建器
- Longest Palindromic Substring
- 企业版app在iOS8上无法安装的几个问题解决
- 【Unity】当人物主角被障碍物遮挡后,将障碍物半透明化
- PCA算法数学原理(可作为人脸特征)
- Android使用WebView的问题
- Android Studio 项目导入太慢的解决方法
- iOS 使用XMPP框架开发IM聊天模块,实现简单的文字聊天
- Android之Notification(一):通知的基本用法
- 上传图片前预览
- struts.xml
- 移动app性能测试工具:Emmagee使用介绍