Unity忽略碰撞,射线
来源:互联网 发布:网络视频广告价格表 编辑:程序博客网 时间:2024/05/01 10:12
1.忽略碰撞
有些时候我们不想让指定的两对象发生碰撞,即要忽略他们的碰撞
public Transform ball;
void Start()
{
Physics.IgnoreCollision(ball.collider, this.collider);
}
2.射线
定 义:射线是3D世界中一个点向一个方向发射无终点的线。在unity3d中我们发射的射线一旦与其他的碰撞器发生碰撞,射线将停止发射。在游戏制作过程中 我们可以通过判断射线是否发生了碰撞,并且可以判断射线和谁发生了碰撞。应用范围非常广泛,如射击类游戏中用它来判断是否射中目标。
我们要想在游戏中发射一条射线,必须要有两个元素,一个起始点,一个方向。
射线起点:Ray.origin
射线的方向:Ray.direction
1.创建一条射线的方法Ray (origin : Vector3, direction : Vector3)
Origin是射线的起点,direction是射线的方向。
首先在场景中创建一个CUBE,创建一个c#文件,并输入如下代码:
Ray ray=new Ray(Vector3.zero,transform.position); //定义一条射线,起点为Vector3.zero终点为物体坐标
2.声明:RaycastHit hit; //定义一个光线投射碰撞
3.物理投射:Physics.Raycast(ray,out hit,100); //发射射线长度为100
4.画出射线:Debug.DrawLine(ray.origin,hit.point); //在Scene中生成这条射线,起点为射线的起点,终点为射线与物体的碰撞点
5.注意:Debug.DrawLine()方法只在Scene视图中才可以看到
下面我们通过一个实例来看一下怎么判断射线与游戏物体之间的碰撞,并如何获得碰撞后的信息。
public Transform explosion;
void Update ()
{
//获取鼠标点击事件
if(Input.GetMouseButtonDown(0))
{
//定义一条射线
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
//如果射线发生碰撞
if(Physics.Raycast (ray, out hit, 100))
{
Transform theClonedExplosion; //实例化物体
//hit.point为碰撞点的坐标
theClonedExplosion =Instantiate(explosion, hit.point, transform.rotation)as Transform;
}
}
}
更多精彩关注:http://www.gopedu.com/
- Unity忽略碰撞,射线
- Unity 射线碰撞
- Unity 碰撞检测、射线
- Unity 射线检测碰撞
- unity3D__忽略碰撞和射线
- Unity 碰撞检测和射线
- unity基础开发----射线碰撞代码
- unity射线碰撞检测+LayerMask的使用
- 在Unity中用射线检测碰撞
- Unity中射线碰撞试验分享:
- unity中射线碰撞检测总结
- u3d学习之忽略碰撞、射线、角色控制器
- unity之飞机大战和碰撞检测、射线
- 【Unity】使用射线碰撞限制人物主角多次跳跃
- unity中使用射线碰撞来触发AR中的交互
- Unity 3D中的射线与碰撞检测
- [Unity]Ray射线物理检测碰撞和LayerMask的使用
- unity中使用射线碰撞来触发AR中的交互
- php 项目常用函数
- erlang mnesia 常用使用技巧
- 编程基础_注意区分执行循环的条件和跳出循环的条件
- unity3D---SQL
- 黑马程序员—Java程序入门学习日记-基础篇1
- Unity忽略碰撞,射线
- 通过实例浅谈春运作机制
- UIView的层介绍
- unity3d---SQL
- 追求代码质量: 不要被覆盖报告所迷惑
- linux下weblogic启动报错
- 输出1000到2000年的闰年的年份
- CSDN博客ByeBye
- python邮件发送