美文网首页Unity基础入门分享
用骨骼做一个柔软毛笔笔头。

用骨骼做一个柔软毛笔笔头。

作者: 你的头好大 | 来源:发表于2017-12-21 17:37 被阅读19次

    原料:一个被动作绑定过骨骼的毛笔
    原理:原理其实很简单,通过判断毛笔移动的方向,对笔头的骨骼做一个相反方向的运动,骨骼从下到上的运动量呈衰减状态


    毛笔.gif
    public class TestMaobi : MonoBehaviour {
    
       
    
        public Transform[] childBone;//笔头的骨骼节点
        public Vector3[] BoneLocalPos;
    
    
        private Vector3 lastPostion;
        private Vector3 nowPostion;
        // Use this for initialization
        void Start () {
    
            BoneLocalPos = new Vector3[childBone.Length];
            for (int i=0;i<BoneLocalPos.Length;i++)
            {
                BoneLocalPos[i] = childBone[i].localPosition;
            }
            lastPostion = this.transform.position;
            nowPostion = this.transform.position;
        }
        public Vector3 m_MoveDir;
        void LateUpdate()
        {
            lastPostion = nowPostion;
            nowPostion = this.transform.position;
            Vector3 moveDir = nowPostion - lastPostion;
            m_MoveDir = moveDir.normalized;
            if (!moveDir.Equals(Vector3.zero))
            {
                for (int i = 0; i < childBone.Length; i++)
                {
    
    
    
                    Vector3 _moveDir = childBone[i].InverseTransformDirection(m_MoveDir);
                    
                    childBone[i].localPosition = Vector3.Lerp(childBone[i].localPosition, BoneLocalPos[i] - new Vector3(Mathf.Clamp(_moveDir.x * i * Time.deltaTime * 30f, -0.0015f * i, 0.0015f * i), 0, Mathf.Clamp(_moveDir.z * i * Time.deltaTime * 30f, -0.0015f * i, 0.0015f * i)), Time.deltaTime * 10f);
    
    
    
    
                }
            }
           
            
        }
    }
    

    相关文章

      网友评论

        本文标题:用骨骼做一个柔软毛笔笔头。

        本文链接:https://www.haomeiwen.com/subject/xrgawxtx.html