最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

unity3d 摄像机跟随角色时被物体遮挡解决方案

IT圈 admin 31浏览 0评论

2024年5月6日发(作者:长孙同方)

在看此文章时请先看上面的参考文章。更多精彩请关注【狗刨学习网】

看完以上文章后,你也许会想人家都已经给出所有代码了,你还写个毛啊

别急,现在进入主题

在我的项目中,我采用的是物体遮挡作半透明处理,如果按照上述文章中的思路来写代码

的话,那么结果就是当多个物体遮挡角色时,只有第一个物体会半透明,如图:

角色被墙和屋顶遮挡住了,但是可以清楚的看见左下角的墙呈半透明状态,而屋顶依旧不

透明

为了解决这个问题,我们不采用上述文章中的 st,在这里我们需要用到

tAll;使用方法详见圣典

ok,现在我们开始敲代码

首先 ,我们引入命名空间 c,然后在声明三个需要用到的变

1.

using c;//引入命名

空间

2.

3.

4.

5.

6.

7.

8.

9.

public class MyCamera1 : MonoBehaviour

{

//观察目标

public Transform Target;

//上次碰撞到的物体

private List lastColliderObject;

10.

11.

//本次碰撞到的物体

12.

private List colliderObject;

13.

}

复制代码

我们需要发射一条射线,这条射线从角色当前位置发射置摄像机的方向

1.

2.

3.

4.

5.

6.

7.

8.

9.

/*射线可以从头部起始*/

2

3 //这里是计算射线的方向,从主角发射方向是射线机方向

4 Vector3 aim = on;

5 //得到方向

6 Vector3 ve = (on -

on).normalized;

7 float an = ngles.y;

8 aim -= an * ve;

9

10.

10 //在场景视图中可以看到这条射线

11.

11 //ne(on, aim, );

12.

12

13.

13 RaycastHit[] hit;

14.

14 hit = tAll(on, aim, 100f);//起始位

置、方向、距离

复制代码

2024年5月6日发(作者:长孙同方)

在看此文章时请先看上面的参考文章。更多精彩请关注【狗刨学习网】

看完以上文章后,你也许会想人家都已经给出所有代码了,你还写个毛啊

别急,现在进入主题

在我的项目中,我采用的是物体遮挡作半透明处理,如果按照上述文章中的思路来写代码

的话,那么结果就是当多个物体遮挡角色时,只有第一个物体会半透明,如图:

角色被墙和屋顶遮挡住了,但是可以清楚的看见左下角的墙呈半透明状态,而屋顶依旧不

透明

为了解决这个问题,我们不采用上述文章中的 st,在这里我们需要用到

tAll;使用方法详见圣典

ok,现在我们开始敲代码

首先 ,我们引入命名空间 c,然后在声明三个需要用到的变

1.

using c;//引入命名

空间

2.

3.

4.

5.

6.

7.

8.

9.

public class MyCamera1 : MonoBehaviour

{

//观察目标

public Transform Target;

//上次碰撞到的物体

private List lastColliderObject;

10.

11.

//本次碰撞到的物体

12.

private List colliderObject;

13.

}

复制代码

我们需要发射一条射线,这条射线从角色当前位置发射置摄像机的方向

1.

2.

3.

4.

5.

6.

7.

8.

9.

/*射线可以从头部起始*/

2

3 //这里是计算射线的方向,从主角发射方向是射线机方向

4 Vector3 aim = on;

5 //得到方向

6 Vector3 ve = (on -

on).normalized;

7 float an = ngles.y;

8 aim -= an * ve;

9

10.

10 //在场景视图中可以看到这条射线

11.

11 //ne(on, aim, );

12.

12

13.

13 RaycastHit[] hit;

14.

14 hit = tAll(on, aim, 100f);//起始位

置、方向、距离

复制代码

发布评论

评论列表 (0)

  1. 暂无评论