Rigidbody SweepTest测试

和Physics的投射差不多,SweepTest可以直接投射当前碰撞

但是比较遗憾的是它对MeshCollider的支持不是很好,需要勾选Convex,但我测了下居然有漏检的

投射和Physics一样,只要加了碰撞器,不管勾没勾选Trigger都会被投射到

比如我的游戏中角色会瞬移到某个坐标,这时候判断是否超过墙壁,这是我测试用的代码,可以做到角色碰撞的修正:

public Rigidbody rigidbodyComponent;

void OnEnable()
{
    RaycastHit raycastHit;
    if (rigidbodyComponent.SweepTest(transform.forward, out raycastHit, 10))
    {
        Debug.Log("Contract");
        var raycastPoint = raycastHit.point;

        var closesPoint = rigidbodyComponent.ClosestPointOnBounds(raycastPoint);

        transform.position += raycastPoint - closesPoint;
    }
    else
    {
        Debug.Log("Failure");
    }
}

测试一下(脚本执行前后):

极端情况测试:

时间: 2024-10-20 19:17:47

Rigidbody SweepTest测试的相关文章

"测试系列"文章索引

Animation/Animator Animation Play/Stop测试 关于Animation动画事件的几项测试 Rigidbody/Collider 刚体Collider包围测试(重叠后,挤出和质量的影响) Rigidbody SweepTest测试 Unity重力的测试 U3D刚体测试3(constraints) U3D刚体测试2(ForceMode,AddForce,RelativeAddForce) Rigidbody.position/rotation更新测试 斜面上的根骨骼

Unity API 解析(9)—— Rigidbody 类

模拟 GameObject 对象在现实世界中的物理特性(重力,阻力,质量,速度) 对Rigidbody 对象属性的赋值代码通常放在脚本的OnFixedUpdate 方法中   collisonDetectionMode 属性 -- 碰撞检测模式 刚体的碰撞检测模式有3种 Discrete -- 静态离散检测模式 Continuous -- 静态连续监测模式 ,一般用在高速运动刚体的目标碰撞体上 ContinousDynamic -- 最强的连续动态检测模式 drag 属性 -- 刚体阻力 dra

Rigidbody和Animator的影响测试

测试结果为两者同时存在,互不影响,Animator不会刻意冻结Rigidbody. Animator只是按照记录的值改变相关数值 如果执行动画之前就没有产生速率,执行时也不会有速率 如果有产生速率,其衰减速度不会受到影响 当动画中碰到了其他有刚体的物体,会产生额外速率,并且会附加在原有动画上. 而对于有根运动的物体,使用AddForce时,会出现此问题:http://www.cnblogs.com/hont/p/5186694.html

Unity内存优化技术测试案例

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 Unity引擎优化技术,无非涉及到三点:CPU优化,GPU优化,内存优化. 先谈谈内存优化:大概可以分成三大部分: 1. Unity3D内部的内存 2. Mono的托管内存 3. 引入的DLL或者第

《Unity_API解析》 第十章 Rigidbody类

Rigidbody类的功能是用来模拟GameObject对象在现实世界中的物理特性,包括重力.阻力.质量.速度等.对Rigidbody对象属性的赋值代码通常放在脚本中的OnFixedUpdate方法中. Rigidbody类实例属性 collisionDetectionMode属性:碰撞检测模式 public CollisionDetectionMode collisionDetectionMode{get; set;} 此属性用于设置刚体的碰撞检测模式,刚提的碰撞检测模式有三种,即枚举类型Co

转载 unity3d 理解刚体(Rigidbody)和碰撞体(Collider)以及触发器(Is Trigger)

和好的文章,有一些原作者的结论很经典. 刚体(Rigidbody)的官方(摘自Unity3d的官方指导书<Unity4.x从入门到精通>)解释如下: Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力用来保证游戏对象像在真实世界中那样进行运动.任何游戏对象只有添加了刚体组件才能受到重力的影响,通过脚本为游戏对象添加的作用力以及通过NVIDIA物理引擎与其他的游戏对象发生互动的运算都需要游戏对象添加了刚体组件. 个人理解就是刚体是用来模拟物体受到一个力作用

unity collider rigidbody zz

http://blog.sina.com.cn/s/blog_5b6cb95001017vfr.html 其中最基本的关系: Collider是最基本的触发物理的条件,例如碰撞检测.基本上,没有Collider物理系统基本没有意义(除了重力). Rigidbody是物体的基本物理属性设置,当检测碰撞完之后,就要计算物理效果,而Rigidbody就是提供计算基本参数的玩意. PhysicMaterial则是附加的基本物理参数,是一个物理材质,UNITY3D有自带默认的物理材质的系数(在Edit/P

CR开发笔记-2基础飞机的搭建以及测试代码

好吧!今天没有建模,主要是美术细胞死了. 处于一种劳累的状态. 快速说一下今天的进度 啊,这就是一个逗比飞机的基本骨架. 没有什么好解释的. 这里开始坑人了,上面的红色箭头指的是是否利用重力,这里由于是飞船么,宇宙中暂时没有重力,所以去掉. 下面是的红红的是是否符合经典物理动力学. (说白了就是是否可以支持Force,今天我以为他是是否失重,然后调了半天代码%>_<%) 然后贴代码. public class levelRun : MonoBehaviour { // Use this for

iOS app打包 -- 生成ipa测试包 步骤详解

最近有小伙伴问我如何打成ipa包分发给测试人员 , 虽然现在网上的教程很多,但是也很杂, 没有一个比较完整的讲解. 利用工作之余, 就说一下如何生成ipa包?共分为两种方法. 第一种方法: 1) 至于配置发布证书和AdHoc描述文件, 就不再累述, 下载下来双击安装即可.(ps: 生成AdHoc描述文件的时候要注意勾选所有的设备, 只有被描述文件包含的设备才能进行相应的测试. 如果是企业账号的话则不需要添加设备的udid). 2) 接下来开始配置xCode里的工作(包括发布证书和描述文件), 注