unity 桌球碰撞反弹

博客提及根据入射方向得到反射方向,且保留相同速率,还给出原文链接https://blog.youkuaiyun.com/wsc122181582/article/details/52790317/,并声明版权,转载需附博文链接。

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

1.根据入射方向得到反射方向,并保留相同速率

private Vector3 m_preVelocity = Vector3.zero;//上一帧速度

public void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.name == "wall")
    {
        ContactPoint contactPoint = collision.contacts[0];
        Vector3 newDir = Vector3.zero;
        Vector3 curDir = transform.TransformDirection(Vector3.forward);
        newDir = Vector3.Reflect(curDir, contactPoint.normal);
        Quaternion rotation = Quaternion.FromToRotation(Vector3.forward, newDir);
        transform.rotation = rotation;
        rigidbody.velocity = newDir.normalized * m_preVelocity.x / m_preVelocity.normalized.x;
    }
}

原文:https://blog.youkuaiyun.com/wsc122181582/article/details/52790317/
版权声明:本文为博主原创文章,转载请附上博文链接!

2.也可以添加
创建物理材质

修改值就可以发生反弹碰撞了

### 实现 Unity 2D 小球碰撞效果 为了在 Unity 2D 中创建类似于台球游戏的小球碰撞效果,需利用内置的物理引擎来处理物体间的交互。以下是详细的实现方法: #### 创建项目并设置环境 启动 Unity 并新建一个 2D 项目。确保场景中已配置好 Camera 和 Lighting。 #### 添加刚体组件给小球对象 对于每一个代表小球的游戏对象,在 Inspector 面板下为其添加 Rigidbody2D 组件。这允许这些对象参与物理仿真过程[^1]。 ```csharp // C# Script to add rigidbody component programmatically. using UnityEngine; public class BallInitializer : MonoBehaviour { void Start() { GetComponent<Rigidbody2D>(); } } ``` #### 定义碰撞器属性 同样针对每个小球实例,附加 CircleCollider2D 来定义其外形边界用于检测与其他实体接触的情况。调整 Collider 的 Radius 属性匹配实际模型尺寸以获得更精确的结果[^2]。 #### 编写脚本控制逻辑 编写自定义脚本来管理小球之间的相互作用行为,比如施加力矩使它们滚动起来或是反弹离开彼此。下面是一个简单的例子展示了如何响应两颗球相碰事件: ```csharp void OnCollisionEnter2D(Collision2D other) { // Apply force based on collision normal and relative velocity between balls Vector2 direction = new Vector2(other.contacts[0].normal.x, other.contacts[0].normal.y); float speedFactor = Random.Range(5f, 10f); // Add some randomness for realism this.GetComponent<Rigidbody2D>().AddForce(direction * speedFactor); Debug.Log("Collision detected with " + other.gameObject.name); } ``` 此代码片段会在每次发生碰撞时打印日志消息,并向当前物体应用沿碰撞法线方向的力量,从而模仿真实的弹射现象。 #### 调整 Physics Material 参数优化摩擦与弹性表现 通过修改关联材料中的 Friction(摩擦系数)和 Bounciness(回弹程度),可进一步微调最终视觉反馈的质量,使其更加贴近真实世界里的台球体验。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值