zoukankan      html  css  js  c++  java
  • Rigidbody SweepTest测试

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

    但是比较遗憾的是它对MeshCollider的支持不是很好,需要勾选Convex

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

    另外如果想移动刚体位置进行SweepTest的话,可以调用.position提前改变位置

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

    using UnityEngine;
    
    public class SweepTest : MonoBehaviour
    {
        public Rigidbody rigidbodyComponent;
    
    
        void OnEnable()
        {
            RaycastHit raycastHit;
            if (rigidbodyComponent.SweepTest(transform.forward, out raycastHit, 10))
            {
                Debug.Log("Contact");
                var raycastPoint = raycastHit.point;
    
                var closesPoint = rigidbodyComponent.ClosestPointOnBounds(raycastPoint);
    
                rigidbodyComponent.transform.position += raycastPoint - closesPoint;
            }
            else
            {
                Debug.Log("Failure");
            }
        }
    }

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

  • 相关阅读:
    用户组
    Compose
    ubuntu下不同版本python安装pip及pip的使用
    rest-framework-@action()装饰器
    数据库数据导出CSV文件,浏览器下载
    爬取拉钩网信息
    CSV模块
    DOM对象之查找标签&属性操作
    Java内存模型 一
    SQL优化之一
  • 原文地址:https://www.cnblogs.com/hont/p/5215457.html
Copyright © 2011-2022 走看看