【C#】【Unity】第三人称摄像机跟随人物移动时碰撞到墙壁等,摄像机不穿越墙壁

Unity射线有时失灵,检测失效原因及解决办法 先写总结,如果看总结能懂就不用往下看了,不懂就再看看吧: 假设要对一个正在移动中的比较小的(注意!!是比较小的,大的看不出来,大的即使晚更新几帧肉眼也看不出来)物体A进行射线检测。如果出现射线有时判true,有时判false。可能是以下原因。 首先,只有在FixedUpdate执行完后才会更新物理,此处说的更新物理是更新碰撞体的意思。 FixedUpdate是固定帧更新,默认1秒执行50次。... 阅读详情

 

目前大部分第三人称游戏的摄像机在遇到墙壁等狭隘空间的时候,都选择让摄像机不穿越到墙壁里面,而是让摄像机保持在墙壁表面。

分析情况:(红色方框为摄像机 黑色方框为墙壁)

 

当前情形摄像机还没达到墙壁摄像机仍保持正常效果。

 

当人物进一步靠近墙壁的时候,摄像机穿过墙壁。(造成后果,摄像机视角中墙壁被透明化)

 

当人物靠近,摄像机不会穿越墙壁而处于墙壁表面上的位置(这是我们想要的效果)

 

实现效果分析:

出现摄像机穿越的问题,正是摄像机与人物之间出现了其他物体,而摄像机不做任何处理。

所以我们可以通过着手处理 摄像机与人物之间的物体来实现效果。

我们可以通过射线检测。

 

通过在人物与摄像机之间增加射线(实现当前效果,射线必须从人物身上发出到摄像机上,原因分析在最后内容)

 

当射线检测到人物与摄像机之间有碰撞物体,我们可以通过获取射线碰撞信息来确定碰撞点,将摄像机的位置移动到碰撞点上,我们便能实现我们需要的效果。

 

如果射线是从摄像机发射到人物身上的,我们实现的效果会不一样。如图

摄像机新位置会处于外墙上面,摄像机镜头中的墙壁,也会变成不可视。

 

射线起点的不同对应着两种不同的效果,看个人需求使用。

 

如果想了解代码,可以查看官网资源包的滚球游戏。

处理unity第一第三人称游戏中的摄像机穿墙的问题 在之前我花过一段时间做了一个比较简单的第三人称射击类游戏 发现一个很难搞的BUG 就是在我们设定的摄像机和主角距离的空隙中间 如果有一些物体 会挡住主角 会给人极差的游戏体验 下面有两种解决方案 但是都存在一些小小的缺陷 两种都是用到射线的知识 其中一种是检测到中间存在物体 改变摄像机和主角之间的距离达到效果 另一种是检测到之后改变3D物体的透明度 来实现效果 1.简单的场景搭建 我为了实现效果 ... 阅读详情

相关推荐

Unity相机碰撞遮挡处理

相机组件结构: 一般是相机根节点处理,相机跟随,旋转。 mainCamera处理相机距离。 当角色靠近墙壁,墙壁处于摄像机和角色之间时,会遮挡角色,处理方法是,把相机距离拉近。 using System; using System.Collections; using UnityEngine; namespace UnityStandardAssets.Cameras { public class ProtectCameraFromWallClip : MonoBehaviour

王利威的博客 1871

关于Unity相机碰撞到物体后会出现相机乱跑的问题

在PC端的项目中, 在给摄像机添加刚体和BoxCollider组件后,与场景中的物体(模型)进行碰撞时,碰撞次数多,摄像机可能会不受控制的在场景中乱跑,在这里记录控制摄像机的Position的稳定性。只需要在挂载摄像机的脚本下中写下下面的代码即可。注:起始这个就是将刚体组件中的Freeze Rotation的 X、Y、Z轴打上√就行,但是很奇怪的是,用脚本写上去的话就没有乱跑的情况,只是在Inspector面板中打上√的话还是会出现乱跑的情况,在此记录一下。...

qq_41849055的博客 2258

【零基础入门unity游戏开发——unity通用篇19】GameObject的常见操作(基于unity6开发介绍)

GameObject的常见操作(基于unity6开发介绍)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1557

从零开始做一款Unity3D游戏<二>——移动,相机控制与碰撞

Rigidbody组件能为附加到的对象添加真实的物理模拟。Collider 组件之间可以相互交互,并且 Collider 组可以作为对象与 Rigidbo组件进行交互。如果一个对象使用了 Rigidbody 组件但没有启用 isKinematic 属性,那么得的就是运动学效果,因为物理系统会忽略这个对象。如果一个对象使用了 Rigidbody 组件并且施加了力和扭矩,那么得到的将是非运动学效果。碰撞体基于交瓦行为发送通知。在本章,你创建了自己的第一款游戏,并积累了一定的经验。

m0_58367586的博客 2593

unity摄像机带碰撞检测

unity摄像机带碰撞检测 摄像机碰到带碰撞物体自动拉近

BALM2深度解析 | 港大MARS实验室如何用点簇革新激光BA?

本文深度解析了港大MARS实验室提出的BALM2方案如何通过点簇技术革新激光BA(Bundle Adjustment)处理。BALM2将点云数据聚合为点簇,显著提升计算效率,实测显示其计算耗时仅为传统方法的1/20。文章详细介绍了点簇的核心原理、二阶优化方法及与传统方法的性能对比,展示了其在激光SLAM领域的突破性应用。

weixin_29212867的博客 152

带碰撞检测的摄像机

原文地址:http://blog.sina.com.cn/s/blog_4a2183a601018fmd.html 类似网游那样如果摄像机和目标之间有其他物体存在,就移动摄像机到障碍物前面 // CamController // 带碰撞第三人称摄像机 //Edit by Shadou //编写 傻逗 // //create at 2011-8-4 //las

puppet_master的专栏 1479

Comsol&Matlab 亥姆霍兹共振消声器传递损失理论解与仿真解

当外界噪声以共振频率进入共振器时,共振器内的空气质量发生周期性的振动,从而减少或消除噪声。当特定频率的声波进入共振器时,共振器的空气质量会发生周期性的振动,从而实现对该频率的噪声的减弱或消除。5. 反射和吸收:共振器的几何形状和容积还可以影响共振器内空气振动的反射和吸收。然而,对于不同频率的噪声,需要相应调整共振器的参数以匹配新的共振频率。3. 腔体内的空气振动:当特定频率的声波进入共振器时,共振器内的空气质量会发生振动。2. 声波进入共振器:外界的声波通过共振器的颈部进入共振器的封闭空腔。

声学黑洞仿真工作室 4571

Unity 射线碰撞没有效果的原因

如果检查代码没有出现错误 ,但是射线依旧不能使用,可以考虑的物体的collider的问题,打开骨骼看是否在物体上,默认添加的collider可能不在物体上,需要手动调整位置。

m0_56218765的博客 2383

《UE4游戏开发》之 《查cook资源失败,问题记录》

当项目打包时,cook出错,但是从原始引擎提供的信息中,没有提示具体的那个资源出错,要查到出错资源,还是非常麻烦。 下面就材质cook出错,增加一些日志,方便查找问题做简单记录 材质cook的一个阶段,是收集MaterialShaderMap,如果在这个阶段收集的信息出错,将会在FShaderMapContent::GetOutdatedTypes函数中,因为Shaders指针指向的内存有问题而出错,通过断点发现,FShaderMapContent这个类对象指针为null,而这个类对象的来源于AllMat.

qq_21919621的博客 2580

从理论到实践:使用Sigrity SystemSI完成DDR4信号完整性仿真全流程解析

本文详细解析了使用Sigrity SystemSI完成DDR4信号完整性仿真的全流程,从核心挑战到实战操作。文章深入探讨了DDR4信号完整性问题,介绍了SystemSI工具链的演进与分工,并提供了从前期准备到高级技巧的详细指南,帮助工程师有效解决DDR4设计中的信号完整性问题。

weixin_30505225的博客 508

[Unity][摄像机][2D]使用cinemachine碰到边界碰撞体错位

使用cinemachine碰到边界碰撞体错位 cinemachine没有碰撞到边界停止,而是错位了。 怎么办,可能是因为 一开始设置的bound的Polygon Collider 2D的边界设置过小,以至于被摄像机给碰撞了。 调整初始的 PolygonCollider2D的边界。 再用代码进行设置的时候,一定不能小于摄像机的长宽。 ...

BuladeMian的博客,菜得抠脚,菜得真实 1316

华为OD机试真题 新系统 2026-09-06 Python&JS【仓储货物有序出库】

某仓储中心有一个货物堆放区,货物编号按乱序堆叠存放,只能从顶部取货,管理员需要将货物按编号从小到大取出。

MISAYAONE的博客 114

Unity3D 自制摄像机不穿墙/不穿物体(射线cast方法)

墙和物体都要加上collider(碰撞体),一般注意以下几点: 墙加mesh collider,在Convex上打勾 物体加box collider 加刚体(rigidbody)的物体不要选Is Kenimatic 基础最简单的Raycast方法 void Update() { RaycastHit hitInfo; Vector3 fwd = Camera.m...

⚡ 1万+

华为面试手撕真题【判断是ipv4还是ipv6地址】

编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。

MISAYAONE的博客 1万+

【DRAM存储器五十一】LPDDR5介绍--DFE与Pre-Emphasis

简述LPDDR5的DFE和预加重应用设置

highman110的博客 703

unity中摄像机跟随主角,摄像机穿墙,射线碰撞检测,摄像机穿墙跟随

这个问题,摄像机拍摄主角,当主角被墙遮蔽了视野,那么就用正上方的点和当前相机所在位置的店为起始点和终点,从二者之间再找出三个关键点进行射线检测,能看到主角的店即可作为摄像机的transform.position Vector3[] posArray; Vector3 beginPos = player.transform.position + offset; Vector3 endPo

hhkun0120的专栏 5384

8.9华为OD机试真题 新系统 - 灯带颜色变换 (Java/Py/C/C++/Js/Go)

8.9华为OD机试真题 新系统 - 灯带颜色变换 (Java/Py/C/C++/Js/Go)

算法大师! 663

Unity笔记(四)——Camera、碰撞检测函数、刚体加力、音频

写本系列的目的是回顾已经学过的知识、记录新学习的知识或是记录心得理解,方便自己以后快速复习,减少遗忘。主要是C#代码部分。

qq_65078669的博客 1991

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Unity在物体内部发射射线检测不到物体的解决方式

Unity在物体内部发射射线检测不到物体的解决方式

学不会shader 4082

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

unity3d中摄像机父物体与模型碰撞

下午做了一点小东西,将摄像机变成cube的子物体,然后cube用来和模型碰撞,有边界碰撞检测 首先参考了http://www.cnblogs.com/javawebsoa/archive/2013/05/18/3085818.html这篇文章 给cube加上了刚体以及box collider,rigidbody没开重力 然后模型加上了mesh collider 遇到的问题如下: 1、开了

iDream 2235

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Unity3d 防止相机“穿墙”功能

今天博主研究了很久,看了很多种摄像机跟随角色的代码,感觉很多都达不到自己想要的理想实现效果。于是参考了多个脚本,自己做出了修改和完善,达到了第三人称角色控制还算是比较理想的效果吧。相机除了跟随角色的功能外,还有最大的一个问题就是喜欢“穿墙”,于是对于这些代码做了比较好的优化。具体原理大概就是使用一条从玩家角色位置发射的射线,当碰撞到任何不属于相机的物体时,就拉近相机的位置,避免“穿墙”的发生。下面

马哥的博客 2万+

unity避免相机穿墙

当采用第一人称相机时相机穿墙是一件很烦人的事情,避免相机穿墙有几种方法,比较常见的是采用characterController的第一人称角色控制器,但是这个比较麻烦的事情是它有3个子物体,还要有好几个的脚本,有时我们仅仅就是为了使相机具有刚体特性而不需要其他功能,显然使用第一人称角色控制器有点大材小用。所以这里我们可以换以一种方法,例如我们场景里的普通相机,我们如果想避免相机穿墙,可以给相机添加Ch

hcshen的博客 7075

Unity实现相机在场景中的自由移动之美

将本篇文章中脚本添加到相机中,即可实现相机在场景中的自由移动,还可以让相机具有防穿墙功能。 输入控制: 使用 W、S、A、D、E、Q 控制相机前后左右上下移动; 使用 鼠标右键 控制视角旋转。 参数控制: 变量 minDistance 设为小于等于 0 的值时相机能够穿透碰撞体表面(设为大于0的值时,相机到碰撞体前停住时的距离会略小于设定值)。 代码如下: using UnityEn...

游戏开发、游戏引擎开发、逆向破解爱好者 2604

黑魂向project制作学习三:摄像头碰撞(Camera Collisions)

一、纠正摄像头的一些僵硬 二、撰写摄像头碰撞检测函数 三、为摄像头新功能做调整

谢白羽 838
上一篇: 【游戏策划】《游戏架构设计与策划基础》学习收获要点-------游戏规则设计
下一篇: 【Office】三件套之Word套路
Terrell21
博客等级 码龄9年 39粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值