1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using System;
- using EasyButtons;
- public class RigSync : MonoBehaviour
- {
- public Transform targetRootBone;
- public Transform sourceRootBone;
- [SerializeField]public List<TransformDic> boneDic;
-
- [Button]
- void CalculateDic()
- {
- boneDic = new List<TransformDic>();
- foreach(Transform target in targetRootBone.GetComponentsInChildren<Transform>()){
- foreach(Transform souce in sourceRootBone.GetComponentsInChildren<Transform>()){
- if(target.name == souce.name){
- boneDic.Add(new TransformDic(souce, target));
- break;
- }
- }
- }
- }
- // Update is called once per frame
- void LateUpdate()
- {
- foreach(TransformDic bonePair in boneDic){
- bonePair.value.position = Vector3.Lerp(bonePair.value.position, bonePair.key.position + bonePair.offset, 0.1f);
- // bonePair.value.rotation = Quaternion.Lerp(bonePair.value.rotation, bonePair.key.rotation, 0.1f);
- bonePair.value.rotation = bonePair.key.rotation;
- }
- }
- }
- [Serializable]
- public class TransformDic{
- public string name;
- public Transform key;
- public Transform value;
- public Vector3 offset;
- public TransformDic(){
- key = null;
- value=null;
- }
- public TransformDic(Transform _key, Transform _value){
- name = _key.name;
- key=_key;
- value=_value;
- offset=_value.position - _key.position;
- }
- }
|