Unity(第十八部)物理力学,碰撞,触发、关节和材质

1、重力

刚体组件

英文 中文 描述
RigidBody 刚体组件 physics->rigidbody ,刚体组件使一个物体有了质量,重力等。,use gravity 勾选后,物体才会受到重力,会自动下落,取消勾选就不会。,,is kinematic 表示运动学刚体,此时物体质量为0,就不会受重力的影响。
复制代码
 1. 质量
 2. 阻力
 3. 角阻力
 4. 使用重力(取消后,只是不受重力影响,阻力等还是受影响的)
 5. Is Kinematic(是运动学的,勾选后,不受物理影响)
 6. 插值(一般不用修改,插值是按照上一帧做插值,外推是按照下一帧做插值)
 7. 碰撞检测(离散的节省性能非连续检测高速物体检测不到,持续和连续动态是相对的快速的物体是连续动态不动的选择持续比较好但是浪费性能,没有翻译的Co...是连续检测性能低于持续和连续高于离散)
 8. Constraints(冻结位置是值某个方向不能运动,冻结旋转同理) 

2、碰撞的产生和监听

英文 中文 描述
Mesh Collider 网格碰撞器
Sphere Collider 球体碰撞器
  1. 碰撞中心(修改了碰撞中心会发生偏移)
  2. 碰撞半径(大了会间隔碰撞,下了会穿透一部分)

碰撞组件实际碰撞发生的是碰撞线框
碰撞条件

  1. 至少有一个物体有刚体组件
  2. 只有物体都有碰撞器的时候才会发生碰撞
csharp 复制代码
//设置一个爆炸的预设体
public gameObject Prefab;
//监听发生碰撞
 private void OnCollisionEnter(Collision collision)
    { 
    	//创建一个新的爆炸物体
    	Instantiate(Prefab, transform.position, Quaternion.identity)
    	//销毁自身(火焰物体) 
		Destroy(gameObject); 
        //碰撞到的物体信息
        Debug.Log(colision.gameObject.name);
        Debug.Log("碰撞发生!");
    }
//持续碰撞中
 private void OnCollisionStay(Collision collision)
    { 
        Debug.Log("持续碰撞中!");
    }
//结束碰撞
 private void OnCollisionExit(Collision collision)
    { 
        Debug.Log("结束碰撞!");
    }

3、触发

触发条件 和碰撞器一样

  1. 至少有一个物体有刚体组件
  2. 只有物体都有碰撞器的时候才会发生碰撞,只是其中一个碰撞器设置成触发器;一般触发器设置成看不见的

可移动的游戏物体脚本

csharp 复制代码
	void Update()
		{
			//水平轴
			float horizontal = Input.GetAxis("Horizontal");
			//垂直轴
			float vertical = Input.GetAxis("Vertical");
			//创建成一个方向向量
			Vector3 dir = new Vector3(horizontal, 0, vertical);
			//朝向量方向移动Translate是平移,*Time.dalteTime是指每秒
			transform.Translate(dir*Time.dalteTime);
		}

触发器物体的脚本

物体Cube (1)是墙壁,触发后执行的物体,下面代码是触发后Cube (1)墙体消失

csharp 复制代码
    private void OnTriggerEnter(Collider other)
    {
        GameObject cube = GameObject.Find("Cube (1)");
        if (cube != null)
        {

            cube.SetActive(false);
        }
    }
    private void OnTriggerStay(Collider other)
    {
    }
    private void OnTriggerExit(Collider other)
    {

    }

4、物理关节(铰链,弹簧等)

添加组件的时候搜索关节,会有很多,

铰链关节

可以做固定轴旋转

Anchor 是轴的位置

轴是轴的方向

Use Motor 自动

弹簧关节

需要两个物体链接,在a物体加弹簧组件,把b物体拖入刚体Connected Body 就链接了,其他属性不细说了

固定关节

和弹簧类似, 需要两个物体链接,在a物体加弹簧组件,把b物体拖入刚体Connected Body 就链接了,其他属性不细说了

但是性质不同,就会固定在一个物体上,无法移动等;类似胶水,可以设置断开力,到达足够力时就断开链接

其他关节暂时不讲

5、物理材质

不同材质有不同的效果、如冰面和土地的摩擦力不同;

新建-》物理材质,可以设置摩擦力弹力等;

给物体添加材质


相关推荐
NRatel2 小时前
Unity游戏打包——打包常见报错(含Android、iOS)
游戏·unity·游戏引擎
SmalBox1 天前
【渲染管线】UnityURP中[渲染路径]选择‌
unity·渲染
陈小峰_iefreer1 天前
使用Stone 3D快速制作第一人称视角在线小游戏
游戏引擎·元宇宙·three.js·web3d
Glunn2 天前
记住密码管理器
unity
17岁的勇气2 天前
Unity Shader unity文档学习笔记(二十一):几种草体的实现方式(透明度剔除,GPU Instaning, 曲面细分+几何着色器实现)
笔记·学习·unity
EQ-雪梨蛋花汤2 天前
【Unity&AS】Unity & Android Studio 联合开发快速入门:环境配置、AAR 集成与双向调用教程
unity·游戏引擎·android studio
Glunn2 天前
UI弹出动画
ui·unity
淡海水2 天前
【URP】Unity Shader Tags
unity·游戏引擎·渲染·shader·tag·urp
小清兔2 天前
c#基础知识
开发语言·数据库·学习·unity·c#·游戏引擎·.net