ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:302.50KB ,
资源ID:3263602      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3263602.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(unity3d 摄像机跟随角色时被物体遮挡解决方案.doc)为本站会员(11****ws)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

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

1、在看此文章时请先看上面的参考文章。更多精彩请关注 【狗刨学习网】看完以上文章后,你也许会想人家都已经给出所有代码了,你还写个毛啊别急,现在进入主题在我的项目中,我采用的是物体遮挡作半透明处理,如果按照上述文章中的思路来写代码的话,那么结果就是当多个物体遮挡角色时,只有第一个物体会半透明,如图:角色被墙和屋顶遮挡住了,但是可以清楚的看见左下角的墙呈半透明状态,而屋顶依旧不透明为了解决这个问题,我们不采用上述文章中的 physics.Linecast,在这里我们需要用到 Physics.RaycastAll;使用方法详见圣典ok,现在我们开始敲代码首先 ,我们引入命名空间 System.Colle

2、ctions.Generic,然后在声明三个需要用到的变量1. using System.Collections.Generic;/引入命名空间2.3. public class MyCamera1 : MonoBehaviour4. 5. /观察目标6. public Transform Target;7.8. /上次碰撞到的物体9. private List lastColliderObject;10.11. /本次碰撞到的物体12. private List colliderObject;13. 复制代码我们需要发射一条射线,这条射线从角色当前位置发射置摄像机的方向1. /*射线可以从头

3、部起始*/2. 2 3. 3 /这里是计算射线的方向,从主角发射方向是射线 机方向4. 4 Vector3 aim = Target.position;5. 5 /得到方向6. 6 Vector3 ve = (Target.position - transform.position).normalized;7. 7 float an = transform.eulerAngles.y;8. 8 aim -= an * ve;9. 9 10. 10 /在场景视图中可以看到这条射线11. 11 /Debug.DrawLine(target.position, aim, Color.red);12.

4、 12 13. 13 RaycastHit hit;14. 14 hit = Physics.RaycastAll(Target.position, aim, 100f);/起始位置、方向、距离复制代码射线发送完毕后,我们获取发送射线时碰撞到的所有物体,并且添加进本次碰撞到的物体(colliderObject)变量中因为我的地图、护栏碰撞(不可见)、地面碰撞(不可见)是三个模型,也就是说地图本身是没有任何碰撞的所以当碰撞到的物体名为护栏或地面时,就不修改其透明度,因为他本身就不可见这里我偷懒了,直接判断物体名称,可自行改为判断物体 tag当视角旋转的时候,射线有时候会碰撞到角色,所以,我们获取

5、 tag 判断是否碰撞的物体为角色1. 1 /将 colliderObject 中所有的值添加进 lastColliderObject2. 2 for (int i = 0; i 复制代码当获取到所碰撞到的所有物体后,我们要修改他的材质透明度,有些物体有很多材质,不知道怎么解决的请看我下面这个方法:1. 1 / 置物体所有材质球颜色 2. 2 / 置物体所有材质球颜色3. 3 / 4. 4 / 材质5. 5 / 透明度6. 6 private void SetMaterialsColor(Renderer _renderer, float Transpa)7. 7 8. 8 /获取当前物体材质

6、球数量9. 9 int materialsNumber = _renderer.sharedMaterials.Length;10. 10 for (int i = 0; i 复制代码如果本次碰撞到的物体存在于上个物体,那么则说明当前物体还处于遮挡角色状态,所以我们赋值为 null1. 1 /上次与本次对比,本次还存在的物体则赋值为null2. 2 for (int i = 0; i 复制代码还处于遮挡状态的物体已被赋值为 null,那么剩下的物体就是没有处于遮挡状态的,所以我们要重置该物体材质为不透明1. 1 /当值为 null 时则可判断当前物体 还处于遮挡状态2. 2 /值不为 null 时则可恢复默认状态(不透明)3. 3 for (int i = 0; i 复制代码好了,所有代码已完成,我们看一下运行结果未遮挡时:遮挡时:怎么样,有木有感觉很酷炫呢,哈哈哈

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。