Unity实现不倒翁

Unity实现不倒翁

Unity 实现不倒翁

不倒翁插件下载地址
这是一个下载地址

https://www.aigei.com/item/zekpackage_unit.html

请使用URP渲染管线创建工程,导入此插件,有问题评论区告诉我。
备用下载地址:B站

csharp 复制代码
using UnityEngine;


[RequireComponent(typeof(Rigidbody))]
public class RolyPoly : MonoBehaviour
{

    [Header("重心设置")]
    [Tooltip("重心高度偏移(负值降低重心)")]
    public float centerOfMassOffset = -0.25f;

    [Header("物理参数")]
    [Range(0.1f, 10f)] public float angularDrag = 2f;
    [Range(0.1f, 10f)] public float maxAngularVelocity = 8f;

    private Rigidbody rb;
    private Vector3 originalCenterOfMass;
    
    [Header("摇摆优化")]
    public float stabilizationForce = 5f;

  /*  参数、作用、推荐值
centerOfMassOffset  重心越低越稳定	(-0.5,  -1.5)
angularDrag 旋转阻力,值越大停止越快	(1.0, 3.0)
maxAngularVelocity 最大旋转速度	(5, 10)
stabilizationForce 主动稳定力度	(2, 5)
*/

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        rb.maxAngularVelocity = maxAngularVelocity;
        rb.angularDrag = angularDrag;

        // 设置重心
        originalCenterOfMass = rb.centerOfMass;
        AdjustCenterOfMass();
    }

    void AdjustCenterOfMass()
    {
        // 降低重心(Y轴负方向)
        Vector3 newCenter = originalCenterOfMass;
        newCenter.y += centerOfMassOffset;
        rb.centerOfMass = newCenter;
    }
    void FixedUpdate()
    {
        // 增加稳定性
        if (rb.velocity.magnitude < 0.1f)
        {
            Vector3 uprightDirection = Vector3.up;
            Vector3 currentUp = transform.up;

            // 计算恢复力矩
            Vector3 torque = Vector3.Cross(currentUp, uprightDirection);
            rb.AddTorque(torque * stabilizationForce, ForceMode.Acceleration);
        }
    }
    // 可选:在编辑器中可视化重心
    void OnDrawGizmosSelected()
    {
        if (!Application.isPlaying) return;

        Gizmos.color = Color.red;
        Gizmos.DrawSphere(transform.TransformPoint(rb.centerOfMass), 0.1f);
    }
}
相关推荐
番茄小能手6 分钟前
【全网唯一】C# 纯本地离线文字识别Windows版dll插件
开发语言·c#
葬歌倾城1 小时前
waferMap图像渲染
c#·wpf
甄天2 小时前
WPF路由事件:冒泡、隧道与直接全解析
c#·wpf·visual studio
专注VB编程开发20年2 小时前
C#,VB.NET从JSON数据里提取数组中的对象节点值
c#·json·.net
寻丶幽风2 小时前
论文阅读笔记——NoPoSplat
论文阅读·笔记·三维重建·3dgs·相机位姿·dustr
KhalilRuan3 小时前
Unity-MMORPG内容笔记-其一
unity·游戏引擎
Accpdaiyekun4 小时前
C# 操作mongodb 多次查询快还是使用管道查询速度快
mongodb·c#·lua
西岭千秋雪_5 小时前
Redis缓存架构实战
java·redis·笔记·学习·缓存·架构
XvnNing5 小时前
【Verilog硬件语言学习笔记4】FPGA串口通信
笔记·学习·fpga开发
海棠蚀omo5 小时前
C++笔记-位图和布隆过滤器
开发语言·c++·笔记