The problem is I have 100 monsters or so and I dynamically instantiate the spine animation under a graphics child of "Monster" instead of making a prefab for every single one and a child with the bounding box.
//bounding box collider owner
GameObject go = new GameObject("SpineHitBox");
go.transform.SetParent(animGo.transform, false);
go.AddComponent<SpineAttackBox>();
BoundingBoxFollower bbf = go.AddComponent<BoundingBoxFollower>();
bbf.slotName = "WeaponHitBox";
BoneFollower bf = go.AddComponent<BoneFollower>();
bf.boneName = "weapon";
go.layer = LayerMask.NameToLayer("Skill");
GameObject go = new GameObject("SpineHitBox");
go.transform.SetParent(animGo.transform, false);
go.AddComponent<SpineAttackBox>();
BoundingBoxFollower bbf = go.AddComponent<BoundingBoxFollower>();
bbf.slotName = "WeaponHitBox";
BoneFollower bf = go.AddComponent<BoneFollower>();
bf.boneName = "weapon";
go.layer = LayerMask.NameToLayer("Skill");
-- 19 Sep 2015, 10:43 --
Figured it out
public class SpineAttackBox : MonoBehaviour {
private BoundingBoxFollower boundingFollower;
private BoneFollower boneFollower;
void Awake()
{
boundingFollower = gameObject.AddComponent<BoundingBoxFollower>();
boundingFollower.skeletonRenderer = SkeletonUtility.GetInParent<SkeletonRenderer>(transform);
boundingFollower.slotName = "WeaponHitBox";
boneFollower = gameObject.AddComponent<BoneFollower>();
boneFollower.skeletonRenderer = SkeletonUtility.GetInParent<SkeletonRenderer>(transform);
boneFollower.boneName = "weapon";
boneFollower.DoUpdate();
boneFollower.skeletonRenderer.Reset();
}
}
private BoundingBoxFollower boundingFollower;
private BoneFollower boneFollower;
void Awake()
{
boundingFollower = gameObject.AddComponent<BoundingBoxFollower>();
boundingFollower.skeletonRenderer = SkeletonUtility.GetInParent<SkeletonRenderer>(transform);
boundingFollower.slotName = "WeaponHitBox";
boneFollower = gameObject.AddComponent<BoneFollower>();
boneFollower.skeletonRenderer = SkeletonUtility.GetInParent<SkeletonRenderer>(transform);
boneFollower.boneName = "weapon";
boneFollower.DoUpdate();
boneFollower.skeletonRenderer.Reset();
}
}