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 3D中的射线与碰撞检测

在我们的游戏开发过程中,有一个很重要的工作就是进行碰撞检测。例如在射击游戏中子弹是否击中敌人,在RPG游戏中是否捡到装备等等。在进行碰撞检测时,我们最常用的工具就是射线,Unity 3D的物理引擎也为...
  • u014805066
  • u014805066
  • 2016年09月06日 22:44
  • 11475

unity中射线碰撞检测总结

这阵子通过看视频,看书对unity中射线碰撞检测,有了一些了解,这里我把它总结一下写下来,希望能帮助到你们,也希望通过各位大神来指正不足之处;     射线碰撞检测,就是由某一物体发射出一道射线,射线...
  • CJB_King
  • CJB_King
  • 2016年08月02日 09:05
  • 10274

unity3d 敌人锥形视角实现的想法

特别想实现像盟军敢死队那样的锥形视角效果 没事想一想,想到几个蠢方法,各位如果有好的方法,欢迎告诉我 1.Raycast方法 从人物位置向前透射射线,再Debug.D...
  • wolf96
  • wolf96
  • 2015年08月29日 13:14
  • 2198

【Unity3D】学习笔记(第7记)射线碰撞检测

unity中关于射线的有一个非常重要的函数类Physcics类,该类有LineCast和RayCast两种射线投射方式;第一种是以起点和射线方向为参数的投射,第二种是以起点和终点为参数的投射。既然是射...
  • chy_xfn
  • chy_xfn
  • 2014年12月14日 16:02
  • 1637

Unity3D【碰撞与射线】

忽略碰撞      有些时候我们不想让指定的两对象发生碰撞,即要忽略他们的碰撞。     忽略碰撞情况下的限制: 1. 保存场景时忽略状态不能保存...
  • Gao_Liu_Yun
  • Gao_Liu_Yun
  • 2015年01月23日 21:22
  • 653

unity3d个人写的检测障碍物并避开的方法

虽然unity3d有自带的navigation避开障碍物,但有一次做项目时发现:当场景大而且人物变多时这个navigation计算不是很灵敏,于是心想能否自己想出另外一个检测障碍物并避开的方法。话不多...
  • u014716849
  • u014716849
  • 2015年11月19日 21:30
  • 1702

unity3D__忽略碰撞和射线

欢迎大家关注我的日志 ,今天介绍下忽略碰撞和射线: 1.忽略碰撞:     有些时候我们不想让指定的两对象发生碰撞,即要忽略他们的碰撞 public Transform ...
  • qq_23337215
  • qq_23337215
  • 2014年12月24日 21:20
  • 766

unity3d学习笔记(十三)--如何拦截射线碰撞界面的消息

这一篇是纯技术讨论,看过我前面文章的童鞋应该清楚,我的奔跑是靠鼠标响应的,鼠标点到哪就跑到哪,后来又有了界面,麻烦就来了,我的界面竟然能点穿,我不希望点界面的时候还能点到界面后面的地面上,角色傻不拉几...
  • lzhq1982
  • lzhq1982
  • 2013年10月18日 16:52
  • 8632

[Unity小技巧] 使用射线Raycast判断某个方向是否有碰撞体

我们做游戏开发的时候,可能会遇到类似这样的一个问题:一个物体加上了Rigidbody刚体受重力下降,在它下降的时候我们需要提前知道它的下方是否有碰撞体能接住它。类似下面的...
  • qq_33000225
  • qq_33000225
  • 2017年02月15日 22:59
  • 4255

Unity 遮挡半透明

1、建立射线目标物体 2、设置物体的material形式:legacy -- diffuse 3、点击改变材质的话直接将获取的物体的透明度改变: Renderer  _renderer = Obj.G...
  • qq_20902465
  • qq_20902465
  • 2017年11月17日 17:49
  • 101
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:unity3d中固定视角射线碰撞以及使障碍物透明
举报原因:
原因补充:

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