博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Unity】当人物主角被障碍物遮挡后,将障碍物半透明化
阅读量:4090 次
发布时间:2019-05-25

本文共 2012 字,大约阅读时间需要 6 分钟。

using UnityEngine;using System.Collections;using System.Collections.Generic;/// /// 脚本功能:当人物主角被障碍物遮挡的时候(从摄像机视角看去),使障碍物半透明化,当主角可见时,恢复障碍物透明度/// 脚本位置:MainCamera 或者任意一个可以始终存在的游戏对象身上即可/// 创建时间:2015年12月29日/// 障碍物Shader使用的是Unity内置的Standard/// Rendering Mode选择Transparent模式/// public class Obstacle2transparente : MonoBehaviour {    // 所有障碍物的Renderer数组    private List
_ObstacleCollider; // 人物主角(之后通过名字识别?还是tag?目前手动拖过来) public GameObject _target; // 临时接收,用于存储 private Renderer _tempRenderer; void Start() { _ObstacleCollider = new List
(); } 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
(); _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); } }}

转载地址:http://gukii.baihongyu.com/

你可能感兴趣的文章
Angular AJAX 与jq的AJAX不同
查看>>
云平台防止安装包安装一半就断电的处理办法
查看>>
Redis Cluster分区实现原理
查看>>
Excel操作类(转)
查看>>
使用PowerShell在Azure China创建Data Warehouse
查看>>
Openjudge计算概论-求序列中的众数
查看>>
转载《Xcode 创建静态库和动态库》
查看>>
linux下Mozilla Firefox安装flash插件
查看>>
示范NTFS 卷上的硬链接
查看>>
PS3支持的显示标准介绍
查看>>
电子书下载:Algorithms of the Intelligent Web
查看>>
号称简明实用的django上手教程
查看>>
C#实现邮件发送的功能
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
Axis1.4 调用 Asp.Net 服务简单示例
查看>>
linux 常用指令
查看>>
关于struts2拦截器获取页面参数
查看>>
Linux 下压缩与解压.zip和.rar及.7z文件
查看>>
读书的方法
查看>>
svn断开链接后,重新share提交代码报错
查看>>