add some extra assets FX and SFX
This commit is contained in:
@@ -85,6 +85,9 @@ public class ragdollBuilder : MonoBehaviour
|
||||
int direction;
|
||||
|
||||
|
||||
bool checkIfRagdollComponentsAlreadyAddedOnModelActive;
|
||||
|
||||
|
||||
public void getCharacterBonesFromEditor ()
|
||||
{
|
||||
getCharacterBones ();
|
||||
@@ -97,33 +100,69 @@ public class ragdollBuilder : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
public void setCharacterBones (Transform newHead,
|
||||
|
||||
Transform newRightElbow,
|
||||
Transform newLeftElbow,
|
||||
Transform newRightArm,
|
||||
Transform newLeftArm,
|
||||
|
||||
Transform newMiddleSpine,
|
||||
Transform newPelvis,
|
||||
|
||||
Transform newRightHips,
|
||||
Transform newLeftHips,
|
||||
Transform newRightKnee,
|
||||
Transform newLeftKnee)
|
||||
{
|
||||
|
||||
head = newHead;
|
||||
|
||||
rightElbow = newRightElbow;
|
||||
leftElbow = newLeftElbow;
|
||||
rightArm = newRightArm;
|
||||
leftArm = newLeftArm;
|
||||
|
||||
middleSpine = newMiddleSpine;
|
||||
pelvis = newPelvis;
|
||||
|
||||
rightHips = newRightHips;
|
||||
leftHips = newLeftHips;
|
||||
rightKnee = newRightKnee;
|
||||
leftKnee = newLeftKnee;
|
||||
}
|
||||
|
||||
bool ignoreStoreBonesByGetBoneTransformActive;
|
||||
|
||||
public void getCharacterBones ()
|
||||
{
|
||||
if (animator != null) {
|
||||
|
||||
bonesTransforms.Clear ();
|
||||
|
||||
pelvis = animator.GetBoneTransform (HumanBodyBones.Hips);
|
||||
if (!ignoreStoreBonesByGetBoneTransformActive) {
|
||||
pelvis = animator.GetBoneTransform (HumanBodyBones.Hips);
|
||||
|
||||
leftHips = animator.GetBoneTransform (HumanBodyBones.LeftUpperLeg);
|
||||
leftHips = animator.GetBoneTransform (HumanBodyBones.LeftUpperLeg);
|
||||
|
||||
leftKnee = animator.GetBoneTransform (HumanBodyBones.LeftLowerLeg);
|
||||
leftKnee = animator.GetBoneTransform (HumanBodyBones.LeftLowerLeg);
|
||||
|
||||
rightHips = animator.GetBoneTransform (HumanBodyBones.RightUpperLeg);
|
||||
rightHips = animator.GetBoneTransform (HumanBodyBones.RightUpperLeg);
|
||||
|
||||
rightKnee = animator.GetBoneTransform (HumanBodyBones.RightLowerLeg);
|
||||
rightKnee = animator.GetBoneTransform (HumanBodyBones.RightLowerLeg);
|
||||
|
||||
leftArm = animator.GetBoneTransform (HumanBodyBones.LeftUpperArm);
|
||||
leftArm = animator.GetBoneTransform (HumanBodyBones.LeftUpperArm);
|
||||
|
||||
leftElbow = animator.GetBoneTransform (HumanBodyBones.LeftLowerArm);
|
||||
leftElbow = animator.GetBoneTransform (HumanBodyBones.LeftLowerArm);
|
||||
|
||||
rightArm = animator.GetBoneTransform (HumanBodyBones.RightUpperArm);
|
||||
rightArm = animator.GetBoneTransform (HumanBodyBones.RightUpperArm);
|
||||
|
||||
rightElbow = animator.GetBoneTransform (HumanBodyBones.RightLowerArm);
|
||||
rightElbow = animator.GetBoneTransform (HumanBodyBones.RightLowerArm);
|
||||
|
||||
middleSpine = animator.GetBoneTransform (HumanBodyBones.Chest);
|
||||
middleSpine = animator.GetBoneTransform (HumanBodyBones.Chest);
|
||||
|
||||
head = animator.GetBoneTransform (HumanBodyBones.Head);
|
||||
head = animator.GetBoneTransform (HumanBodyBones.Head);
|
||||
}
|
||||
|
||||
//add every bone to a list
|
||||
addBonesTransforms ();
|
||||
@@ -277,7 +316,9 @@ public class ragdollBuilder : MonoBehaviour
|
||||
|
||||
GKC_Utils.updateComponent (mainRagdollActivator);
|
||||
|
||||
print ("Ragdoll Activator components assigned and updated");
|
||||
if (!Application.isPlaying) {
|
||||
print ("Ragdoll Activator components assigned and updated");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -330,7 +371,23 @@ public class ragdollBuilder : MonoBehaviour
|
||||
{
|
||||
Vector3 center = Vector3.zero;
|
||||
|
||||
removeRagdoll ();
|
||||
bool ignoreAddRagdollComponentsResult = false;
|
||||
|
||||
if (checkIfRagdollComponentsAlreadyAddedOnModelActive) {
|
||||
//check if the model has ragdoll elements on it already
|
||||
|
||||
if (pelvis != null) {
|
||||
if (pelvis.gameObject.GetComponent<BoxCollider> () != null) {
|
||||
ignoreAddRagdollComponentsResult = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//print ("ignoreAddRagdollComponentsResult " + ignoreAddRagdollComponentsResult);
|
||||
|
||||
if (!ignoreAddRagdollComponentsResult) {
|
||||
removeRagdoll ();
|
||||
}
|
||||
|
||||
for (int i = 0; i < bones.Count; i++) {
|
||||
//create capsule colliders
|
||||
@@ -376,7 +433,13 @@ public class ragdollBuilder : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
CapsuleCollider collider = bones [i].boneTransform.gameObject.AddComponent<CapsuleCollider> ();
|
||||
CapsuleCollider collider = null;
|
||||
|
||||
if (ignoreAddRagdollComponentsResult) {
|
||||
collider = bones [i].boneTransform.gameObject.GetComponent<CapsuleCollider> ();
|
||||
} else {
|
||||
collider = bones [i].boneTransform.gameObject.AddComponent<CapsuleCollider> ();
|
||||
}
|
||||
|
||||
collider.direction = direction;
|
||||
center = Vector3.zero;
|
||||
@@ -387,18 +450,31 @@ public class ragdollBuilder : MonoBehaviour
|
||||
}
|
||||
|
||||
//add rigidbodies
|
||||
bones [i].boneRigidbody = bones [i].boneTransform.gameObject.AddComponent<Rigidbody> ();
|
||||
if (ignoreAddRagdollComponentsResult) {
|
||||
bones [i].boneRigidbody = bones [i].boneTransform.gameObject.GetComponent<Rigidbody> ();
|
||||
} else {
|
||||
bones [i].boneRigidbody = bones [i].boneTransform.gameObject.AddComponent<Rigidbody> ();
|
||||
}
|
||||
|
||||
bones [i].boneRigidbody.mass = bones [i].mass;
|
||||
|
||||
//build joints
|
||||
if (bones [i].parent != null) {
|
||||
CharacterJoint joint = bones [i].boneTransform.gameObject.AddComponent<CharacterJoint> ();
|
||||
CharacterJoint joint = null;
|
||||
|
||||
if (ignoreAddRagdollComponentsResult) {
|
||||
joint = bones [i].boneTransform.gameObject.GetComponent<CharacterJoint> ();
|
||||
} else {
|
||||
joint = bones [i].boneTransform.gameObject.AddComponent<CharacterJoint> ();
|
||||
}
|
||||
|
||||
bones [i].joint = joint;
|
||||
|
||||
//configure joint connections
|
||||
joint.axis = getDirectionAxis (bones [i].boneTransform.InverseTransformDirection (bones [i].axis));
|
||||
joint.swingAxis = getDirectionAxis (bones [i].boneTransform.InverseTransformDirection (bones [i].swingAxis));
|
||||
joint.anchor = Vector3.zero;
|
||||
|
||||
joint.connectedBody = bones [i].parent.boneTransform.GetComponent<Rigidbody> ();
|
||||
|
||||
//configure jount limits
|
||||
@@ -417,20 +493,40 @@ public class ragdollBuilder : MonoBehaviour
|
||||
|
||||
//add box colliders to the hips and spine
|
||||
Bounds boxColliderInfo;
|
||||
BoxCollider boxCollider;
|
||||
BoxCollider boxCollider = null;
|
||||
|
||||
boxColliderInfo = adjustColliderScale (getColliderSize (pelvis), pelvis, middleSpine, false);
|
||||
boxCollider = pelvis.gameObject.AddComponent<BoxCollider> ();
|
||||
|
||||
if (ignoreAddRagdollComponentsResult) {
|
||||
boxCollider = pelvis.gameObject.GetComponent<BoxCollider> ();
|
||||
} else {
|
||||
boxCollider = pelvis.gameObject.AddComponent<BoxCollider> ();
|
||||
}
|
||||
|
||||
boxCollider.center = boxColliderInfo.center;
|
||||
boxCollider.size = boxColliderInfo.size * spineScale;
|
||||
|
||||
boxColliderInfo = adjustColliderScale (getColliderSize (middleSpine), middleSpine, middleSpine, true);
|
||||
boxCollider = middleSpine.gameObject.AddComponent<BoxCollider> ();
|
||||
|
||||
if (ignoreAddRagdollComponentsResult) {
|
||||
boxCollider = middleSpine.gameObject.GetComponent<BoxCollider> ();
|
||||
} else {
|
||||
boxCollider = middleSpine.gameObject.AddComponent<BoxCollider> ();
|
||||
}
|
||||
|
||||
boxCollider.center = boxColliderInfo.center;
|
||||
boxCollider.size = boxColliderInfo.size * spineScale;
|
||||
|
||||
//add head collider
|
||||
float radius = (GKC_Utils.distance (rightArm.transform.position, leftArm.transform.position)) / 4;
|
||||
SphereCollider sphere = head.gameObject.AddComponent<SphereCollider> ();
|
||||
SphereCollider sphere = null;
|
||||
|
||||
if (ignoreAddRagdollComponentsResult) {
|
||||
sphere = head.gameObject.GetComponent<SphereCollider> ();
|
||||
} else {
|
||||
sphere = head.gameObject.AddComponent<SphereCollider> ();
|
||||
}
|
||||
|
||||
sphere.radius = radius;
|
||||
center = Vector3.zero;
|
||||
|
||||
@@ -638,6 +734,16 @@ public class ragdollBuilder : MonoBehaviour
|
||||
return direction;
|
||||
}
|
||||
|
||||
public void setCheckIfRagdollComponentsAlreadyAddedOnModelActiveState (bool state)
|
||||
{
|
||||
checkIfRagdollComponentsAlreadyAddedOnModelActive = state;
|
||||
}
|
||||
|
||||
public void setIgnoreStoreBonesByGetBoneTransformActiveState (bool state)
|
||||
{
|
||||
ignoreStoreBonesByGetBoneTransformActive = state;
|
||||
}
|
||||
|
||||
public void getAnimator (Animator anim)
|
||||
{
|
||||
animator = anim;
|
||||
@@ -651,6 +757,8 @@ public class ragdollBuilder : MonoBehaviour
|
||||
void updateComponent ()
|
||||
{
|
||||
GKC_Utils.updateComponent (this);
|
||||
|
||||
GKC_Utils.updateDirtyScene ("Update Ragdoll Builder", gameObject);
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
|
||||
Reference in New Issue
Block a user