精华内容
下载资源
问答
  • 最近自制了一个的角色控制器(没有重力的角色)时发现,角色碰撞到墙壁之后会有一个小小的反弹力导致角色有一个微弱的反弹位移,这样给人一种不好的感觉。 研究了一下,除了限制坐标轴( Rigidbody—Constraints—...

    开发环境
    Unity各版本刚体组件通用
    本人使用:
    Unity 2018.4

    一,碰撞到物体反弹
    详细描写:
    最近自制了一个的角色控制器(没有重力的角色)时发现,角色碰撞到墙壁之后会有一个小小的反弹力导致角色有一个微弱的反弹位移,这样给人一种不好的感觉。
    解决方案:
    限制坐标轴( Rigidbody—Constraints—Freeze Rotation),
    在FixedUpdate中调用移动方法(注:使用的是物理特性,应在这里写而不是Update函数内)里面写一句代码如下:

    void FixedUpdate()
    {
    //避免收到力的作用反弹后一直飘动
    player.GetComponent<Rigidbody>().velocity = Vector3.zero;( Vector3.zero=new Vector3(0, 0, 0);
    }
    
    

    刚体组件Rigidbody设置如图所示:

    在这里插入图片描述
    声明:本文为个人笔记,用于个人学习研究使用非商用,内容为个人研究及综合整理所得,若有违规,请联系本人,违规必改。

    展开全文
  • 刚体与碰撞体及其移动碰撞问题

    千次阅读 2018-11-20 22:21:36
    前言 ...添加了刚体必须要添加碰撞体,否则会直接穿透地面下落 如果物体只有碰撞体,则是静态物体,别的物体对他碰撞不会造成影响 如果物体有碰撞体也有刚体,就会显示物理特性,被撞倒 ...

    前言

    • 虽然以前学过,但是今天来总结一下

    总结

    • 物体碰撞是以collider为基础的
    • 添加了刚体必须要添加碰撞体,否则会直接穿透地面下落
    • 如果物体只有碰撞体,则是静态物体,别的物体对他碰撞不会造成影响
    • 如果物体有碰撞体也有刚体,就会显示物理特性,被撞倒
      在这里插入图片描述

    移动方式

    • 我用了三种方式进行测验,第一种是位置累加,第二种transform.translate,第三种是rigi.movePosition
      1. 第一种,添加刚体和碰撞体都会直接穿过环境。因此这种方式最好不要用
      2. transform.position+=dir
      3. 第二种,在只有碰撞体的时候,会直接穿过静态环境。添加刚体之后,就会显示刚体物理特性
      4. transform.translate(dir*Time.deltaTime*speed)
      5. 第三种,在添加刚体之后,用刚体来控制移动,自然会显示出物理特性
      6. Vector3 pos = transform.position+dir*Time.deltaTime*speed; rigi.movePosition(pos);
    展开全文
  • OSG与刚体碰撞引擎ODE结合例子,例子很好的结合了OSG与ODE,有效的解决了仿真引擎和物理引擎结合的问题,值得学习
  • Unity3D入门(八):物理组件之刚体碰撞体准备工作物理组件之刚体刚体组件简介使用刚体移动物体遇到的问题物理组件之碰撞碰撞体简介碰撞体种类Box ColliderSphere ColliderCapsule ColliderMesh Collider ...

    准备工作

    在上一节的基础上增加两个新的Cube,一上一下悬空于地板上,设置刚体组件及属性。如图:
    在这里插入图片描述

    物理组件之刚体

    刚体组件简介

    1.刚体简介
    刚体:Rigidbody,属于物理类组件。
    作用:添加了刚体组件的游戏物体,就有了重力,就会做自由落体运动。也就意
    味着可以像现实中的物体一样运动。

    2.给物体添加刚体组件
    选中游戏物体–>菜单 Component–>Physics–>Rigidbody

    3.刚体组件属性

    属性 作用
    Mass[质量] 设置物体的质量,也就是重量。质量单位是 KG
    Drag[阻力] 空气阻力,0 表示无阻力,值很大时物体会停止运动
    Angular Drag[角阻力] 受到扭曲力时的空气阻力,0 表示无阻力,值很大时物体会停止运动
    Use Gravity[使用重力] 是否使用重力。

    在这里插入图片描述

    调整属性,观察两个红色Cube下落时碰撞的情景。为增强效果,建议下面Cube的阻力 > 上面Cube的阻力
    在这里插入图片描述

    使用刚体移动物体

    1.相关方法
    Rigidbody.MovePosition(Vector3):使用刚体移动物体的位置。
    使用刚体移动物体,物体是根据世界坐标系的方向移动的。
    使用刚体移动物体,物体会触发物理相关的事件。

    2.参数
    MovePosition 中的 Vector3 要使用 当前位置+方向 的方式。
    Transform.Position:属性 当前物体的位置。

    3.特点
    ①会于场景中的模型物体发生碰撞;
    ②会受重力影响(到达场景边缘外,会下落)。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class RgidBody : MonoBehaviour
    {
        private Rigidbody m_RigidBody;
        private Transform m_Transform;
    
        // Use this for initialization
        void Start()
        {
            m_RigidBody = gameObject.GetComponent<Rigidbody>();
            m_Transform = gameObject.GetComponent<Transform>();
        }
    
        // Update is called once per frame
        void Update()
        {
            if (Input.GetKey(KeyCode.W))
            {
                m_RigidBody.MovePosition(m_Transform.position + Vector3.forward * 0.5f);
            }
            if (Input.GetKey(KeyCode.S))
            {
                m_RigidBody.MovePosition(m_Transform.position + Vector3.back * 0.5f);
            }
            if (Input.GetKey(KeyCode.A))
            {
                m_RigidBody.MovePosition(m_Transform.position + Vector3.left * 0.5f);
            }
            if (Input.GetKey(KeyCode.D))
            {
                m_RigidBody.MovePosition(m_Transform.position + Vector3.right * 0.5f);
            }
        }
    }
    
    

    遇到的问题

    注意:设置的类名(本例中为RgidBody)不能设置为RigidBody等组件名。否则无法使用组件的API。
    在这里插入图片描述
    此时,Rigidbody调用找不到MovePosition,这是因为类名跟Rigidbody组件名字相同,Start方法里获取的是Rigidbody类,而不是Rigidbody组件,所以没有这个Api,把类名换一下即可解决。
    参考链接

    物理组件之碰撞体

    按照之前的设置后,我们发现:Student(蓝色Cube)在较快的速度下依然可以穿过空隙体积远小于它的桌椅,因此我们引入碰撞体。

    在这里插入图片描述

    碰撞体简介

    1.碰撞体
    使用刚体移动的物体,与场景中其他的物体相碰撞:
    其实是碰撞的目标物体的“碰撞体”组件,也就是 Collider。
    另外和目标物体碰撞的,是我们移动的物体的自身的“碰撞体”组件。
    碰撞体可以理解为我们的模型的“外骨骼”。
    模型只要加了刚体,就必须要加碰撞体,否则没有意义。

    ***如下图所示,Student取消Mesh Render的勾选,显示绿色的框架。***只加刚体不加碰撞体,物体会自由下落。
    在这里插入图片描述在这里插入图片描述
    以上述第二种为例:
    在这里插入图片描述

    2.给物体添加碰撞体组件
    选中游戏物体–>菜单 Component–>Physics–>Xxxx Collider
    (我们在 Unity 中创建的基本模型,自身都带有碰撞体组件)

    碰撞体种类

    Box Collider

    1.简介
    盒子碰撞体,形状是立方体形,用于包裹类似“立方体”的模型,比如:盒子,箱子,门,房子等。

    2.组件属性

    属性 作用
    Center[中心点] 设置 Box Collider 的中心点
    Size[大小] 设置 Box Collider 的大小

    组件变大,即可发生碰撞。

    Sphere Collider

    1.简介
    球形碰撞体,形状是球形,用于包裹类似“球形”的模型。

    2.组件属性

    属性 作用
    Radius[半径] 设置 Sphere Collider 的大小

    Capsule Collider

    1.简介
    胶囊碰撞体,形状是胶囊状,用于包裹“胶囊形”的模型。

    2.组件属性

    属性 作用
    Height[高度] 设置 Capsule Collider 的高度
    Direction[方向] 设置 Capsule Collider 的高度方向(轴向)

    Mesh Collider

    1.简介
    网格碰撞体,用于包裹复杂结构的模型。

    2.组件属性

    属性 作用
    Mesh[网格] 根据指定的网格,生成碰撞体

    下图为球形碰撞体和网状碰撞体的区别,左面为球形,右面为网状。

    展开全文
  • unity3D之刚体碰撞体分析

    千次阅读 2018-03-30 14:41:46
    做一个小demo的时候遇到这个问题,查了许多资料终于搞明白了,特此记录一下: 刚体是发生碰撞时不发生形变的物体,当然这是一种理想状态。 先看刚体,在physics里,rigidbody,翻译还是很直白的 参数说明: Mass...

        做一个小demo的时候遇到这个问题,查了许多资料终于搞明白了,特此记录一下:

        刚体是发生碰撞时不发生形变的物体,当然这是一种理想状态。

        先看刚体,在physics里,rigidbody,翻译还是很直白的微笑

              

            参数说明:

            Mass: 质量,单位kg

            Drag: 空气阻力

            Angular Drag:转动阻力

            Use Gravity: 重力,默认为false

            Is Kinematic: 大概意思是不受外力影响,勾选了这个重力以及其他外力就不起作用了。

    下面还有其他的用的较少,就不记了。

        说说碰撞体,但我更愿意叫它包围盒,想想自动门你可能就明白它是什么意思了,我们在一定范围内会触发某种机制。

        

     参数说明:

        Is Trigger: 是否触发触发器,勾上之后会让你的刚体失效,也就是说去撞另一个刚体,会直接穿过去。

        Material:材质

        Center:中心点,一般默认在物体正中心

        size:包围盒的大小

    脚本上加上下面这些代码,猜猜会发生什么,

    public void OnCollisionEnter(Collision collision)
        {
            Destroy(collision.gameObject);
        }

    是的,碰撞瞬间会摧毁被撞物体,OnCollisionEnter函数就是碰撞瞬间。

    学习使我快乐,我爱学习微笑

    展开全文
  • 本来想说今天学习一下unity3d中的物理的,学到刚体碰撞这一章,就想说先在场景里面摆一个平面(plane)和一个球体(sphere),然后让球体落下来砸在平面上然后反弹,看各种效果,步骤如下: 一、新建一个plane对象...
  • 做了一个碰撞的小Demo,用一个球去撞击一堵墙,结果在球和墙都设置了刚体碰撞体的情况下,球穿过了墙。移动球的位置,球有时能穿过墙,有时会被墙阻挡。 对于球穿过了墙,这个问题,在网上找了一下答案,基本可以...
  • 研究了多刚体系统的摩擦碰撞问题。一般的法向弹塑性力与位移的关系被直接引人到多刚体系统的计算中,同时考虑了碰撞中滑动模式的变化。在现存的文献中,常通过求解微分方程来解决该问题,但因碰撞时间同碰撞力不在同一...
  • 一,.关于物理材质,很简单 从上到下 1.动态摩擦力 2.静态摩擦力 3.反弹效果,取值【0-1】 4.接触的2者摩擦力计算方式,上图是取2者平均值 ...如果不加刚体组件或是不勾选上图6项而只勾选Is Kinematic都会发生反弹,
  • Unity 碰撞体和刚体的区别(应用)

    万次阅读 2016-11-07 09:45:21
    很多初学者都会问这么一个问题,那就是碰撞体和刚体到底有什么区别,以及如何应用两句话概括碰撞体: 碰撞体才能被射线检测到,否则无法被检测 碰撞体是产生碰撞的前提两句话概括刚体: 需要模拟重力的自由下落时...
  • Unity 关于刚体抖动的问题

    千次阅读 2019-03-06 22:10:20
    一、是刚体物体可能与其他碰撞体有持续的接触,刚体在接触面上移动,比如说刚体在一个带有boxcolider的地面上移动,这个时候你就会发现有些地方会导致刚体位置的变化,应为boxcolider有一定厚度,你人物的colider...
  • Unity3D 碰撞问题

    2013-08-22 21:52:00
    OnCollisionEnter(Collider other) 两个物体发生碰撞,如果要检测到碰撞信息,那么其中必有一个物体...两个GameObject发生碰撞,要想检测到触发信息,最少要有一个刚体碰撞器并且勾选了IsTrigger复选框,另一个最少...
  • 您遇到过高速运动物体穿透碰撞器的问题吗?遇到把移动方法放在“FixedUpdate”还能穿的问题吗?遇到过刚体碰撞方式改为连续碰撞还能穿的问题吗? 反正就是一直穿穿穿!
  • 本来笔者遇到问题会想办法去解决的,但是那是想了蛮久也没想通为什么两个物体碰撞要发生碰撞的事件前提是运动的那个要有刚体,为什么没运动的物体带有刚体就不行?嘿嘿,今天Rigidbody Sleeping解决了我这个问题。...
  • 碰撞检测问题

    2018-04-26 00:21:08
    通常使用collider时,两物体检测碰撞器时,两物体中至少有一个应为刚体组件。我们一般建议移动物体设置为刚体,因为物体长时间不运动其刚体组件可能会休眠。collider通常是根据判断目标的Tag来执行不同的方法。以下...
  • 今天在做一个小Demo时,遇到了这样一个...所以猜测可能是刚体施加力时标记也受到了力的作用(在与墙发生碰撞时同样会产生力的作用),又因为代码中的逻辑是使瞄准标记的位置和敌人的位置相同,所以会出现晃动问题。...
  • 今天在学习cocos的时候遇到了一个极为坑爹的问题,按照cocos官网文档上写的碰撞组件在碰撞时不会触发我们的...2. 检查是否开启全局刚体碰撞检测,该检测项是默认关闭的 // 虽然觉得会走到这一步的人这里应该都没问题
  • Unity5.5.2碰撞检测碰撞点坐标问题

    千次阅读 2017-03-28 14:38:44
    1.先说下发生碰撞检测的条件... ②运动的物体身上必须挂有刚体。 2.接下来是碰撞检测获取碰撞信息的方法using System.Collections; using System.Collections.Generic; using UnityEngine;public class ItmeCollis
  • ocosCreator碰撞检测-Boxcollider和PhysicsBoxCollider的使用和区别 ...当开启物理效果后 物体的确会有重力往下掉 嗯结果所有具有刚体属性的物体都在往下掉 好吧 rigidbody里面可以调整属性 让相应的物体...
  • 运动学体与刚体交互

    2020-12-21 09:52:49
    默认情况下,使用 move_and_slide()或 move_and_collide()移动的运动体将推动任何与其碰撞刚体。由于运动学移动函数的 infinite_inertia 参数,这种交互会忽略刚体的物理属性。 在某些情况下,这可能就是您所...
  • 其中角色有刚体碰撞器组件,其他模型“有”碰撞器。 事后发现错误在于,其他模型的碰撞器组件被加到“组”上,而非组内每个物体中。 例如,一个客厅场景,有桌子、电视、墙壁,将3者打组成为一个组,命名...
  • 一、是刚体物体可能与其他碰撞体有持续的接触,刚体在接触面上移动,比如说刚体在一个带有boxcolider的地面上移动,这个时候你就会发现有些地方会导致刚体位置的变化,应为boxcolider有一定厚度,你人物的colider...
  • Cocos的碰撞系统设计者堪称天才,我只花了两个小时就找到了问题所在。 碰撞组件中的Collider并不具备物理特性,意思是两个带Collider组件的物体发生碰撞,并不会有任何物理上的反馈,这和刚体没有任何关系,但是,...
  • 碰撞后抖动问题的解决: 因为人物添加了Box Collider 2D 和刚体,因此当碰撞后会模拟实际的运动情况,和其它碰撞碰撞后会发生抖动; 解决方法: 通过刚体控制物体的运动和位置,而不是通过 transfrom.position 来...
  • 1. 碰撞检查要求 其中一方必须是刚体,但都要求添加碰撞属性。两者都是刚体的时候,参数选择会有不同 2. 黑方块是 刚体 box collider, 左墙是刚体 box collider,右墙是非刚体 box collider 5. 右墙只有collider...
  • 物体碰撞需要刚体,但是用刚体的时候,他会自动的从平台上面掉下去,如果这个地方不懂,原因是没有仔细的阅读unity官方的API文档,unity官方为了帮助我们解决这个问题,专门设计了一个运动学的解决方案。具体API里面...
  • 问题和跳跃有些关系,说明下我跳跃功能是怎么弄的。 我用addForce的方法给刚体一个向上的冲击力,使得人物跳跃起来。 为了让它在跳跃的时候不会做出idle和跑步的动画,我设置了一个isJumping变量,当按下J键让人物跳...
  • 两个发生碰撞的物体都要有碰撞器,其中一个要有刚体(最好是运动的一方) 刚体会休眠:经常性不运动,刚体会休眠,休眠以后就不会发生碰撞检测 碰撞器: 1、3D碰撞器 2、2D碰撞器 主角Player增加Rigidbody2和Box...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 140
精华内容 56
关键字:

刚体碰撞问题