Unity日记18(刚体、获取碰撞物的信息、铰链、弹簧)

目录

刚体

刚体

重力

isKinematic

碰撞检测

变换限制

​编辑

碰撞

 获取到碰撞物的实体,输出它的某个信息。

 碰撞和触发器的区别

铰链

锚点和轴

弹簧组件

固定关节组件

定制摩擦力面


刚体

刚体

添加了好像不能禁用。

重力

重力,顾名思义。

禁用重力,不受重力影响。当有物体撞击,猜测会向撞击方向飞去。

isKinematic

        如果启用了 isKinematic,则力、碰撞或关节将不再影响刚体。 刚体将由动画或脚本通过更改 transform.position 进行完全控制。 运动刚体也会通过碰撞或关节影响其他刚体的运动。 例如,可以将运动刚体连接到一个具有关节的普通刚体上, 则该普通刚体将受到运动刚体运动的约束。 对于制作通常由动画驱动,但在特定情况下,可以通过将 isKinematic 设置为 false 来快速转变为布娃娃的角色, 运动刚体也极其有用。

测试:一个带刚体组件(禁用动力学)的物体去撞击另一个带刚体组件(开启动力学)的物体。

结果:“不开”的撞不动“开的”。

再测试:相反用“开的”去撞“不开的”,能撞动。 

 

碰撞检测

离散

持续:推荐“地面”等使用

连续动态:推荐“子弹”等使用

变换限制

锁xyz的位置、锁xyz轴的旋转。

碰撞

要两个物体都有碰撞组件才能发生碰撞;

实例:火星受重力下落,然后碰撞地面发生爆炸

火星有重力、碰撞组件;

地面有碰撞组件

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Boom_script : MonoBehaviour
{
    public GameObject prefab;//后续操作预设体
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    //监听发生碰撞
    private void OnCollisionEnter(Collision collision)
    {
        Instantiate(prefab, transform.position, Quaternion.identity);
        Destroy(gameObject);
    }
    //持续碰撞
    private void OnCollisionStay(Collision collision)
    {
        
    }
    //结束碰撞
    private void OnCollisionExit(Collision collision)
    {
        
    }
}

生成和销毁语句

        Instantiate(Gameobject,位置,四元数旋转);
        Destroy(GameObject);

 

 获取到碰撞物的实体,输出它的某个信息。

    private void OnCollisionEnter(Collision collision)
    {
        Instantiate(prefab, transform.position, Quaternion.identity);
        Destroy(gameObject);
        Debug.Log(collision.gameObject.name);
        string name= collision.gameObject.name;
        GetObj = GameObject.Find(name);
        Debug.Log(GetObj.layer);
    }

第一个参数是碰到的物体的名字

第二个参数是碰到的物体的层名字(数字是层序号)


 

 碰撞和触发器的区别

1.物理特性。触发器是检测区域、结界、视野,不受物理特性影响。碰撞能返回碰撞的位置,受物理特性影响。

2.物理材质。有些物理材质在碰撞上会异常,但触发器不会出现异常(因为位置)。

3.函数名和返回参数不同。

4.实例。士兵拿剑去砍击,要剑碰到敌人才有伤害,属于碰撞。


铰链

铰链必须带刚体。

锚点和轴

调整旋转的位置和旋转轴 

旋转位置(achor),长宽高都是1。起始点是(0,0,0)。

旋转轴(axis),看是绕着哪个轴旋转。(0,1,0)绕着Y轴。

旋转速度


弹簧组件

示例:上面方块固定,下面方块通过弹簧连接上面方块。开始后方块因重力掉下,之后一弹一弹,最后静止。

上方块:添加刚体(启用动力学);添加弹簧组件(spring joint),连接体添加为下方块。

下方块:添加刚体(启用重力)。

 


固定关节组件

在负责拉人的对象上用,将拉的人添加到连接体上。


定制摩擦力面

 

动态摩擦力

静态摩擦力

弹力 

 

        摩擦力是防止表面相互滑落的量。尝试堆叠对象时,此值很重要。摩擦力有两种形式:动态和静态。对象静止时使用__静态摩擦力。静态摩擦力会阻止对象开始移动。如果向对象施加足够大的力,对象将开始移动。随后,__动态摩擦力__将发挥作用。动态摩擦力__现在将尝试在与另一个对象接触时减慢对象的速度。

在碰撞组件中应用

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值