[Unity]刚体碰撞检测刚体反弹次数

这篇博客介绍了在Unity中如何实现刚体碰撞检测并统计物体反弹次数的方法。内容包括确保两个物体都带有Collider组件,且其中一个物体拥有设置为非Kinematic的Rigidbody组件。通过OnCollisionEnter方法监听碰撞事件,每次碰撞时增加计数器NumberCollisions,并将其保存以供后续使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

2个物体必须都有Collider组件。其中一个物体必须有Rigidbody组件,IsKinematic为否。

 


    private int NumberCollisions;
    // Use this for initialization
    void Start () {
        NumberCollisions = 0;
    }
    private void OnCollisionEnter(Collision collision)
    {
        Debug.Log("    collision:" + collision.transform.name);
        NumberCollisions = NumberCollisions + 1;

        NumSave.instatice._num = NumberCollisions;


    }

 

NumberCollisions 即刚体碰撞的次数。

 

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

public class NumSave : MonoBehaviour {
    #region Singleton
    public static NumSave instance;
    private voi
### Unity刚体碰撞的基础概念 在 Unity 中实现物体之间的碰撞检测,通常需要给对象添加 `Rigidbody2D` 组件以及相应的 `Collider2D` 组件[^2]。`Rigidbody2D` 定义了游戏对象如何响应物理引擎的作用,而 `Collider2D` 则定义了该对象的形状用于与其他对象发生接触。 #### Rigidbody2D 类型及其特性 存在三种主要类型的 `RigidBody2D`: 1. **Dynamic (动态)**:这是最常用的模式,默认情况下启用重力作用,并允许物体之间相互施加力矩。这种类型的刚体会参与完整的物理仿真过程,但是不能通过 Transform 来直接修改位置或旋转角度。 ```csharp private Rigidbody2D rb2d; void Start(){ rb2d = GetComponent<Rigidbody2D>(); } ``` 2. **Kinematic (运动学)** 和 Static (静态),这两种类型不在本次讨论范围内,因为它们不完全遵循物理法则或者根本不具备动力学行为。 #### Collider2D 配置 为了使两个具有 `Rigidbody2D` 的实体能够互相感知并触发事件,还需要为这些实体配置合适的 `Collider2D` 形状(例如 BoxCollider2D, CircleCollider2D)。当设置了正确的碰撞器之后,只要满足一定的条件——比如距离足够近且速度方向合适,则会激活特定的方法如 OnCollisionEnter(), OnTriggerStay() 等来处理实际发生的交互逻辑。 #### 实现自碰撞与intercollision 对于更复杂的场景需求,像设置内部结构间的碰撞即 self-collision 或者不同组内的粒子间碰撞 intercollision ,其操作流程基本一致;主要是针对想要产生碰撞效果的目标设定对应的碰撞规则和参数调整[^1]。 ```csharp void OnCollisionEnter2D(Collision2D other){ Debug.Log("Collision detected with "+other.gameObject.name); } ``` 上述代码展示了如何监听进入碰撞状态的对象名称,在此基础之上可以进一步扩展功能完成更多复杂任务。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值