Skip to content

Instantly share code, notes, and snippets.

@sansuke05
Forked from halby24/DBController.cs
Created August 29, 2018 09:07
Show Gist options
  • Save sansuke05/9df30b8ab9e4e2eefee6dd14471461b8 to your computer and use it in GitHub Desktop.
Save sansuke05/9df30b8ab9e4e2eefee6dd14471461b8 to your computer and use it in GitHub Desktop.
ダイナミックボーン 一括制御するやつ
using System.Linq;
using UnityEngine;
public class DBController : MonoBehaviour
{
public Transform[] Bones;
[Range(0f, 1f)] public float Damping, Elasticity, Stiffness, Inert;
public float Radius;
public AnimationCurve DanpingDistrib, ElasticityDistrib, StiffnessDistrib, InertDistrib, RadiusDistrib;
// Use this for initialization
void Reset()
{
var db = GetComponent<DynamicBone>();
if (!db) return;
Damping = db.m_Damping;
Elasticity = db.m_Elasticity;
Stiffness = db.m_Stiffness;
Inert = db.m_Inert;
Radius = db.m_Radius;
DanpingDistrib = db.m_DampingDistrib;
ElasticityDistrib = db.m_ElasticityDistrib;
StiffnessDistrib = db.m_StiffnessDistrib;
InertDistrib = db.m_InertDistrib;
RadiusDistrib = db.m_RadiusDistrib;
}
void OnValidate() {
var dbs = GetComponents<DynamicBone>();
// アタッチされていないボーンがあれば追加
var attachedBones = dbs.Select(db => db.m_Root);
var unAttachedBones = Bones.Except(attachedBones).ToArray();
foreach (var bone in unAttachedBones)
{
if (bone == null) break;
var db = gameObject.AddComponent<DynamicBone>();
db.m_Root = bone;
db.m_DistantDisable = true;
}
// 追加した場合コンポーネントをリロード
if (unAttachedBones.Length > 0)
{
dbs = GetComponents<DynamicBone>();
}
foreach (var dynamicBone in dbs)
{
dynamicBone.m_Damping = Damping;
dynamicBone.m_Elasticity = Elasticity;
dynamicBone.m_Stiffness = Stiffness;
dynamicBone.m_Inert = Inert;
dynamicBone.m_Radius = Radius;
dynamicBone.m_DampingDistrib = DanpingDistrib;
dynamicBone.m_ElasticityDistrib = ElasticityDistrib;
dynamicBone.m_StiffnessDistrib = StiffnessDistrib;
dynamicBone.m_InertDistrib = InertDistrib;
dynamicBone.m_RadiusDistrib = RadiusDistrib;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment