public override void OnEnter() { var go = Fsm.GetOwnerDefaultTarget(gameObject); theScript = go.GetComponent <BodyColliderScript>(); if (!everyFrame.Value) { MakeItSo(); Finish(); } }
void MakeItSo() { var go = Fsm.GetOwnerDefaultTarget(gameObject); if (go == null) { return; } BodyColliderScript bcs = go.GetComponent <BodyColliderScript>(); int[] parts = new int[] { bcs.index }; bcs.ParentRagdollManager.startHitReaction(parts, vector3Hit.Value * floatForce.Value); }
public override void DoParticleCollision(GameObject other) { if (collision == CollisionType.OnParticleCollision) { if (hitTimer > hitInterval.Value) { BodyColliderScript bcs = other.GetComponent <Collider>().GetComponent <BodyColliderScript>(); if (bcs && rb) { var mass = rb.mass * massMultiplier.Value; int[] indices = new int[] { bcs.index }; bcs.ParentRagdollManager.startHitReaction(indices, rb.velocity * mass); } hitTimer = 0.0f; Fsm.Event(hit); storeForce.Value = 0; storeCollider.Value = other; } } }
public override void DoCollisionStay(Collision collisionInfo) { if (collision == CollisionType.OnCollisionStay) { StoreCollisionInfo(collisionInfo); if (hitTimer > hitInterval.Value) { BodyColliderScript bcs = collisionInfo.collider.GetComponent <BodyColliderScript>(); if (bcs && rb) { var mass = rb.mass * massMultiplier.Value; int[] indices = new int[] { bcs.index }; bcs.ParentRagdollManager.startHitReaction(indices, rb.velocity * mass); } hitTimer = 0.0f; Fsm.Event(hit); } } }