Unity添加模型的碰撞器问题

模型在unity添加碰撞器后不跟随动画播放移动位置解决办法:

1、public SkinnedMeshRenderer meshRenderer;
        public MeshCollider coll;
        void Update()
        {
            for (int i = 0; i < 5; i++)
            {
                Mesh colliderMesh = new Mesh();
                meshRenderer.BakeMesh(colliderMesh); //更新mesh
                coll.sharedMesh = null;
                coll.sharedMesh = colliderMesh; //将新的mesh赋给meshcollider
            }
            
        }

使用上面代码可以刷新mesh,但是刷新出来的mesh会比模型略小一点。

2、把要添加meshcollider的物体拖到Skinmeshrender下面的RootBone属性对应的物体(根节点)下面作为子物体,然后需要手动调整碰撞器的位置。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity 是一款功能强大的游戏引擎,具有强大的模型导入和碰撞检测功能。为了在游戏中实现物体间的碰撞效果,Unity 可以根据模型的形状自动生成碰撞。所谓碰撞Collider)是一种与物体形状相匹配的实体,用于模拟物体之间的碰撞和触发事件。 Unity 提供了多种自动生成碰撞的方法,主要有以下几种: 1. 包围盒碰撞(Bounding Box Collider):这种碰撞是根据物体模型的外接矩形盒子进行生成,简单粗略,适用于部分模型碰撞检测。 2. 网格碰撞Mesh Collider):这种碰撞可以根据物体模型的顶点和三角面生成,与物体的形状更加精确匹配,因此碰撞检测更准确,但同也会占用更多的计算资源。 使用 Unity 自动生成碰撞非常简单,只需在导入模型后,在模型设置中选择合适的 Collider 类型,并勾选自动生成选项。Unity 会自动根据模型形状生成相应的碰撞,可以通过调整碰撞的尺寸、位置和旋转等参数,进一步优化碰撞效果。 需要注意的是,自动生成碰撞并不一定能够满足精确的碰撞需求。有些复杂的模型可能无法正确生成碰撞,这需要手动添加和调整碰撞。同,当模型发生变形或动画,自动生成的碰撞可能无法跟随变化,需要使用代码或脚本来更新或调整碰撞。 总而言之,Unity 可以根据模型形状自动生成碰撞,提供方便的碰撞检测功能。开发者可以根据具体情况选择适合的碰撞类型,并根据需要手动调整和优化碰撞,以实现更好的碰撞效果和游戏体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值