unity3d中固定视角射线碰撞以及使障碍物透明
来源:互联网 发布:淘宝直通车要求 编辑:程序博客网 时间:2024/04/30 19:42
因为之前有学习过DX9,处理方式为从摄像机处向玩家所在位置反射一条射线,如果射线撞上了其他物体,则改变该物体的alpha值,使之透明。unity3d作为一款引擎存在让这个问题变的无比的简单,因为几乎要用到的东西它都给封装好了。所以在这里记录下代码方便自己看也顺便可以帮助下有需要的朋友们。
效果图,红线是从玩家角色身上向摄像机发出的射线
代码如下:
using UnityEngine;using System.Collections;public class IntersectTest : MonoBehaviour { public float m_alpha = 0.3f; public GameObject m_player;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () { int layMask = 1 << 9;//忽略player层,player层需要自己创建 Vector3 pointBegin = m_player.transform.position; Vector3 dir = (transform.position - pointBegin).normalized; Ray ray = new Ray(pointBegin, dir); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity, ~layMask)) { Debug.DrawLine(pointBegin, hit.point, Color.red); Collider c = hit.collider; if (c.tag.CompareTo("MainCamera") != 0) { c.renderer.material.shader = Shader.Find("Transparent/Diffuse"); Color color = c.renderer.material.color; color.a = m_alpha; c.renderer.material.color = color; } }}}
效果图,红线是从玩家角色身上向摄像机发出的射线
PS:射线碰撞需要给物体套上外接体。
PPS:该方法同样可以用在自由视角下的摄像机拉近拉远的问题上。
0 0
- unity3d中固定视角射线碰撞以及使障碍物透明
- 射线碰撞-Unity3D总结
- Unity3D【碰撞与射线】
- unity3D 射线碰撞检测
- Unity3D射线碰撞
- Unity3d·射线·射线检测碰撞
- Unity3D总结:关于射线碰撞
- Unity3D总结:关于射线碰撞
- Unity3D总结:关于射线碰撞
- Unity3D检测(碰撞、射线)
- Unity3D总结:关于射线碰撞
- Unity3D检测(碰撞、射线)
- Unity3D总结:关于射线碰撞
- Unity3D总结:关于射线碰撞
- [Unity3D]射线碰撞检测+LayerMask的使用
- [Unity3D]射线碰撞检测+LayerMask的使用
- [Unity3D]射线碰撞检测+LayerMask的使用
- [Unity3D]射线碰撞检测+LayerMask的使用
- SPOJ Alphacode
- 回文数
- 正则表达式的匹配字符
- 新手上路(概念篇)之Oracle数据字典视图
- UNIX高手的10个习惯
- unity3d中固定视角射线碰撞以及使障碍物透明
- android 根据短信地址匹配联系人姓名
- 一名非计算机专业,却走着IT行业--自学之路
- 线程学习之-守护线程
- 解析java.util集合类源码(Collection和AbstractCollection篇)
- UML用例图中包含(include)、扩展(extend)和泛化(generalization)三种关系详解
- Eclipse 中web项目报 target runtime apache tomcat v7.0 is not defined.
- mini2440的nor flash与nand flash启动过程区别
- windows 2003 服务器安装sql2005 容易安装不起,解决方法