【unity物理系统】人物乳摇的实现

时间:2024-04-05 17:32:13

首先找到人物胸部的顶点骨骼位置,拷贝一下
如图所示
【unity物理系统】人物乳摇的实现
然后在原物体上挂栽如下脚本

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

public class Wobbler : MonoBehaviour {

    /// <summary>
    /// 中心点的位置(拉入拷贝后的物体)
    /// </summary>
    public Transform centerTran;
    /// <summary>
    /// 我的位置
    /// </summary>
    Transform myTransform;
    /// <summary>
    /// 刚体组件
    /// </summary>
    Rigidbody rig;
    /// <summary>
    /// 弹性系数
    /// </summary>
    public float hardness;

    private void Start()
    {
        //Time.timeScale = 0.1f;
        rig = GetComponent<Rigidbody>();
        myTransform = transform;
    }
    private void FixedUpdate()
    {
        //防止动作大的时候摆动穿模
        if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.Space))
        {
            myTransform.position = centerTran.position;
        }
        else//开始摆动的条件
        {
            rig.AddForce(-(transform.position - centerTran.position) * hardness);
            //Debug.Log("受到力了");
            //Debug.Log(gameObject);
        }
    }
   
}

然后自己限制一下什么时候不让乳摇,尽量避免一些大的动作,然后运行效果如下

【unity物理系统】人物乳摇的实现
当然,要是想要更好的效果,可以多拉几个胸部的点,效果更好

我是参考的这位大神的博客,他博客上还有更震撼的内容哟
https://blog.csdn.net/roadlun/article/details/80939986