unity3d中固定视角射线碰撞以及使障碍物透明

原创 2014年01月15日 23:04:13
    因为之前有学习过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 initialization
	void Start () {
	}
	
	// Update is called once per frame
	void 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:该方法同样可以用在自由视角下的摄像机拉近拉远的问题上。

相关文章推荐

unity-Navigation寻路-添加障碍物Obstacle

在场景中添加障碍物,需要点Bake重新烘焙出新的 导航网格,不是运行时。 如果在运行时添加障碍物动态Bake出新的导航网格,就需要使用 Nav Mesh Obstacle 官网传送门:http...

unity3d_角色与障碍物遮挡

最近的项目有涉及到关于角色与障碍物的遮挡与显示问题: 个人能想到的解决方法有两种: ①从摄像机发射与角色连接射线,判断射线碰撞的go,将其材质改为半透明。 ②shader 第一种方法:...

Unity 初级AI躲避障碍物

阅读《Unity Game AI programming 》第6章后,感觉躲避障碍物算法不是很给力。为了研究和学习Unity,自己改良躲避障碍物的算法。当然,代码没有优化,不过没关系,抛砖引玉,记录思...

[Unity3D]射线碰撞检测+LayerMask的使用

射线:射线是3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射 。用途:在unity中射线应用范围比较广, 多用于碰撞检测(如:子弹飞行是否击中目标)、角色...

unity3d--unity3d射线的原理用法

【unity3d游戏开发之基础篇】unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子 最近开始研究U3D,它的强大就不多说了, 今天研究了研究射线相关东西,总结了些东西放上来,一来做个...

MaxScript 例子 渲染

MaxScript 渲染的例子 macroScript NewTextureRender category:"WJL" (     --烘焙函数     fn BakeDiffuseAndLig...

Unity3D【碰撞与射线】

忽略碰撞      有些时候我们不想让指定的两对象发生碰撞,即要忽略他们的碰撞。     忽略碰撞情况下的限制: 1. 保存场景时忽略状态不能保存...

Unity3D总结:关于射线碰撞

方法一:Physics.Raycast 光线投射 1.static function Raycast (origin : Vector3, direction : Vector3, distance ...

Unity3D Ray射线

  • 2013年08月24日 22:00
  • 66KB
  • 下载

Unity3D第三人称视角摄像头脚本

  • 2015年01月28日 11:34
  • 3KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:unity3d中固定视角射线碰撞以及使障碍物透明
举报原因:
原因补充:

(最多只允许输入30个字)