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、物理材质

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

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

给物体添加材质


相关推荐
Artistation Game1 天前
九、怪物行为逻辑
游戏·unity·游戏引擎
百里香酚兰1 天前
【AI学习笔记】基于Unity+DeepSeek开发的一些BUG记录&解决方案
人工智能·学习·unity·大模型·deepseek
妙为1 天前
unreal engine5制作动作类游戏时,我们使用刀剑等武器攻击怪物或敌方单位时,发现攻击特效、伤害等没有触发
游戏·游戏引擎·虚幻·碰撞预设
dangoxiba1 天前
[Unity Demo]从零开始制作空洞骑士Hollow Knight第十三集:制作小骑士的接触地刺复活机制以及完善地图的可交互对象
游戏·unity·visualstudio·c#·游戏引擎
先生沉默先2 天前
使用Materialize制作unity的贴图,Materialize的简单教程,Materialize学习日志
学习·unity·贴图
十画_8242 天前
Visual Studio 小技巧记录
unity·visual studio
red_redemption2 天前
cpp,git,unity学习
git·unity·游戏引擎
tealcwu2 天前
【Unity踩坑】Unity更新Google Play结算库
unity·游戏引擎
先生沉默先2 天前
unity 默认渲染管线材质球的材质通道,材质球的材质通道
unity·游戏引擎·材质
白鹭float.2 天前
【Unity AI】基于 WebSocket 和 讯飞星火大模型
人工智能·websocket·unity